回测
回测有点像时间机器游戏。先定一条规则 — “满足这个条件就买、变成那样就卖” — 然后回到历史图表上,假设自己像机器一样严格按规则交易,把结果全部加总。因为靠的是数据而不是感觉和记忆,可以避开“那时候买了就赚了”这种选择性记忆的陷阱。
比如回测“RSI跌破30就买入、24小时后卖出”这条规则。过去2年的1小时K线里这个信号出现了500次,其中260次在24小时后价格是涨的,那胜率就是52%。抛硬币是50%,所以这条规则也就比抛硬币好一点点 — 回测让你知道的就是这件事。
光看胜率还不行。对的时候赚多少、错的时候亏多少必须一起算。胜率52%,但赢一次赚1%、输一次亏2%的规则,账户是会缩水的。再把每次都要交的手续费扣掉,薄薄的优势常常整个消失。
回测出问题的常见原因有三个。第一,未来信息泄漏 — 偷用了当时不可能知道的信息(比如当天收盘价确定之前的值),成绩会假性变好。第二,漏算手续费和成交 — 现实中手续费要交、想要的价格未必成交得了,漏掉这些会得到过于乐观的数字。第三,样本太少 — 如果信号历史上只出现过10次,70%的胜率也可能纯属偶然。
所以回测的诚实用法,不是拿来证明“这个规则能赚钱”,而是把没有根据的流行说法用数字验证一遍。听到“超卖就会反弹”之类的话,去看看实际数出来的历史分布长什么样。只要记住它是过去的记录、不是未来的预测,回测就是新手区分“传言”和“数据”的最好练习。
What the data actually shows
Barobara 的信号目录和 /odds 页面就是这些回测的结果。比特币图表上常用的信号在过去实际出现了多少次、之后上涨的比例是多少,全部原样公开 — 先说结论,大多数信号之后的涨跌几乎是五五开。比如看RSI超卖(1小时线)结果,就能确认“超卖所以会反弹”这个说法和真实数字差多远。手续费会把结果啃掉多少,见手续费页面。Common misconceptions
“回测胜率高就能赚钱”是常见误解。胜率只数对了几次,不管对的时候赚多少、错的时候亏多少。胜率90%的规则,十次里有一次亏个大的,账户照样可以是负的。
“过去有效,以后也有效”也是危险的想法。市场风格一变,过去很灵的规则失灵是常有的事。回测是过去的记录,不是保证。
FAQ
Q. 回测必须会写代码才能做吗?
自己动手做需要编程,但从看现成的结果开始就足够了。可以先读 Barobara 的 /odds 页面这类公开各信号历史结果的资料;自己做的时候,特别注意计入手续费和保证足够的样本数。
Q. 回测胜率52%算好吗?
和抛硬币(50%)没差多少,而且这点优势扣掉手续费就可能消失。样本数少的话,那2个百分点本身也可能是偶然。别只看胜率,要把样本数、盈亏大小、手续费放在一起看。