Skip to content

2008 年股灾无上帝视角回放:机械加仓规则第一次验证 ​

1. 这次实验到底想验证什么 ​

在设计“深度回撤修复”方案时,我最初有一个很自然的想法:

市场从高位下跌得越多,价格就越便宜;
当跌幅足够深以后,可以建立一个 Start,再按照固定的回撤档位逐步加仓。

最初的规则非常简单:

  • 找到一个足够深的位置建立 Start;
  • Start 只建立很小的初始仓位;
  • 相对 Start 再下跌 10%,加仓;
  • 再下跌 20%,继续加仓;
  • 再下跌 30%,继续加仓。

但这套规则到底有没有问题?

如果直接打开2008年的完整K线,再回头设计规则,其实很容易受到后来结果的影响。

所以这次实验的目的,并不是寻找2008年的最佳买点,也不是证明自己的策略正确。

恰恰相反:

我要主动寻找能够使这套规则失效的历史路径。

一个策略没有被几个历史样本打败,并不能证明它正确;

但如果一个规则被真实路径明确击穿,至少可以说明:

它不应该原样继续使用。

因此,这次实验真正想做的,是不断排除那些经不起真实路径检验的规则。

2. 如何尽量降低上帝视角 ​

2.1 为什么不自己打开完整历史K线 ​

这次实验并不是我自己打开2008年的完整历史K线,然后从左向右寻找“看起来值得买”的位置。

这样做有一个明显问题:

当完整历史走势已经摆在眼前时,哪怕刻意不看后面的具体数字,也很难完全摆脱后来结果的影响。

甚至还有一个更隐蔽的问题:

“我为什么偏偏在这个位置停下来思考”,本身就可能已经包含未来信息。

例如,如果我自己翻K线,在某个暴跌位置停下来问:

“这里是不是可以买了?”

那么我为什么会选这里?

很可能就是因为我已经看见这里“跌得特别惨”。

这本身也是一种信息泄漏。

2.2 由AI推进历史,我负责回答 ​

因此,这次实验采用了另一种方式:

由AI负责推进历史时间和披露信息,我负责作出决定。

具体过程是:

  1. AI把时间停在某一个历史节点;
  2. 只提供截至当时已经能够知道的信息;
  3. 不告诉我后面还会跌多少;
  4. 不告诉我后面的最低位置;
  5. AI主动向我提出问题;
  6. 我根据当时的信息回答“买还是不买”,并说明理由;
  7. 一旦决定作出,就冻结;
  8. AI再继续推进历史。

例如:

“现在上证已经从6124跌到4560附近,回撤约25%,你会不会开始买?”

我必须在不知道下一段行情的情况下回答。

这样至少可以降低一个很重要的问题:

我本人不会因为提前看见后续K线,而主动挑选一个事后看来特别关键的位置进行判断。

2.3 这种方法仍然不是严格盲测 ​

这里需要明确承认一个局限:

AI本身知道完整历史。

因此,AI选择在哪些日期暂停、哪些事件值得提出,本身仍然可能携带事后信息。

例如,雷曼破产、汇金增持、市场大跌等事件,在后来回顾2008年时,本来就是非常显眼的历史节点。

所以,这次实验不能被理解成严格意义上的双盲测试。

更准确地说,它做到的是:

尽量隔离“我的决策”和“后续行情结果”,而不是完全隔离整个实验设计与历史结果。

因此,本文所谓“无上帝视角”,主要指:

我在作出具体买卖判断时,不使用尚未发生的价格和事件。

而不是声称:

节点设置本身完全不存在后视偏差。

这一区别很重要。

因为本实验真正想验证的,也不是某个买点是否具有严格统计意义,而是:

在一个被冻结的信息节点上,我为什么买、为什么不买,以及现有规则是否会产生明显不合理的结果。

2.4 一个历史样本原则上只有一次正式机会 ​

这也带来一条重要的实验纪律:

一场历史危机原则上只能进行一次正式的无上帝视角决策实验。

一旦完整路径已经看过,这段历史就不再属于未知样本。

以后当然仍然可以使用2008年的数据:

  • 计算指标;
  • 分析参数;
  • 测试新规则;
  • 做程序化回测。

但不能再声称:

“如果我是2008年的自己,我会怎么选择。”

因为答案已经知道了。

因此,2008完成这次实验以后,就从“未知测试样本”变成“历史研究样本”。

3. 实验条件 ​

为了避免资金和工具本身干扰判断,这次实验把条件尽量简化。

初始资金:50万元自有资金。

观察对象:

  • 上证综指;
  • 沪深300。

实际交易简化为:沪深300ETF或等价跟踪工具。

不使用:

  • 融资;
  • 期货;
  • 期权。

初始机械规则:

建立 Start 后,相对 Start 下跌 -10%、-20%、-30%……逐级加仓。

本轮首先验证的是:

什么时候开始,以及机械价格档位本身是否合理。

至于每一档具体应该投入多少资金,本轮暂不解决。

4. 第一次无上帝视角回放 ​

4.1 2007年10月:6124点 ​

2007年10月16日,上证综指盘中达到6124.04点。上交所历史数据也显示,2007年这一高点显著高于此前多年市场运行区间。

如果把时间往前看,这个位置非常特殊。

2001年的上一轮重要高点约2245点,2005年市场还曾经运行在1000点附近。

所以站在6124附近,我没有任何买入意愿。

即使当时美国次贷问题已经开始暴露,也不足以改变我的判断。

我的理由很简单:价格太高。

这里甚至还没有必要讨论“跌多少可以买”。

我的决定:不买。

4.2 2008年1月:4560附近,已经跌了约25% ​

继续向后推进。

2008年1月,上证来到4560附近。

如果只计算从6124以来的回撤:

45606124−1≈−25.5%

跌幅已经不小。

这时候AI向我提出的问题是:已经从最高点跌了约25%,现在要不要开始买?

如果只使用“从最高点跌了多少”这一套逻辑,-25%已经很容易让人产生买入冲动。

但我的答案仍然是:不买。

理由不是“25%还不够多。”而是: 4560本身仍然太高。

因为放回A股自身历史价格空间,4560仍显著高于2001年高点和2005年前后的运行区间。

所以虽然6124跌到4560已经损失了四分之一,但:从一个异常高的位置跌25%,并不能自动构成深度机会。

这时候第一次暴露出了原始想法里的一个问题:

从高点跌得很多≠当前价格已经很低

我的决定:继续等待。

4.3 2008年4月:3000附近,已经接近腰斩 ​

继续向后。

到2008年4月,上证已经来到3000附近。

相对6124:

30006124−1≈−51%

这已经完全不同于4560。

到了这里,我已经不能再简单地说:“价格还是太高。”

因为3000附近已经开始进入我真正愿意认真观察的区域。

与此同时,海外金融系统的问题也在继续扩大。

但这一次,我仍然没有建立Start。

原因已经和4560时不同。

在4560时,我的判断是:价格本身仍然明显偏高。

而到了3000附近,我的判断变成:

价格已经开始有吸引力,但危机状态还没有发展到足以让我开始承担风险的程度。

也就是说,到这里我第一次开始感觉到:

单纯的价格空间可能还不够。

除了“跌了多少”,我还想知道:

  • 金融系统到底出了什么问题?
  • 有没有越来越多的人不是“想卖”,而是“必须卖”?
  • 危机有没有真正向更广范围传导?
  • 政策方向有没有发生变化?

我的决定:继续等待,不建立Start。

这一步很重要。

因为4560和3000虽然都是“不买”,但理由已经完全不同。

4.4 2008年9月:1802附近 ​

到了2008年9月,环境发生了根本变化。

房利美、房地美进入政府接管,雷曼兄弟破产,AIG危机爆发。

问题已经不再只是:

“美国房地产好像出了点问题。”

而是金融系统本身开始承受巨大压力。

与此同时,上证继续向下。

9月18日前后,上证盘中来到1800附近。

相对6124:

18026124−1≈−70.6%

这一次,我的答案发生变化。

价格空间已经足够深;

金融危机本身也已经从风险逐步演变成真正的系统性事件。

我并不知道1800是不是最低位置。

实际上,这次实验也不需要知道。

我只需要回答:到了这里,我是否愿意开始承担第一笔风险?

我的答案是:愿意。

我的决定:建立Start,先买100股。

这里特意只买100股。

Start并不代表:“这里就是底。”

它真正代表的是:从这里开始,我认为机会已经值得投入真实资金,同时启动后续机械加仓规则。

5. Start之后,机械规则正式启动 ​

以1802附近作为Start以后,原始规则开始运行:

相对Start跌幅操作
Start买入100股
-10%第一次加仓
-20%第二次加仓
-30%第三次加仓

第一档价格大约是:

1802×(1−10%)≈1622

所以规则变得非常明确:不到约1622,不进行第一次机械加仓。

5.1 9月19日:政策开始发生明显变化 ​

从2008年9月19日起,证券交易印花税由双边征收调整为卖方单边征收。

与此同时,中央汇金表示将通过二级市场购入工行、中行、建行股票,国资体系也释放了支持央企增持和回购的信息。

这些事情显然很重要。

但按照第一次实验的规则:政策变化本身不直接触发加仓。

所以:我的决定:不操作。

5.2 9月23日:从“准备买”变成“已经买了” ​

随后出现了一条后来对整个规则演化非常重要的信息。

公开公告确认,中央汇金通过上海证券交易所交易系统实际增持了工行、中行、建行。

以中国银行为例,公告显示,汇金于9月23日通过交易系统增持200万股,并计划在未来12个月继续在二级市场增持。

这让我第一次开始区分两件以前很容易混在一起的事情:宣布准备买。 和 公开确认已经实际买入。

它们不是同一种信息。

降息、降准改变的是资金环境;

财政刺激影响的是未来需求;

而国家资本直接通过二级市场成交,则意味着:真实资金已经直接变成股票需求。

这是一个很有价值的新变量。

但这里有一个实验纪律:不能因为刚刚发现了一个新变量,就在实验中途修改原规则。

所以即使我认为这个信息很重要,当时的机械规则仍然保持:

−10%→−20%→−30%

我的决定:记录这个现象,但不加仓。

6. 10月:危机越来越严重,规则却仍然没有动作 ​

进入10月以后,坏消息并没有结束。

全球金融市场继续剧烈动荡,中国也继续采取货币和经济支持措施。

与此同时,危机开始越来越明显地向国内实体经济传导。

这时候我又发现了一个问题:

实体经济最差的信息,往往比金融市场价格变化来得更晚。

如果一定要等到:

  • GDP已经明显下降;
  • PMI已经很差;
  • 大量企业已经倒闭;
  • 就业压力已经充分暴露;

然后才承认危机已经发生,

那么市场价格可能已经提前运行很长一段距离。

因此,实体经济数据当然重要,但它可能更适合回答:

“危机正在发展到什么阶段?”

而不是单独回答:

“今天是不是可以买?”

6.1 10月28日:1665附近 ​

10月28日,上证盘中来到约1665点。

在当时的决策中,我们只关心:

它距离Start有多远?

16651802−1≈−7.6%

而第一档机械加仓要求:

−10%

也就是约1622点。

结果:

1665>1622

没有触发。

这时候其实非常有意思。

从Start建立以来已经发生了很多事情:

  • 全球金融危机继续恶化;
  • 国家资本已经实际进入二级市场;
  • 政策持续转向;
  • 实体经济压力开始显现;
  • 市场又继续下跌了一段。

但是机械系统只看到了一个数字:

−7.6%>−10%

所以它给出的答案仍然是:

什么都不做。

我的决定:不加仓。

持仓仍然只有最初的100股。

7. 第一次实验的最终结果 ​

之后政策继续加码。

但在这次历史路径中,市场没有给出Start之后的-10%价格空间。

于是这次实验最终留下了一个非常简单,甚至有点尴尬的结果:

项目结果
初始资金500,000元
Start上证约1802
初始买入100股
-10%未触发
-20%未触发
-30%未触发
最终结果整个危机只建立100股仓位

这显然不是最初设计这套规则时希望得到的结果。

但我反而认为:

这正是这次实验最有价值的地方。

因为如果目标只是让2008年的结果看起来漂亮,那么现在最容易做的事情就是修改规则:

既然后面只跌了7%左右,那把第一档改成7%好了。

这样回测马上就会“成功”。

但这没有意义。

因为这个答案来自已经知道的历史路径。

它不是规则事先推导出来的,而是历史答案反过来塑造了规则。

所以这次实验必须接受:

原始规则在2008年的真实测试结果,就是只买了100股。

8. 2008到底暴露了哪些问题 ​

8.1 回撤比例不能脱离历史价格空间 ​

6124跌到4560已经超过25%。

但4560放回A股自己的历史里,仍然处于很高的位置。

因此:

回撤很深≠价格已经很低

这说明简单使用:

Drawdown=CurrentHigh−1

是不够的。

历史高点本身可能就是一个异常值。

8.2 Start和后续加仓规则不能完全割裂 ​

真正愿意建立Start的时候,上证已经从6124跌到了1802附近。

也就是说:

在第一笔资金投入以前,市场已经下跌约70%。

但建立Start以后,机械规则像完全忘记了前面的70%,重新要求:

再跌10%,才能买第二笔。

结果市场后续并没有提供这10%的空间。

于是50万元资金几乎没有得到部署。

这暴露出了一个非常明显的问题:

Start越深,后续加仓间距越不能与Start位置完全无关

否则就可能出现一种很奇怪的结果:

前面为了避免买早,一直耐心等待;

真正等到足够深以后,却又因为后续条件太远而几乎什么都没有买。

8.3 10%一级可能过于粗糙 ​

从1802到1665只有约7.6%。

从数字上看:

没达到10%。

但在这段价格空间里,市场环境已经发生了大量变化。

如果一个系统面对这么多变化,最终只因为:

7.6%<10%

就认为:“什么都没有发生。”

那么至少说明:10%一级的价格分辨率可能太低。

但这里还不能直接得出:“所以应该改成5%。”

因为那仍然可能是在根据2008的历史结果拟合参数。

第一次实验能够确认的只有:10%存在过粗的问题。

具体应该是多少,需要交给新的样本继续验证。

8.4 价格之外,还有一个“被迫卖出状态” ​

这次回放过程中,我越来越在意另一个问题:还有谁没有卖完?

市场真正危险的地方可能不是“跌了多少”,而是:

价格下跌→杠杆与机构承受压力→被迫出售→价格继续下降→更多账户触发风险限制→继续被迫出售

如果这个反馈链还在运行,那么:价格已经便宜,不代表抛售已经结束。

所以以后除了价格,我还需要观察:

谁必须卖?

为什么必须卖?

还有多少可能要卖?

什么条件出现以后,他们不再需要继续卖?

这成为后续规则演化的一个重要方向。

8.5 “有政策”这个说法太粗 ​

2008还有一个很重要的收获:

政策不能全部放进同一个篮子。

至少可以区分:

宏观环境政策

例如降息、降准、财政刺激。

市场制度措施

例如印花税调整。

国家资本表达意愿

例如宣布准备增持。

国家资本实际成交

例如2008年9月公开确认汇金已经通过交易所实际增持三大银行。

最后一种意味着:

真实资金已经进入二级市场。

这比单纯的政策表态多了一层信息。

但是2008同时告诉我:

国家资本买入,也不等于市场已经不会继续跌。

所以它不能成为:

“底部确认信号。”

更合理的理解可能是:

它提高了建立Start的资格。

8.6 实体经济确认可能存在天然滞后 ​

如果等所有经济数据都证明:

“现在真的非常差了。”

那么市场价格可能已经提前运行很久。

所以以后观察:

  • PMI;
  • 新订单;
  • 工业增加值;
  • PPI/CPI;
  • 信贷;
  • 出口;
  • 企业经营;

当然仍然有价值。

但这些数据更适合帮助判断:

危机状态正在怎么变化。

而不能简单变成:

“某个指标低于多少就买股票。”

9. 本轮实验确认了什么,又没有回答什么 ​

这次实验暴露了几个比较明确的问题:

  • 单纯依赖历史高点回撤存在明显缺陷;
  • Start与后续固定10%加仓间距可能不匹配;
  • 价格之外还需要观察危机和被迫卖出状态;
  • 不同类型的政策信息不能简单等价处理;
  • 国家资本实际成交比单纯表态包含更多市场信息。

但这次实验没有回答:

  • 后续档位应该改成5%、7%还是其他数字;
  • 每一档具体应该买多少;
  • Start本身应该投入多少比例;
  • 国家资本实际买入应该对应多大的仓位;
  • 哪些经济指标应该直接参与交易规则;
  • 1802是否是一个“正确买点”;
  • 怎样定义一个完整的资金部署方案。

这些问题不能因为已经知道2008怎么走,就继续在2008里面寻找最优答案。

它们应该留给新的样本继续验证。

10. 第一次验证之后,只做有限修正 ​

2008实验结束以后,我不希望立刻设计一个复杂的新系统。

因为这样非常容易发生另一种错误:用2008已经知道的答案,把规则修成特别适合2008。

所以这次实验结束后,只允许自己做有限修正。

最重要的一条是:

Start不能再只由价格决定。

下一次实验开始考虑:

  • 当前价格空间;
  • 强制卖出状态;
  • 金融系统压力;
  • 政策是否发生方向变化;
  • 国家资本是否只是宣布介入;
  • 国家资本是否已经被公开确认实际成交。

其中我尤其关注:

公开确认的国家资本二级市场实际买入。

它可以成为在原计划价格区域之前,提前建立一个很小Start的重要依据。

但是:Start之后的-10%、-20%、-30%机械加仓暂时不修改。

因为2008只证明了它存在问题。

我还需要把这个问题交给另一个完全不同的历史样本。

11. 这次实验真正验证成功的是什么 ​

回头看2008,最容易产生一种误解:

“1802附近开始买,看起来位置不错,所以策略验证成功了。”

我并不这么认为。

这次实验没有证明策略正确。

事实上,它反而证明了原始规则存在明显缺陷:

50万元资金,经历如此剧烈的一轮危机,最后竟然只买了100股。

如果目标是建立深度回撤仓位,这显然不能算一个满意的结果。

但这次实验验证了另外一件更重要的事情:

这种尽量隔离未来信息的历史回放方式,确实能够暴露仅靠静态回测和事后观察不容易发现的问题。

所以整个实验体系的目标也逐渐变得清晰:

不是证明自己的策略都是正确的,而是尽量排除那些不正确的策略。

规则是待测对象。

历史危机是测试用例。

每一次测试,都主动问:

还有什么情况能够把这套规则打坏?

如果打坏了,就记录失败方式。

然后只针对已经暴露的问题进行有限修正,再交给下一个未知历史样本。

所以这个过程不是:

找到规则
→ 证明规则正确
→ 开始使用

而更接近:

提出规则
→ 交给未知历史攻击
→ 发现失败方式
→ 排除明显错误
→ 有限修正
→ 再交给下一个未知样本攻击

一个策略即使通过了2008、2015、2018、2020,也不能因此证明它未来一定正确。

但是:每排除一种已经被真实历史证明存在问题的方案,我们至少少了一种未来可能犯的错误。

我认为,这才是这类历史实验真正有价值的地方。

12. 下一次验证 ​

经过2008以后,规则发生了第一次有限变化。

Start不再只看价格。

尤其是:

如果出现公开确认的国家资本实际二级市场买入,即使价格还没有到原来最理想的位置,也允许考虑用极小仓位建立Start。

但Start之后:

−10%→−20%→−30%

仍然保持原样。

接下来,把这套经过2008修正、但仍然保留大量原始结构的规则,交给另一场完全不同的市场危机:2015—2016年A股异常波动。

下一篇:2015—2016 年股灾无上帝视角回放:机械加仓规则第二次验证

这一次要继续问的仍然不是:“这套规则能不能证明自己正确?”

而是:“2015—2016,还能从哪里把它打坏?”