原文策略源码如下:
#策略概述:以ROE为筛选标准,选择沪深300中满足条件的股票作为股票池
#采用CAPM模型,利用选单因子回归,计算出阿尔法值,选出阿尔法值最大的前16支股票进行投资
import numpy as np
from scipy import stats
import pylab
‘’’
初始化
‘’’
def initialize(context):
set_params() #1设置策略参数
set_variables() #2设置中间变量
set_backtest() # 3设置回测条件
run_daily(stop, time=‘after_close’)
#1设置策略参数
def set_params():
g.index = ‘000300.XSHG’
#每次取alpha最小的16支股票
g.num = 16
#每次回归调用前days天的数据
g.days = 121
g.tc = 10
g.N = 121 # 需要前多少天的数据
g.rf=0.04/252 #无风险利率,用于计算超额收益
g.ROE_requirement=10 #ROE大于10%
#2设置中间变量
def set_variables():
g.t=0 #记录连续回测天数
g.if_trade=False #当天是否交易
g.feasible_stocks=[]
#3设置回测条件
def set_backtest():
set_benchmark(‘000300.XSHG’)
set_option(‘use_real_price’,True) # 用真实价格交易
log.set_level(‘order’,‘error’) # 设置报错等级
‘’’
每天回测前
‘’’
def before_trading_start(context):
if g.t % g.tc ==0:
#每g.tc天,交易一次
g.if_trade=True
# 设置手续费与手续费
set_slip_fee(context)
# 获得ROE大于设定的值的股票池
a=query(indicator.code,indicator.roe
# 筛选 ROE大于设定的值
).filter(ind