@Channelchan
2017-04-15T16:48:09.000000Z
字数 2137
阅读 2119
(-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 alphas
from fxdayu_data.data import MongoHandler
from datetime import datetime
import pandas as pd
from fxdayu.api import all_table
import matplotlib.pyplot as plt
import 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_data
mean_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()