@Channelchan
2017-07-08T07:56:18.000000Z
字数 1395
阅读 32479
WorldQuant根据数据挖掘的方法发掘了101个alpha,据说里面80%的因子仍然还行之有效并运行在他们的投资策略中。Alpha101给出的公式,也就是计算机代码101年真实的定量交易Alpha。他们的平均持有期大约范围0.6-6.4天。平均两两这些Alpha的相关性较低,为15.9%。回报是与波动强相关,但对换手率没有明显的依赖性,直接确认较早的间接经验分析结果。我们从经验上进一步发现换手率对alpha相关性的解释能力很差。
将因子选股结果存成Excel。
import alphalensfactor = DataFrame.stack()factor_data = alphalens.utils.get_clean_factor_and_forward_returns(factor, prices, quantiles=5)cond = factor_data['factor_quantile'] == 5Q5 = factor_data[cond]stocks = pd.Series(True, index=Q5.index)stocks = stocks.unstack()stocks[stocks != True] = Falseprint(stocks)stocks.to_excel('alpha.xlsx')
将选股Excel表格导入引擎回测
def init(context):codes = pd.read_excel('alpha.xlsx')codes.index = codes.pop('date')context.codes = codesscheduler.run_weekly(find_pool, tradingday=1)def find_pool(context, bar_dict):codes = context.codes.loc[context.now]stocks = codes.index[codes == True]context.stocks = stocksdef handle_bar(context, bar_dict):pool = context.stocksif pool is not None:stocks_len = len(pool)for stocks in context.portfolio.positions:if stocks not in pool:order_target_percent(stocks, 0)result = []for codes in pool:if codes not in result and codes not in context.portfolio.positions:result.append(codes)if len(result):for r in result:order_target_percent(r, 1.0/stocks_len)
