[关闭]
@Channelchan 2017-04-15T16:48:09.000000Z 字数 2137 阅读 2119

Alpha101_六个价格因子绩效


价格因子有效的假设

  1. 价格反映一切
  2. 市场不总是有效的
  3. 短期收益应关注价格与供需,而不是基本面

101_Alpha中价格因子的编号

六个Alpha因子分析

Alpha8:

(-1 * rank(((sum(open, 5) * sum(returns, 5)) - delay((sum(open, 5) * sum(returns, 5)),10))))
原理:选择最近五天的开盘价大且收益为正,且十天前的前五天开盘价小而收益为负的股票

Alpha9:

((0 < ts_min(delta(close, 1), 5)) ? delta(close, 1) : ((ts_max(delta(close, 1), 5) < 0) ?delta(close, 1) : (-1 * delta(close, 1))))

原理:选择前面5天或4天连续跌,今天跌幅最多的,否则选择前面没有连续涨跌的,当天涨幅最大的。

Alpha18:

(-1 * rank(((stddev(abs((close - open)), 5) + (close - open)) + correlation(close, open,10))))
原理:选择过去五天真实波动率大,当天是涨了,而且过去十天收盘价与开盘价同向上

Alpha20:

(((-1 * rank((open - delay(high, 1)))) * rank((open - delay(close, 1)))) * rank((open -delay(low, 1))))
原理:选择开盘价比昨天最高价、收盘价、最低价都要高的股票。

Alpha34:

Alpha#34: rank(((1 - rank((stddev(returns, 2) / stddev(returns, 5)))) + (1 - rank(delta(close, 1)))))
原理:买入波动率最近两天大于过去五天而且今天涨幅大的股票

Alpha53:

(-1 * delta((((close - low) - (high - close)) / (close - low)), 9))
原理:选择当天收盘价与最低价高于九天前的收盘与最低价,而最高价不会高太多的。

用HS300作为股票池

Price_Return_STD_Factors模块可以从http://url.cn/47TozHv获取。
MongoHandler可从腾讯课堂Python金融数据处理或http://act.fxdayu.com/academy/tutorials.html
Alphalens直接pip install alphalen即可

  1. from Alpha_factor.Price_Return_STD_Factors import alphas
  2. from fxdayu_data.data import MongoHandler
  3. from datetime import datetime
  4. import pandas as pd
  5. from fxdayu.api import all_table
  6. import matplotlib.pyplot as plt
  7. import alphalens
  1. mh = MongoHandler()
  2. stocks = all_table('HS300')
  3. data = mh.read(stocks, 'HS300', start=datetime(2011, 1, 1))
  4. price = data.minor_xs('close')
  1. data_factor = alphas(data).alpha008()
  2. data_factor = alphas(data).alpha009()
  3. data_factor = alphas(data).alpha018()
  4. data_factor = alphas(data).alpha020()
  5. data_factor = alphas(data).alpha034()
  6. data_factor = alphas(data).alpha053()
  1. def multi_series(frame):
  2. column = list(frame.columns)
  3. index = []
  4. values = []
  5. for time, prices in frame.iterrows():
  6. for code in column:
  7. index.append((time, code))
  8. values.extend(list(prices))
  9. return pd.Series(values, pd.MultiIndex.from_tuples(index, names=['datetime', 'code']))
  10. factor = multi_series(data_factor)
  11. factor_data = alphalens.utils.get_clean_factor_and_forward_returns(factor, price, quantiles=5)
  12. print factor_data
  13. mean_return_by_q, std_err_by_q = alphalens.performance.mean_return_by_quantile(factor_data, by_date=True)
  14. alphalens.plotting.plot_cumulative_returns_by_quantile(mean_return_by_q, 5)
  15. plt.show()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注