第157章 等一个结果(2 / 2)
请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
他靠在椅背上,盯着这几行字看了一会儿。
他之前做量化,所有参数都是手工调的。均线用哪两根、止损设几个点、成交量阈值定多少,全部靠回测数据一点一点试。试出来一组最优解,就写死在代码里,模型照着跑。但市场不会一直用同一种节奏。趋势强的时候,灵敏的参数能抓住机会;趋势弱的时候,灵敏就变成了活该被割。崔金源说的“活系统”,核心就是让参数自己动起来——根据市场状态,自动调整策略的灵敏度。不是人去迁就市场,是模型自己去适应。
但崔金源在台上讲的是大框架,具体怎么落地,得靠自己一点一点试。林深想了想,决定先不动大结构,就从均线周期这一个参数开始改。
原来的模型用60日均线判断方向,价格在线上做多,线下做空。60日均线在趋势强的时候很好用,但一旦市场进入震荡,价格反复在均线附近穿插,信号频繁切换,来回被割。
在峰会上听崔金源讲的时候就意识到了这个问题——不是均线本身不对,是均线的周期太死。
林深新建了一个函数,专门用来判断市场状态。逻辑不复杂,用趋势强度指标把市场分成三种状态:趋势强、趋势中等、趋势弱。趋势强的时候,价格方向明确,用灵敏的短周期均线;趋势中等的时候,方向还在但噪音开始多了,换成稳重的中周期均线;趋势弱的时候,市场在震荡,干脆不开仓,趴着等。
核心改动只有二十几行代码。敲完最后一个括号,他靠在椅背上盯着屏幕看了一会儿。均线周期现在会自己变了,不是他告诉模型该用哪组,是模型自己根据市场状态去选。
他把螺纹钢过去三年的日线数据导进去跑了一遍回测。屏幕上慢慢刷出新的绩效曲线——收益率从31.7%提到了38.7%,最大回撤从19.3%降到了14.6%。胜率还是不高,四成出头,但盈亏比从接近4比1提到了5比1——赚一次够亏五次还有余。
林深盯着那条比之前更平滑的曲线,心里默默地算了一下。
只改了均线周期,收益就提升了七个百分点。崔金源那张对比图里的优化幅度是十二个点,那是包括止损、成交量、因子权重在内的一整套动态框架跑出来的结果。他现在只动了第一步,七个百分点——方向对了,但还有空间。
接下来是止损。原来的止损是固定的,开仓价的2%。不管市场波动大还是小,一刀切。波动大的时候2%太窄,稍微一晃就被震出去;波动小的时候2%又太宽,利润回吐了一截才触发。他把止损幅度和波动率挂钩,波动大的时候放宽一点,别被震出去;波动小的时候收紧,保护利润。逻辑和均线切换一样:不是他定一个死数,是模型根据市场状态自己调。
改完止损,他顺手把成交量阈值也调整了一下。原来的规则是突破必须放量到过去20日均量的1.5倍以上才确认,这个1.5倍也是拍脑袋拍出来的。
现在同样的思路——趋势强的时候放量标准可以低一点,趋势弱的时候必须严格放量确认。
三个参数——均线周期、止损幅度、成交量阈值——现在都是活的,都会根据市场状态自动调整。他把所有改动保存好,重新跑了一遍回测,没有再往上跳。改一个参数能提升七个百分点,改三个参数效果没有叠加,说明三个参数之间存在重叠的优化空间,单独改一个就够了,后面的两个只是让系统更稳定。
林深靠在椅背上,盯着屏幕上的代码。从“死参数”到“活系统”,这才是第一步。
“林哥。”
周学明从电梯口走过来,手里拿着一个文件夹。“汇创驱动的调研提纲我改好了。你帮我看看还有没有要补的。”
林深接过来翻了几页。提纲列得很细,产能爬坡节奏、客户导入进度、竞争对手的扩产计划,每一条都有注明。他在最后一页的空白处写了一句:重点问研发投入占比,伺服电机这个赛道技术迭代快,研发跟不上,产能再高也没用。
“什么时候去?”他把文件夹递回去。
“下周。”
“遇到拿不准的别急着下结论,多问几个为什么,数据拍回来再看。”
“好。”周学明接过文件夹,犹豫了一下,“林哥,汇创驱动这家公司,我觉得逻辑挺硬的。如果调研确认了,能不能试着推一次?”
林深看着他。这句话从周学明嘴里说出来,分量不一样——以前他是跟在后面学,现在他想自己往前走了。“你已经是研究员了,自己做决定。不够数据没确认之前,别急着下结论。”
周学明点了点头,转身回了工位。
林深的目光重新看向屏幕上的回测曲线,心里清楚这只是第一步。崔金源在台上还讲了一个更关键的东西——时间序列交叉验证。他之前跑回测用的是全量数据一次性跑完,没有分训练集和测试集,这种做法本身就容易过拟合。回测再漂亮,放到实盘里可能根本不是那么回事。这个问题不解决,前面改再多参数都是空中楼阁。但时间序列交叉验证需要把整个回测框架拆了重写,今天做不完,得专门找个时间静下心来弄。
↑返回顶部↑