消费+纳指的资金平衡策略

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%。
notion image

代码实现

# 导入函数库
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

© fishyer 2022