about

月晖,07后,北京人。

18岁前读过不止一千本书的读书人,15岁时小红书连更一年的自媒体创作者。目前正在学习和尝试投资。

你好,我是月晖。

从9月底我开通ChatGPT会员给自己编程起,就在回测一个投资策略。大体而言,是受张翼轸老师每周在他公众号里更新的“四资产轮动模型”启发,先选择几种不同资产,比如A股、美股、黄金,再基于动量效应,定期切换到前一段时间表现最好的资产,在不同品类间轮动。

起初做得很笨拙,只是让AI给我写下载数据的代码,我到电脑终端里执行后,再把下载好的数据传给AI,让它写代码去算数画图。很快有了两方面进步:一是从最早使用AKShare和新浪财经数据,改为使用Wind Alice Market数据,因为从Wind下载的数据更准。二是后来用上有了Claude Code,我的技术力量进一步提升,可以展开更加复杂多样的回测。

这种东西的回测,我理解分为两边。

前半部分测试主要是针对策略本身,比如既然是取过去x个交易日里资产的表现,那就要让x取不同的值,更换不同时间窗口,看是否表现类似,从而检验稳健性,确保不是过拟合。又比如尝试加入或者更换资产类别,比如从沪深300改成标普500,从纳斯达克ETF改为日经ETF。

后半部分考察的是策略执行中可能会遇到的问题。首先是对实际交易中可能存在的手续费、滑点这些误差也做了估计,看看加入这些磨损后,策略长期收益率会降低多少。其次是A股买ETF一次必须买一手,也就是100份、数百元,所以每次买入金额必然不可能和账户余额严丝合缝,总会剩下一点小钱,我有测试了这种磨损会带来多少长期损耗。

两方面都测盘,我还让AI给我建言献策,看看还有什么没考虑到的。所有这些准备工作都弄完,我就划转资金,准备买入。

按这个策略的规则,应该是每周五收盘前买进。这看起来只是很普通的一句话,我一度也认为没有问题,岂料会在这个看似正常的地方被绊住。

下午2:50,我打开纳指ETF的交易界面,输入购买量,设置限价单。出于习惯,我设置的价格比市价稍微低一点点。没想到,设完限价单之后,纳指又上涨了一些,此时已经有2:55左右,我意识到若按自己设置的原价,3点收盘前恐怕买不进去。于是我决定撤单,重新挂一个稍微高点的价格。

以往只要交易没有达成,我点击撤单都会立刻撤回,可用资金旋即回到我的账户里。没想到,这次我点击撤单,APP弹出提示,但可用资金却丝毫没有回来。再一看软件显示界面。我的单子还在上面挂着,根本就没撤回。

我以为是bug,又按了几次,退出App重进后重新尝试,结果一无所获。一直到3点整收盘,可用资金依然被那笔根本没能成交的买入耽搁在那里。由于我的策略每次买入都是全仓买,此刻我只能干瞪眼,什么都干不了。

就这样,策略运行的第一天,就给我来了个买入未遂,荒谬的很。

收盘之后上网查,我才知道A股在下午临近收盘的最后3分钟里,可以挂单,也可以达成交易,唯独不能撤单。

这3分钟也就是14:57到15:00,和A股上午开盘之前9:20~9:25那个区间一样,都在集合竞价,在此期间,如果挂单,只有两种可能:成交,或者悬在那里等竞价结束。

像我今天这个单子,就属于我买但没人卖,挂在那里,等到收盘一直没人卖便自动作废。收盘之后等一段时间,资金倒是能退给我,现在可用资金又恢复到了初始状态,只不过想要达成买入,却是只能等下周一了。

所幸后续我又找Claude Code写代码回测,发现这个策略并不特别依赖必须在周五下午收盘前执行。

一方面,把交易时间改到周五上午,长期来看能够提升这个策略的收益。今后我可能会改成上午交易,或者午休时整理数据、下午开盘时操作,别紧赶着收盘前这一小会。

另一方面,随机测试在策略执行中如果有5%、10%乃至20%的交易日,把周五该做的交易拖到下周一,长期年化也就是减少零点几个百分点到一个百分点的水平。

今天买入未遂,那就等到下周一再买吧。

策略回测搞了一堆,基本的交易规则倒是没有记清楚,这确实是我的失误。还好也没有什么损失,只是有点不爽而已。

Posted in

发表回复

了解 月晖的博客 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读