金融量化分析【day112】:均值回归策略
一、均值回归策略
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'].mean
p = get_current_data()[stack].day_open
ratio = (ma-p)/ma
sr[stock] = ratio
tohold = sr.nlarges(g.stock_num).index.values
for 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_cash
cash_every_stock = cash / len(tobuy)
for stock in tobuy:
order_value(stock,cash_every_stock)
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

浙公网安备 33010602011771号