未夜量化体检

回测体检 · 多重检验 · 成本压力

你的回测,经得起体检吗?

核对成本、扣掉试验次数和运气之后,看看还剩多少。免费体检:上传的文件在服务器处理完即删除,不保留;收费功能的数据按授权码隔离存在服务器,可一键删除。

需要一份日收益 CSV(日期、收益率两列),或先用示例。

我们先体检了自己:四条策略线,没有一条越过 DSR ≥ 0.95 的多重检验门槛。

DSR 是扣掉「试了很多次、总有一次碰巧好看」的运气成分之后,策略的真实 Sharpe 仍大于 0 的概率;0.95 是我们设的门槛。术语表

回测缩水图 示意
  1. 原始 Sharpe
  2. 扣真实成本
  3. 扣试验次数
  4. 取置信区间下沿
  5. 剔除最好一年

每一步扣掉一种常见的高估来源;你的报告会写出每一级的真实数字和依据。

体检查五件事

  1. A

    数据与口径

    样本长度、百分数单位、极端值、重复日期与缺口、零收益天数。

  2. B

    收益质量

    年化收益与波动、Sharpe、Sortino、最大回撤、最长未创新高、尾部风险。

  3. C

    多重检验与运气

    PSR、Bootstrap 区间、按试验次数的 DSR、最短回测长度、Harvey-Liu 折扣
    PSR
    考虑了样本长度和收益分布之后,Sharpe 真的大于 0 的概率。
    Bootstrap 区间
    把日收益按一段一段随机重新拼接很多次,看 Sharpe 会在多大范围内晃动,给出 95% 区间。
    DSR
    在 PSR 的基础上,再扣掉「试了很多次、只留最好那次」的运气成分。
    最短回测长度
    试了这么多次之后,至少要有多少年的数据,纯靠运气才做不出现在这个 Sharpe。
    Harvey-Liu 折扣
    试验次数越多,Sharpe 要打的折扣越大;看折后还剩多少。
  4. D

    稳健性

    剔除最好的一年、剔除最好的几天、前后两半是否一致。

  5. E

    成本与执行

    逐日成本压力、成交级盈亏平衡滑点、手续费占毛利。

术语表:这些名词是什么意思
Sharpe
年化收益除以年化波动:每承受一份波动,换来多少收益。越高越好;单看它不能区分本事和运气。
最大回撤
从某个历史高点跌到之后最低点的最大跌幅,看最坏时账户亏过多少。
Bootstrap 区间
把日收益按一段一段随机重新拼接很多次,看 Sharpe 会在多大范围内晃动,用来给出 95% 区间;按段拼是为了保留连续几天涨跌的相关性。
换月
期货主力合约从近月换到下一个月份。换月前后价差会让连续合约出现假的跳空,没处理好会虚增或虚减收益。
前视(未来函数)
回测里用了当时还拿不到的信息,例如收盘才知道的信号按收盘价成交;会让回测好看得不真实。
「0.9 倍」
最差几天的平均亏损与最好几天的平均盈利之比:小于 1 说明大亏没有比大赚更狠,大于 1 说明亏起来比赚起来更猛。
DSR
扣掉「试了很多次、只留最好那次」的运气成分之后,真实 Sharpe 仍大于 0 的概率;报告里的门槛是 0.95。
PSR
考虑了样本长度和收益分布之后,Sharpe 真的大于 0 的概率。
Harvey-Liu 折扣
Harvey 与 Liu 提出的折扣法:试验次数越多,Sharpe 要打的折扣越大;看折后还剩多少。
Bonferroni
多重检验的最简单修正:试了 N 次,就把每次的 p 值乘以 N 再判断;试得越多门槛越高。报告里「扣完试验次数还剩多少 Sharpe」就是把放大后的 p 值换回 Sharpe。
Newey-West
估算 Sharpe 误差时的修正:日收益常有「连涨连跌」的相关性,直接算会把误差估小;Newey-West 把相关性算进去,得到更保守的误差。
MinBTL
最短回测长度:试了这么多次之后,至少要有多少年的数据,纯靠运气才做不出现在这个 Sharpe。
β(贝塔)
你的收益跟着基准(指数或朴素策略)涨跌的幅度:β 为 1 表示基准涨 1% 你大约也涨 1%;β 高说明收益有很大一部分只是跟着大盘走。
R²
基准能解释你收益波动的比例,0 到 1:越接近 1,你的收益越像是基准的影子;越接近 0,越是独立于基准。

放入回测文件

把 CSV 或 Excel(.xlsx)拖到这里,或点上面的「放入我的回测」。最简单的是两列:日期,加上日收益、权益(净值)或当日盈亏其中一列。

日期,收益率
2024-01-02,0.0035
2024-01-03,-0.0012

支持 UTF-8 与 GBK 编码;百分数请带 % 号。手续费占比和盈亏平衡滑点要用成交记录算:选好回测文件后,可以在「确认口径」那步再放入成交记录(可选);不放的话,「成本与执行」一项会如实标「无法判定」。

结算单权益带「出入金」列时会自动剔除资金进出,「手续费」列当作逐日成本。逐笔交易明细(每行一笔开平仓,要有「平仓时间」和盈亏列)按平仓日汇总,需要填初始资金,只算已实现盈亏。金字塔、QMT 的导出还没拿到样本核对,读不进来时请先另存为上面的两列格式。

授权(收费功能)

免费体检中 · 收费功能需授权码

免费体检不需要授权码。盯盘、历史报告保存、下载基准、自带基准、实盘记录模式报告需要授权码;日卡 9.9 元、月卡 249 元、年卡 1399 元,详见购买与授权页。

免责声明要点:不接账户、不下单、不荐股、不承诺收益;输出不是投资建议;投资风险自负。