资讯动态

如何识别量化策略过拟合:gs-quant 实战体检指南

发布时间:2026/9/13 13:29:24 来源:尧图企业网站定制
如何识别量化策略过拟合gs-quant 实战体检指南【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant回测曲线漂亮实盘却亏掉 20%——多数情况不是市场变了而是量化策略过拟合在作怪。gs-quant 是一个 Python 量化金融工具包其中的 timeseries 模块和 risk 模块提供了滚动风险度量、情景冲击等工具可以帮你完成策略样本外测试这类检查。下面用一个具体策略走一遍完整的过拟合识别流程。回测很漂亮为什么实盘就翻车去年你上线了一个动量策略回测夏普 3.5最大回撤 8%曲线平滑得像画出来的。实盘三个月回撤 20%。复盘时你会发现一个细节回测用的那段行情正是你反复调参的那段行情。策略并没有学会动量它只是把那段数据的噪声背了下来。这就像背答案的差生发卷前全对换一套题就崩。所以第一步不是加参数而是承认策略只对考过的那套题有效。过拟合长什么样屏幕上能看见的三个信号样本内和样本外差一大截同一段收益切前后两半算指标夏普从 3.0 掉到 0.8。差距越大说明策略赚的钱越多来自记住而不是学会。所以把样本外夏普设为硬门槛低于预期一半就回炉。参数一调就崩回看窗口 30 天时夏普 2.8改成 29 天掉到 1.1。真实有效的逻辑通常对参数不敏感敏感说明参数是碰出来的。所以调参时别只记录最优值记录一整片参数邻域的表现。换段数据就不灵在 2019–2021 上涨段成立放到 2022 震荡段直接亏损。单段行情无法区分真规律和那一段的巧合。所以任何策略上线前至少要在一个风格不同的市场阶段跑过样本外检验。gs-quant 的体检工具你怕什么就查什么怕参数是碰来的看参数敏感性把关键参数在邻域内扫一遍看指标是否平稳。指标随参数大幅起伏说明你找到的是噪声里的尖峰不是规律for lookback in [20, 30, 40, 50]: s run_strategy(lookback) print(lookback, sharpe_ratio(s.equity()))参数敏感性怎么算邻域内夏普的标准差若超过均值的一半就按参数过度优化处理。怕只看了一段行情用滚动窗口拆段sharpe_ratio和 max_drawdown 都接受窗口参数 w可以输出逐期滚动值一眼看出策略在哪些月份贡献收益、哪些月份在扛回撤from gs_quant.timeseries.econometrics import sharpe_ratio, max_drawdown print(sharpe_ratio(equity, w63).tail(), max_drawdown(equity, w63).tail())若滚动夏普长期贴近 0 且靠少数几个窗口撑高全期均值这个均值没有参考意义。怕数据本身有偏先做数据清洗收益序列里有尖峰、日期错位都会让回测虚高。statistics 模块里的 winsorize 可以压掉极端值analysis 模块的 diff、lag 帮你核对信号和成交之间有没有用到未来数据。涉及组合层面压力测试时risk 模块的 MarketDataShockBasedScenario 可以构造冲击情景。一条策略的完整体检流程从切数据到出结论以动量策略回看 30 天大市值股篮子每日调仓为例按顺序做五件事切数据按时间顺序 70% 训练、15% 验证、15% 测试测试段全程封存n len(equity) train, valid, test equity[:int(n*0.7)], equity[int(n*0.7):int(n*0.85)], equity[int(n*0.85):] print(sharpe_ratio(train), sharpe_ratio(valid), sharpe_ratio(test))只在训练段调参记录样本内夏普与对应的参数组合。样本外一次性检验用封存段跑一遍不再回头改参数改了就不算样本外了。滚动对比对训练段和封存段分别算滚动夏普与滚动回撤看收益来源是否集中在个别窗口。参数扰动回看窗口在 15–60 天范围内扫描输出指标分布。多资产策略还可以先把篮子按风格聚类成几段分别检验避免策略只在某一类资产上成立结论口径三段夏普单调衰减且测试段仍为正参数邻域指标平稳才算通过任何一条不满足回炉而不是上线。这些指标你可能看反了指标常见误读更可靠的判断口径夏普比率越高越好⚠️ 样本内超 3 更像危险信号以样本外夏普为门槛最大回撤越小越稳看滚动回撤在各时段的方差单点最小值会骗人参数尝试次数试得多显得专业尝试越多越可能碰中噪声把尝试记录留档可复查所以把样本外夏普 ≥ 样本内夏普的一半写成代码里的硬性断言而不是写在脑子里。 今天就能做把你最新策略的收益曲线按时间切成三段各算一次滚动夏普把三个数贴进团队群。工具获取git clone https://gitcode.com/GitHub_Trending/gs/gs-quant从 README 开始。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价