ETF动量轮动+RSRS择时,RSRS修正标准分,回撤降至16%

原创文章第113篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。

昨天的策略我是比较满意的,沿着进化的方向在迭代我们的策略。ETF轮动+RSRS择时,加上卡曼滤波:年化48.41%,夏普比1.89

我们会持续做这件事。

星球的会员群里,大家的讨论氛围非常好,非常好。这才是我们做社群的核心目的,也坚定我想把这件事持续做下去的信心。

ETF动量轮动+RSRS择时,RSRS修正标准分,回撤降至16%_第1张图片

很多人技术很好,只是没有找到量化的方向;另外一些同学经验非常丰富,需要前沿技术的突破来提升等等。

01 RSRS标准分

前面我们计算了RSRS的值,在研报上还有标准分,就是rolling(600)天的标准化。这里我们实现一个Norm的表达式。

class Norm(Rolling):
    def __init__(self, feature, N):
        super(Norm, self).__init__(feature, N, "slope")

    def _load_internal(self, instrument):
        # 因子标准化
        def get_zscore(sub_series):
            mean = np.mean(sub_series)
            std = np.std(sub_series)
            return (sub_series[-1] - mean) / std

        series = self.feature.load(instrument)
        series = series.fillna(0.0)
        result = series.rolling(self.N, min_periods=100).apply(get_zscore)
        series = pd.Series(result, index=series.index)
        return series

另外昨天有星球成员反馈,可以让quantstats直接打开html。

import webbrowser
webbrowser.open('stats.html')

使用标准分进行回测:

RSRS_benchmark = '510300.SH'
#e.add_extra(RSRS_benchmark, fields=['RSRS($high,$low,18)', '$RSRS_beta<0.8'], names=['RSRS', 'signal'])
e.add_extra(RSRS_benchmark, fields=['RSRS($high,$low,18)','Norm($RSRS_beta,600)','$Zscore<0.0'], names=['RSRS','Zscore', 'signal'])
ETF动量轮动+RSRS择时,RSRS修正标准分,回撤降至16%_第2张图片

在使用标准分之后,回撤会进一步下降,当然收益率也随之减少。

02 总结与反思

动量与RSRS都是不错的东西,如何把它们有机整合起来,还需要再做更深层次的挖掘,结合真实交易背后的逻辑,实现订单与交易的情况进行分析。一个指标完深入了,比起追求更多花里胡哨的东西,要有用得多。

我们还会继续在RSRS,KF,动量,ETF轮动策略上深挖。

03  随笔

当我这个原创数字更新到1000时,我相信疫情消散,人间皆安。

昨天看万维纲的《高手》,做决策的时候,10/10/10的理念,也就是想想自己10分钟,10个月,10年后对自己当前这个决策会怎么看。

我把它引入到自己的情绪管理。10秒,10小时,1000天。

10秒原则会让你避免掉很多情绪上的”应激反应“,很多人在地铁上与陌生人能吵得面红耳赤,甚至大打出手。其实很多时候,想骂人的话,想动的手,你让自己能冷静10秒钟,感觉不叫事;

10小时,差不多是一个半天,都决策时,给自己一个冷静期;

10年太长,那么沧海桑田,往前看三年,想想眼前面临的困难,纠结,担忧还算不算事?往前看三年,疫情不是事。我们要做的,趁着这些时光,快速充实自己,在类似的黑天鹅出现时,不会再次陷入被动。

ETF轮动+RSRS择时,加上卡曼滤波:年化48.41%,夏普比1.89

我的开源项目及知识星球

你可能感兴趣的:(建立自己的算法交易事业,python,开发语言)