建设美食网站的作用,搜索引擎 网站推广,厦门网站建设慕枫,logo设计网站参考前面介绍了如何使用 hikyuu 进行策略回测参数优化#xff0c;同时也提到了这种简单的参数优化本质其实是对历史数据的过拟合#xff0c;通常并不具备直接使用的意义。那么有什么办法来减缓这种过拟合影响#xff0c;让参数优化发挥实际的作用呢#xff1f;答案是——使用滚…前面介绍了如何使用 hikyuu 进行策略回测参数优化同时也提到了这种简单的参数优化本质其实是对历史数据的过拟合通常并不具备直接使用的意义。那么有什么办法来减缓这种过拟合影响让参数优化发挥实际的作用呢答案是——使用滚动系统但依然需要保持谨慎的态度因为回测是拟合的本质并没有改变。
先来看一个简单的示例依然使用趋势双均线标的为万科使用2001年-2010年数据进行参数寻优参数寻优范围为 快线 [5, 80], 慢线 [50, 250]共 14535 组参数组合寻优结果为快线41慢线72。对2010年至2024年9月30日数据进行回测下图分别为使用最优参数的回测结果左图、使用滚动寻优系统的回测结果右图。其中滚动寻优为每300个交易日寻找最优参数并使用最优参数系统执行200天以此滚动推进。 在 hikyuu 中创建滚动寻优系统很简单指定寻优候选系统列表滚动训练区间长度测试执行区间长度有效初始账户即可。当候选系统列表中仅有一个系统时就是普通的滚动回测。并且候选系统列表并要求一定是同一个策略的系统示例哦也就是说可以在不同的系统策略中进行滚动寻优。创建后的滚动系统实例在 PF投资组合中依然可用因为滚动交易系统本质还是一个单标的的交易系统实例。
# 指明参数寻优候选系统列表滚动训练区间长度测试执行区间长度
my_sys SYS_WalkForward(sys_list, crtTM(), train_len300, test_len200)
my_sys.name 滚动寻优系统
my_sys.run(stk, query)
my_sys.performance()滚动原理
滚动回测是通过不断向前滚动的时间窗口进行回测。具体来说将历史数据划分为多个连续的时间段每次只使用其中一个时间段进行回测然后逐步向前移动时间窗口重复进行回测。这样可以观察策略在不同时间点的表现以及对市场变化的适应性。
滚动寻优同样是不断向前的滚动窗口和普通单交易系统策略滚动不同的地方则在于在训练周期内按一定的评估准则对训练周期内所有候选系统进行评估选取绩效最优的系统在接下来的测试周期中使用选择的最优系统执行实际的操作。说白了当后续系统只有一个的时候就是普通系统的滚动回测。 Hikyuu 中使用滚动系统
在 hikyuu 中创建滚动系统非常简单只需要调用 SYS_WalkForward 即可创建其帮助信息如下 参数详细说明
sys_list候选系统实例列表系统实例可以是同一系统策略实例也可以是不同的系统策略示例系统示例需绑定相应的证券。tm指定的交易账户train_len滚动寻优训练周期。如上图所示。默认为 100test_len最优绩效系统执行周期。如上图所属。默认为 20。se寻优评估选择器用于对候选系统进行绩效评估默认为当前候选系统账户期末资产最大选择器SE_MaxFundsOptimal。注此 SE 和 PF 中的SE并不相同。train_tm用于滚动评估时候选系统使用的交易账户。默认为None表示使用 tm 的拷贝进行评估。
评估选择器
评估选择器主要用于从候选系统中评估和选取最优的系统。目前提供两个内建的评估选择器
SE_MaxFundsOptimal账户资产最大寻优选择器SE_PerformanceOptimal使用 Performance 统计结果进行寻优的选择器支持按最大值或最小值选取
大家可以自行在 python 中 help 相关帮助。
其中 Performance 为交易账户绩效统计可以通过下述语句查询支持的统计项
per Performance()
per.names()#output
[帐户初始金额,累计投入本金,累计投入资产,累计借入现金,累计借入资产,累计红利,现金余额,未平仓头寸净值,当前总资产,已平仓交易总成本,已平仓净利润总额,单笔交易最大占用现金比例%,交易平均占用现金比例%,已平仓帐户收益率%,帐户年复合收益率%,帐户平均年收益率%,
……自定义评估选择器
如果上述内建的选择器还不能满足需求比如AI评估时可以自定义评估选择器
前述对比示例代码