永久性投资组合之二(哈利·布朗)


相对于上一篇桥水全天候策略中利用一致性风险衡量指标ES来决定仓位的大小,哈利·布朗的永久性策略更加简单,提出分别在 4 种大类资产——股票、债券、现金、黄金上配置 25 % 的个人资产。然后每个几个月(或一个月调整一下)。 我们来看一下过去10年的一个回测效果:


可以看到都按照25%的比例分配,其效果是不如桥水的全天候策略的(无论是年化还是最大回撤)。但其最显著的优点就是简单,特别适合于懒人,在稍后的代码中也可以看出这一点。我们还可以把沪深300换成纳斯达克指数。其回测结果如下所示:


可以看到不但年化增加了,最大回撤也有所下降。

最后附上代码:

# 导入函数库
from jqdata import *

# 初始化函数,设定基准等等
def initialize(context):
    # 设定沪深300作为基准
    set_benchmark('000300.XSHG')
    # 开启动态复权模式(真实价格)
    set_option('use_real_price', True)
    # 输出内容到日志 log.info()
    log.info('初始函数开始运行且全局只运行一次')
    # 过滤掉order系列API产生的比error级别低的log
    # log.set_level('order', 'error')
    # 永久组合股票池
    g.stocks = [
        #'510300.XSHG', #沪深300ETF
        #'513500.XSHG', # 标普500
        '513100.XSHG', # 纳指
        '511010.XSHG', # 国债ETF
        '511880.XSHG', # 银华交易型货币
        '518880.XSHG' # 黄金ETF
        ]
    ### 股票相关设定 ###
    # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
    set_order_cost(OrderCost(close_tax=0, open_commission=0.00025, close_commission=0.00025, min_commission=0), type='fund')
    set_order_cost(OrderCost(close_tax=0, open_commission=0, close_commission=0, close_today_commission=0, min_commission=0), type='fund', ref='511880.XSHG')

    ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)
    # 开盘前运行
    run_monthly(market_open,1, time='09:30', reference_security='000300.XSHG')


## 开盘时运行函数
def market_open(context):
    total_value = context.portfolio.total_value
    stock_value = total_value/len(g.stocks)
    for stock in g.stocks:
        order_target_value(stock, stock_value)