唠唠量化策略开发当中的细节优化,十年多赚200%

最近这段时间没有搂到啥有趣的量化策略,又不想开空窗,周末闲暇,就来唠唠如何把现有的策略做得更精细化,处理好一些开发细节,让原来的策略更亮眼,无需高深的数据处理和开发技巧,十年多赚200%+。

大道理就不瞎扯了,说多了大伙儿也不爱听,我自己是喜欢比较实操更接地气的东西,就拿之前开发的ETF轮动策略开刀吧,具体的策略构建细节可以看之前的两篇文章《手把手教你构建与改进轮动策略》《换了量化平台,重新回测,还是十年10倍》

给新来的但又不想看长篇大论的小伙伴,描述一下这个ETF轮动策略大致的思路,轮动候选池为:红利ETF(510880),创业板ETF(159915),纳指ETF(513100),黄金ETF(518880);每日为候选池当中的所有ETF进行动量强弱打分,ETF强弱得分为“价格序列斜率和决定系数的乘积”,买入得分最高的那个ETF,若得分持续最高则继续持有,否则卖出旧仓买入新的最强,回测绩效如下。

图片

图片

原始策略十年来回测的累计收益率是1040.55%,年化收益是28.74%,夏普率正好是1.0,咱就以这些回测绩效统计指标作为基准,判断之后修改的策略是否起到改进优化作用。

为了保证策略之间的可比性,回测时间依旧保留为2013年9月3日~2023年7月28日,ETF交易费率为万分之3,无印花税,当前交易日出信号,下一个交易日开盘成交,滑点、防未来等设置都与之前的一样。

闲白铺垫完了,下面进入正题,对原始策略第一处改进就是“对数处理”,这一点很常见吧,特别是对于接触过金融数据分析的童鞋。

在金融数据分析当中,通常都会对证券原始的价格序列进行对数处理,将原始价格转化为对数价格,然后再计算收益率等各种分析,为什么要这样做呢?

在统计上,这样能使数据序列更平稳、削弱共线性和异方差~什么~~看不懂~~~犯迷糊?不理解的小伙伴不要着急,接下来会说人话,总之对数处理好处多,我就说说跟这个策略相关的部分。

先举个栗子,假设有个ETF价格是1块钱,第一年先下跌了50%,跌到了0.5元,第二年上涨了50%,涨回到了0.75元,你瞧,平均收益率是0,1*(1-50%)*(1+50%)=0.75,但价格最终却是下跌了25%。

这就是用原始价格计算收益率时的一个弊端——涨跌不对称性,如果计算对数收益率就没有这个烦恼了,对数收益率=ln(原始期末价格/原始期初价格)=ln(原始期末价格) - ln(原始期初价格),ln()是以自然数e为底的对数函数。

第一年对数收益率 = ln(0.5) - ln(1.0) = -69.31%

第二年对数收益率 = ln(0.75) - ln(0.5) = 40.54%

平均对数收益率 = (-69.31% + 40.54%) / 2 = -14.38%

转化为最终的原始价格:exp(-69.31% + 40.54%) = 0.75

可以看到,平均的对数收益率是负数,表明最终的价格是下跌的,第一年下跌的幅度要比第二年上涨的幅度要大,并且,由于对数收益率的计算性质,对数收益率之间具有可加性,不像普通的算术收益率需要加1后连乘才能得到最终的价格。

这种对数化的处理就非常契合轮动策略当中的动量理念,这更加方便咱看价格走势,进而计算出价格走势的斜率了。

为了直观解释,再来举个栗子,简单粗暴假设有个ETF的价格每天都是上涨1%,咱分别画出原始价格的序列曲线和“ln(原始价格)”的曲线。

为了方便对比,我把两条曲线的首尾放到一起,原始价格(黑线)数值看左轴,对数价格(蓝线)看右轴。可以看出,对数价格曲线符合每日固定增长的走势,而原始价格的走势斜率会越来越大(这也印证了复利的威力)。

看完了对数处理的缘由,咱试一下把策略中的原始价格换成是对数价格,再跑一遍回测试一下。

图片

跟原始策略对比,累计收益率从1040.55%提升到了1125.18%,年化收益从28.74%提高到了29.70%,夏普率从1.0提高到了1.04,看来这常规的金融数据处理还是有一丢丢的改进优化作用。

上面针对的是价格走势的处理,那价格是用什么来表示呢?肯定有很多童鞋本能地回答说是收盘价,这也没错,收盘价确实是其中的表示形式之一,咱之前也是怎么做的,但价格的表示不单单只有收盘价。

咱平常看盘的时候,映入眼帘的是K线序列,是一根根K线串联起来的,而收盘价只是K线当中的一个数值点,下面是沪深300指数的K线序列。

图片

红线是最高价,白线是最低价,黄线则是收盘价,K线如果像是一条有一定宽度的布带的话,那收盘价只是这根布带之间的一条线,咱之前就是在用这根线的斜率,去衡量这条布带的走势。

如果是这样,那能不能多用几根线去表征这条布带?答案是肯定的,特别是开发CTA策略的童鞋,计算价格的时候会综合考虑开高低收、成交量、换手率等因素。

我就说其中一种常用且简单的形式,价格 =(最高价+最低价+收盘价)/3,这个平均出来的价格在坊间有很多种称呼,比如平均价格、价格中枢、K线中枢等,这些都是不成文的叫法,大伙儿明白我的意思就行了,下文就称为“K线中枢”吧(其实真正的K线中枢要有逐笔成交数据才能算出来,就当做是极其简化版吧)。

咱就用这个K线中枢,代替原策略当中的原始价格序列,重新回测一遍,看看效果如何。

图片

跟原始策略这个基准比,累计收益率从1040.55%提升到了1233.22%,年化收益从28.74%提高到了30.84%,夏普率从1.0提高到了1.08,看来这K线中枢的改进优化作用比对数处理还要强。

既然对数处理和K线中枢对原策略都有改进优化的作用,那一起用会怎么样呢?

说干就干,先用K线中枢代替原策略当中的原始价格,再对K线中枢进行对数处理,接着的流程就跟原始策略的一模一样了,再来回测一番。

图片

图片

这个双管齐下的策略跟原始策略基准比,累计收益率从1040.55%提升到了1273.95%,十年间多赚了233.4%,年化收益从28.74%提高到了31.25%,多了2.51%,夏普率也从1.0提高到了1.1,比单独使用其中一种改进方式的效果要好很多。

量化策略的细节优化和改进,一般情况下不会带来翻天覆地的收益提升,但改进优化一次比一次好的话,长期累积下来,也是很可观的收益,同时也能减弱一些异常数值的干扰,是一种长期打磨的功夫。

这次唠了对数处理和K线中枢这2种很简单实用接地气的策略细节优化技巧,一般对原策略改动不大,并且有一定的提升作用,开发性价比还是挺高的,感兴趣的小伙伴可以自行尝试一下。

图片

原文首发链接《唠唠量化策略开发当中的细节优化,十年多赚200%》

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
403 StatusForbidden是指在HTTP协议中的一个错误状态码,表示请求被服务器拒绝。这通常是因为服务器认为客户端没有访问特定资源的权限,因此拒绝了请求。在网页浏览器中,当用户尝试访问某个网页或目录,但没有足够的权限时,就会收到403 Forbidden错误。对于Python中的HTTP请求,也可以使用http.HTTPStatus.FORBIDDEN来表示403禁止的错误状态。如果遇到403 Forbidden错误,客户端可以尝试以下解决方案:检查URL是否正确,检查访问的资源是否需要特定的身份验证信息,尝试清除浏览器的缓存和Cookie,或者联系网站管理员以获取更多帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [HTTP 403禁止状态代码和修复错误](https://blog.csdn.net/cunjiu9486/article/details/109076494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [又十一了,唠唠程序员回家相亲那些段子](https://blog.csdn.net/qq_39390545/article/details/120563240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值