首页 > 其他分享 >唠唠量化策略开发当中的细节优化,十年多赚200%

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

时间:2024-07-31 22:28:14浏览次数:11  
标签:唠唠 原始 策略 200% ln ETF 对数 量化 价格

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

标签:唠唠,原始,策略,200%,ln,ETF,对数,量化,价格
From: https://blog.csdn.net/iamquantman/article/details/140750563

相关文章

  • 唉~~量化策略越改越差了
    最近收到藏经阁群友私信,问能不能在最近发布的轮动策略当中加入持仓时间的限制条件,买入某个ETF后,必须持有够7天才可以卖出。其目的有二,第一是想减少市场杂音,减少不必要的交易,第二就是如果场外操作的话,交易对应的ETF联接基金(直接在支F宝里面就可以买),持满7天,就可以省去赎回费,降......
  • 个人做量化交易一定不靠谱?
    在某乎上的『量化』话题下,有一类关于个人量化交易者的问题很热门,比如『个人做量化交易靠不靠谱吗?』、『个人做量化交易到底可不可行?』、『个人做量化没啥优势,不如买量化基金?』。关注度高的,有四百多个回答,两百多万的阅读,相较于量化这么不大众的领域,这绝对是相当于能阻止汪F上......
  • 题解_P2024 [NOI2001] 食物链
    [NOI2001]食物链题目描述动物王国中有三类动物\(A,B,C\),这三类动物的食物链构成了有趣的环形。\(A\)吃\(B\),\(B\)吃\(C\),\(C\)吃\(A\)。现有\(N\)个动物,以\(1\simN\)编号。每个动物都是\(A,B,C\)中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这......
  • P2036 [COCI2008-2009 #2] PERKET
    [COCI2008-2009#2]PERKET题目描述Perket是一种流行的美食。为了做好Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。你有nnn种可支配......
  • 塔子哥的编程乐趣-腾讯2023笔试(codefun2000)
    题目链接塔子哥的编程乐趣-腾讯2023笔试(codefun2000)题目内容塔子哥是一位资深的程序员,他最近在研究一种特殊的数组操作。他有一个由正整数组成的数组,数组的长度是偶数。塔子哥可以对数组中的任意一个数字执行以下两种操作之一:将该数字乘以2;将该数字除以2并向下......
  • P2163 [SHOI2007] 园丁的烦恼 题解
    题目传送门题目大意:在一个平面直角坐标系上,给定\(n\)个点的坐标\((x,y)\),\(m\)次询问,每次询问一个矩形范围内的点的数量,此矩形用\(\{a,b,c,d\}\)来描述,其中\((a,b)\)为左下角,\((c,d)\)为右上角。思路:不难将题目转化为:给定一个长度为\(n\)的序列,序列中的每个元......
  • [POI2007] OSI-Axes of Symmetry 题解
    给出一个多边形,求对称轴数量。考虑对于一个多边形,其是对称的当且仅当对于若干个边(角),其左右的角与边都是对称的。考虑如果我们对于内角构造出一种单射,映射为一个整数,将边映射为它的边长,那么我们按照角,边,角,边,……的顺序将他们加入数组中,能构造出一个长度为\(2n\)的数组,将这个......
  • [POI2008] POC-Trains 题解
    前言题目链接:洛谷。时间复杂度和输入同阶的做法。题意简述有\(n\)(\(n\leq10^3\))个长\(m\)的字符串,\(q\)(\(q\leq10^5\))次操作,交换两个字符串的两个字符。问每个字符串在所有时刻,最多有几个和它相等。题目分析套路做法看到字符串相等,想到使用哈希。但是要支持修改,怎么......
  • [SHOI2007] 园丁的烦恼
    二维数点问题我们通过扫描线可以将静态的二维问题转换为动态的一维问题维护动态的一维问题就使用数据结构维护序列点击查看代码#include<bits/stdc++.h>usingnamespacestd;structt1{ intx,y;}t[500005];structq1{ intx1,y1,x2,y2;}q[500005];structl1{......
  • 在 Visual Studio 2022 中,开发 ASP.NET 网站并在 Windows Server 2003 中进行部署
    在WindowsServer2003/WindowsXP中,是无法安装4.0以上版本.NETFramework的,最高只能到4.0。如果要在其上部署ASP.NET程序,只能选择4.0版本进行开发。一、ASP.NET网站程序开发新建项目类型:ASP.NETWeb应用程序(.NETFramework)引用包:Microsoft.AspNet.WebApi、Mic......