原创文章第86篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。
此前,我们确定了专注未来专注于两个方向:
一是智能投顾方向,用于资产管理,基础是现代投资组合理论,配置战术资产优化,再平衡等。可以使用部分技术分析,参数优化,甚至AI调参等技术做战术优化,部分择时。
另一个方向是AI投机,偏短线甚至高频交易,配合止盈止损。
回应之前有一个朋友问我的一个问题,若有AI量化有最优解,比如上帝视角,那就一个ai模型就够了。结果会导致就是大家都这样交易,然后市场就有效了,大家都有alpha,那证明没有有效的模型。
其实一定程度上,美股就是这样的,都是专业基金管理团队,估值模型都差不多,美股想获得超额收益很难,所以才有买指数基金是最优方案,赚的是市场BETA,或者说smart beta。
进一步说,即便有上帝视角,投资方案排列组合出来的方案也是无穷多。投资周期有长有短,风险收益偏好的不一样,大家的预期就不一样,需要也不一样。所以,不用担心只有一个模型的问题。
这两周优先智能投顾,投顾是更确定的问题,相对更加容易可以做出可用的模型。
01 中国版全天候:固定权重的大类资产配置
codes = ['159928.SZ', '510050.SH', '51.SH', '513100.SH', '518880.SH', '511220.SH', '511010.SH','161716.SZ']weights = [0.03, 0.06, 0.08, 0.05, 0.1, 0.32, 0.26, 0.09]
配置的是固定的权重,三个月再平衡一次。
年化是7.69%,最大回撤4.49%,非常好,夏普达到1.84。
这个权重是参考了桥水全天候的简化版。
为了更具参考性,我们再做一个等权重的模型,作为比较基准。
02等权模型
买入即持有,等权配置:
algos = [RunOnce(),#RunQuarterly(),SelectAll(),#WeightFix(weights)WeightEqually()]
不得不说,我们的“积木式”框架非常优雅,基本不用写代码。
年化14.8%,回撤11.75%,夏普1.43。
换成三个月再平衡:
年化13.68%,最大回撤9.49%,夏普1.58
三个月的等权再平衡作为我们风险平价的一个参考基准。
03 风险平价
风险平价,需要额外的参数,就是所有交易标的的收益率。
新增一个标准风险平价的算子:
class WeightRP:def __init__(self, returns_df):self.returns_df = returns_dfdef __call__(self, context):N = 240def get_train_set(change_time, df):"""返回训练样本数据"""# change_time: 调仓时间change_time = pd.to_datetime(change_time)df = df.loc[df.index < change_time]df = df.iloc[-N:] # 每个调仓前240个交易日return dfselected = context["selected"] # select算子返回的需要分配仓位的 data集合stra = context['strategy']dt = stra.get_current_dt()print(dt)sub_df = get_train_set(dt, self.returns_df)one_cov_matrix = np.matrix(sub_df.cov() * N)# 1.计算协方差:取调仓日 前N=240个交易日数据, one_cov_matrix = returns_df.cov()*240,return np.matrix(one_cov_matrix)# 2.计算RP权重weights = calculate_portfolio_weight(one_cov_matrix, risk_budget_objective=naive_risk_parity)print(weights)for data, w in zip(selected, weights):stra.order_target_percent(data, w*0.95)
调用也特别简单:
algos = [#RunOnce(),RunQuarterly(),SelectAll(),#WeightFix(weights)WeightRP(returns_df=returns_df)]
把夏普比做到了1.9。
风险平价还不是不错的,明天在这个基础上,对模型进行PCA升级。
小结:我们专注于智能投顾(基于风险平价等现代投资组合管理),和AI量化投资(机)做短线。