稳健的绝对型收益策略:长期年化10.6%的风险平价策略(代码+数据)

一直说世界运行的逻辑,如何抽丝剥茧?

两个要素,一是科技,二是金融。科技代表先进的生产力,金融代表生产关系再分配。

两大要素成就这个星球上最强的帝国。

后续我们会着重从科技、金融的视角,去看待历史,立足当下,解读未来。

今天是星球每周发布代码和策略集的日子。

今天还要新增一个策略,在昨天风险平价策略稳健的绝对型收益策略:长期年化10.6%的风险平价策略(代码+数据)的基础上,加上波动率。

波动率是用户自己可以调节的,波动率高,预期收益就大,反之亦然。

在风险平价给出权重的基础上,计算预期波动率,若波动率太高,则等比例降低风险资产权重,反之提升。

这是波动率设定为7%的效果,策略更加稳健,夏普比得到进一步提升。

图片

本地化运行界面:

图片

图片

class TargetVol(Algo):
    def __init__(
            self,
            target_volatility,
            lookback=pd.DateOffset(months=3),
            lag=pd.DateOffset(days=0),
            covar_method="standard",
            annualization_factor=252,
            exclude=[]
    ):
        super(TargetVol, self).__init__()
        self.target_volatility = target_volatility
        self.lookback = lookback
        self.lag = lag
        self.covar_method = covar_method
        self.annualization_factor = annualization_factor
        self.exclude = exclude

    def __call__(self, target):
        current_weights = target.temp["weights"]
        selected = current_weights.keys()

        # if there were no weights already set then skip
        if len(selected) == 0:
            return True

        t0 = target.now - self.lag
        prc = target.df_close.loc[t0 - self.lookback: t0, selected]
        returns = prc.pct_change().dropna()

        if len(returns) < 10:
            return True

        # calc covariance matrix
        # if self.covar_method == "ledoit-wolf":
        #    covar = sklearn.covariance.ledoit_wolf(returns)
        if self.covar_method == "standard":
            covar = returns.cov()
        else:
            raise NotImplementedError("covar_method not implemented")

        weights = pd.Series(
            [current_weights[x] for x in covar.columns], index=covar.columns
        )

        vol = np.sqrt(
            np.matmul(weights.values.T, np.matmul(covar.values, weights.values))
            * self.annualization_factor
        )

        # 波动率偏小
        count = 0
        if vol < self.target_volatility:
            while vol < self.target_volatility:
                count += 1
                if count > 10:
                    break

                mul = self.target_volatility / vol

                for k in target.temp["weights"].keys():
                    if k in self.exclude:  # exclude通常为债券等低风险
                        continue
                    target.temp["weights"][k] = (
                            target.temp["weights"][k] * mul
                    )

                weights = pd.Series(
                    [target.temp["weights"][x] for x in covar.columns], index=covar.columns
                )

                vol = np.sqrt(
                    np.matmul(weights.values.T, np.matmul(covar.values, weights.values))
                    * self.annualization_factor
                )

            if vol is float('NaN'):
                return True
            weights = pd.Series(
                [target.temp["weights"][x] for x in covar.columns], index=covar.columns
            )
            # print(target.temp["weights"])
            target.temp["weights"] = weights / weights.sum()
            # print(target.temp["weights"])
            return True

        for k in target.temp["weights"].keys():
            if k in self.exclude:  # exclude通常为债券等低风险
                continue
            target.temp["weights"][k] = (
                    target.temp["weights"][k] * self.target_volatility / vol
            )

        '''

        print(self.target_volatility[k] / vol,weights, new_weights)
        print(new_vol)
        '''

        return True

所以策略及系统代码已经打包发布,请大家前往星球下载更新:

图片

【星球优惠券】AI量化实验室&财富自由践行社

图片

“AI量化社群”更关心20%+以上的收益率,但需要承担超过20%的回撤风险。主要是AI算法,代码,因子与策略

“财富自由社群”的理念是投资尽量不操心,账户自动运转,我们花更多心思在积累投资之外的本金上,以及真正实现财富自由之后都会做的事。(很多“吾日三省吾身“的成长反思),注意这里没有代码,也不谈代码,略谈投资,主要谈成长,赚投资与工资之外的钱

小结

七年之约,只是开始。

践行长期主义。

万物之中,希望至美。

人工智能与金融投资,都是长坡厚雪,且还是为数不多,可以满足个人英雄主义情结的地方。

走,一起赶路吧。

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

为了避免大家说后视镜,选择的都是宽基:沪深300,创业板,纳指(如果你觉得纳指也不行,那可自行换成标普500,没问题吧),黄金,和城投债ETF。A股宽基,美股,商品(黄金)和城投债。

task = Task()
task._id = '5d19bad6-8423-11ee-9ff6-c858c0412ade'
task.name = '大类资产-风险平价'
task.desc = '股、债、黄金,美股大类资产风险平价'
task.symbols = ['510300.SH', # 沪深300
'159915.SZ', # 创业板ETF
'511220.SH', # 城投债
# '511260.SH', # 十年国债
'518880.SH', # 黄金
# '511880.SH', # 银华日利
# '513500.SH', # 标普500
'513100.SH', # 纳指100
] # 证券池列表

task.template = '大类资产配置'

task.weights = 'WeightERC'
task.period = 'RunMonthly'
task.benchmark = '510300.SH'
print(asdict(task))
return task

风险平价的逻辑就是稳,桥水的“全天候”就是这个逻辑。

追求绝对收益,比等权有更好的夏普比。

当然后续我们可以在风险平价的基础上,加上适当的动量优化等。

图片

最近,咱们星球已经积累了5个策略:

均已更新至最新数据,代码+策略集预计明天在星球统一发布:

图片

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103678
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注