@Channelchan
2017-04-15T08:48:09.000000Z
字数 2137
阅读 2376
(-1 * rank(((sum(open, 5) * sum(returns, 5)) - delay((sum(open, 5) * sum(returns, 5)),10))))
原理:选择最近五天的开盘价大且收益为正,且十天前的前五天开盘价小而收益为负的股票
((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天连续跌,今天跌幅最多的,否则选择前面没有连续涨跌的,当天涨幅最大的。
(-1 * rank(((stddev(abs((close - open)), 5) + (close - open)) + correlation(close, open,10))))
原理:选择过去五天真实波动率大,当天是涨了,而且过去十天收盘价与开盘价同向上
(((-1 * rank((open - delay(high, 1)))) * rank((open - delay(close, 1)))) * rank((open -delay(low, 1))))
原理:选择开盘价比昨天最高价、收盘价、最低价都要高的股票。
Alpha#34: rank(((1 - rank((stddev(returns, 2) / stddev(returns, 5)))) + (1 - rank(delta(close, 1)))))
原理:买入波动率最近两天大于过去五天而且今天涨幅大的股票
(-1 * delta((((close - low) - (high - close)) / (close - low)), 9))
原理:选择当天收盘价与最低价高于九天前的收盘与最低价,而最高价不会高太多的。
Price_Return_STD_Factors模块可以从http://url.cn/47TozHv获取。
MongoHandler可从腾讯课堂Python金融数据处理或http://act.fxdayu.com/academy/tutorials.html
Alphalens直接pip install alphalen即可
from Alpha_factor.Price_Return_STD_Factors import alphasfrom fxdayu_data.data import MongoHandlerfrom datetime import datetimeimport pandas as pdfrom fxdayu.api import all_tableimport matplotlib.pyplot as pltimport alphalens
mh = MongoHandler()stocks = all_table('HS300')data = mh.read(stocks, 'HS300', start=datetime(2011, 1, 1))price = data.minor_xs('close')
data_factor = alphas(data).alpha008()data_factor = alphas(data).alpha009()data_factor = alphas(data).alpha018()data_factor = alphas(data).alpha020()data_factor = alphas(data).alpha034()data_factor = alphas(data).alpha053()
def multi_series(frame):column = list(frame.columns)index = []values = []for time, prices in frame.iterrows():for code in column:index.append((time, code))values.extend(list(prices))return pd.Series(values, pd.MultiIndex.from_tuples(index, names=['datetime', 'code']))factor = multi_series(data_factor)factor_data = alphalens.utils.get_clean_factor_and_forward_returns(factor, price, quantiles=5)print factor_datamean_return_by_q, std_err_by_q = alphalens.performance.mean_return_by_quantile(factor_data, by_date=True)alphalens.plotting.plot_cumulative_returns_by_quantile(mean_return_by_q, 5)plt.show()
