2026/2/19 11:37:47
网站建设
项目流程
什么网站可以做数据调查问卷,seo怎么发文章 seo发布工具,网站建设完提示文件取消分享,一个专门做网站建设的公司免责声明#xff1a;本文基于个人学习经验整理#xff0c;仅供技术交流参考#xff0c;不构成投资建议。 一、什么是过拟合#xff1f;
作为一名在期货量化领域深耕了二十年的老交易员#xff0c;我见过太多人栽在过拟合这个坑里。
所谓过拟合#xff08;O…免责声明本文基于个人学习经验整理仅供技术交流参考不构成投资建议。一、什么是过拟合作为一名在期货量化领域深耕了二十年的老交易员我见过太多人栽在过拟合这个坑里。所谓过拟合Overfitting简单说就是策略在历史数据上表现完美一到实盘就不行了。举个形象的比喻就像考试前把往年真题背得滚瓜烂熟但一遇到新题就傻眼。策略学会的是历史数据的噪声而不是市场的规律。这是量化交易中最常见、也最隐蔽的陷阱。二、过拟合的典型表现怎么判断自己的策略是不是过拟合了以下是一些常见信号1. 回测曲线过于完美如果你的策略回测年化收益80%、最大回撤3%、胜率90%……醒醒这大概率是过拟合了。真实市场中能做到年化20-30%、最大回撤10%以内的策略已经是很优秀的了。2. 参数敏感度过高比如你的策略在MA(23)的时候表现很好但换成MA(22)或MA(24)就大幅变差。这说明策略只是拟合了某个特定参数而不是捕捉到了真正的市场规律。3. 样本内外表现差异大用2020-2024年数据优化参数回测结果很好。但用2025年数据验证时表现大幅下滑。这是过拟合的典型特征。4. 策略逻辑过于复杂条件太多、参数太多的策略更容易过拟合。简单的逻辑往往更稳健。三、为什么会过拟合1. 参数优化过度为了追求更好的回测结果不断调整参数最终找到一组完美参数。但这些参数只是历史数据的产物。2. 数据窥视偏差反复用同一段数据测试不同策略相当于看着答案做题。即使最终选出一个表现好的也可能只是偶然。3. 样本量不足数据太短、交易次数太少统计结果不可靠。4. 忽略交易成本不考虑滑点、手续费的回测和真实交易差距很大。四、如何避免过拟合以下是我这些年总结的一些实用方法1. 样本内外分离测试最基本的方法把数据分成训练集和测试集。# 假设有2020-2025年的数据# 用2020-2023年优化参数# 用2024-2025年验证效果fromtqsdkimportTqApi,TqAuth,TqBacktestfromdatetimeimportdate# 训练集回测api_trainTqApi(backtestTqBacktest(start_dtdate(2020,1,1),end_dtdate(2023,12,31)),authTqAuth(账户,密码))# 测试集验证用训练集找到的参数api_testTqApi(backtestTqBacktest(start_dtdate(2024,1,1),end_dtdate(2025,12,31)),authTqAuth(账户,密码))2. 滚动窗口测试不只测一次而是用滚动窗口多次测试训练期测试期2020-202220232021-202320242022-20242025如果策略在每个测试期都表现稳定说明稳健性较好。3. 参数敏感性分析测试参数在一定范围内变化时策略表现的稳定性importnumpyasnpimportpandasaspd# 测试不同MA周期的表现results[]forma_periodinrange(10,50,2):# 运行回测profitrun_backtest(ma_period)# 假设有这个函数results.append({period:ma_period,profit:profit})dfpd.DataFrame(results)# 检查参数敏感性profit_stddf[profit].std()profit_meandf[profit].mean()# 如果标准差/均值 0.5说明参数稳健sensitivityprofit_std/profit_meanifprofit_mean0elsefloat(inf)print(f参数敏感性:{sensitivity:.2f})4. 保持策略简洁我的经验是参数越少越好条件越简单越好。一个只有2-3个参数的策略比有10个参数的复杂策略更可靠。5. 加入交易成本一定要在回测中加入真实的交易成本# 滑点设置SLIPPAGE2# 2跳滑点# 手续费设置COMMISSION_RATE0.0001# 万分之一# 在计算收益时扣除成本actual_profitgross_profit-trade_count*(SLIPPAGE*tick_sizeavg_price*COMMISSION_RATE)6. 足够的样本量确保回测有足够的交易次数。通常建议至少100次以上的完整交易覆盖不同市场环境趋势、震荡、极端行情时间跨度至少2-3年五、几款工具的回测实测对比在避免过拟合方面不同工具的体验也不同工具回测精度参数测试便利性数据完整度TqSdkTick级/K线级均支持较好历史数据完整VnPy支持Tick级灵活需自己实现取决于数据源文华财经主要K线级一般有限从使用体验来说天勤量化的数据完整度对于做长周期回测验证比较友好而VnPy的自由度更高适合想深度定制回测流程的用户。六、一个真实的过拟合案例分享一个我自己踩过的坑2019年我开发了一个趋势跟踪策略用2015-2018年数据回测年化收益45%最大回撤8%完美然后我用2019年数据验证——收益为负。复盘发现问题我在参数优化时测试了上百组参数组合最终选择的参数刚好契合2015-2018年的行情特征2019年市场风格变化策略完全失效后来我重新设计采用简化策略逻辑从8个参数减到3个滚动窗口测试降低收益预期新策略回测年化只有15%但样本外验证稳定实盘一年后确实达到了预期效果。教训宁可要一个稳健的普通策略也不要一个华丽的完美策略。七、总结避免过拟合的核心原则简单优于复杂参数越少过拟合风险越低样本外验证一定要在未见过的数据上验证多维度检验滚动窗口、参数敏感性、不同市场环境合理预期年化20-30%已经很好不要追求不切实际的回测结果交易成本一定要考虑滑点和手续费选择量化工具这件事我的建议是多试用、多比较适合自己的才是最好的。声明本文基于个人学习经验整理仅供技术交流参考不构成任何投资建议。量化交易有风险历史回测不代表未来收益。