一、均值回归策略
1、什么是回归策略
二、归一标准化
import numpy as np
a = np.random.uniform(100,5000,1000)
b = np.random.uniform(0.1,3.0,1000)
(a.min(),a.max())
输出
预处理
(a - a.min())/(a.max()-a.min())
输出
预处理
aa = (a - a.min())/(a.max()-a.min())
bb = (b - b.min())/(b.max()-b.min())
(aa.min(),aa.max())
输出
画图
aaa = (a - a.mean())/a.std()
import matplotlib.pyplot as plt
%matplotlib
plt.hist(aaa)
输出
二、均值回归策略代码
# 导入函数库
import jqdata
import math
import numpy as np
import pandas as pd def initialize(context):set_benchmark('000002.XSHG')set_option('use_real_price', True)set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')g.security = get_index_stocks('000002.XSHG')g.ma_days = 30 g.stock_num = 10 run_monthly(handle, 1)def handle(context):sr = pd.Series(index=g.security)for stack in sr.index:ma = attribute_history(stack,g.stock_days)['close'].meanp = get_current_data()[stack].day_openratio = (ma-p)/masr[stock] = ratiotohold = sr.nlarges(g.stock_num).index.valuesfor stock in context.portfolio/positions:if stock not in tohold:order_target_value(stock, 0)tobuy = [stock for stock in tohold if stock not in context.portfolio.positions]if len(tobuy)>0:cash = context.portfolio.available_cashcash_every_stock = cash / len(tobuy)for stock in tobuy:order_value(stock,cash_every_stock)