消费+纳指的资金平衡策略
Tags
思路说明
从13年开始,单纯投资国内的最强指数:消费ETF(159228),历史年化可达24.44%,但是最大回撤也有-40.36%。
从13年开始,单纯投资纳指100ETF(513100),历史年化可达20.87%,最大回撤为-28.57%。
考虑到A股和美股的相关性比较低,所以决定试验下消费+纳指的资金平衡策略:
- 投资资金1:1分配给消费和纳指
- 每3个月调整一次仓位,使消费和纳指的市值比例重新恢复为1:1
通过回测,发现果然比单纯买入单个有效,策略从13年9月16日到20年7月31日的历史年化可达24.82%,最大回撤仅为23.01%。

代码实现
# 导入函数库
from jqdata import *
# 初始化函数,设定基准等等
def initialize(context):
# 设定基准
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 输出内容到日志 log.info()
log.info('初始函数开始运行且全局只运行一次')
# 基金池
g.security=['159928.XSHE','513100.XSHG']
#设定策略的交易周期
g.period=3
#记录策略的进行次数
g.times=0
# 每天执行一次
run_monthly(handle,2)
def handle(context):
# 判断策略的进行次数是否能被轮动频率整除
if(g.times%g.period!=0):
g.times+=1
return
total_value=context.portfolio.total_value
log.info("每个交易周期执行一次,当前总权益为:%f"%total_value)
# 判断策略进行次数是否能被轮动频率整除
if(g.times%g.period!=0):
g.times=g.times+1
return
total_value=context.portfolio.total_value
for stock in g.security:
order_target_value(stock,total_value/len(g.security))
g.times+=1