动量策略 - Momentum Strategy
0. 引库
import numpy as np
import pandas as pd
import tushare as ts
import matplotlib. pyplot as plt
import seaborn
plt. style. use( 'seaborn' )
import matplotlib as mpl
% matplotlib inline
mpl. rcParams[ 'font.family' ] = 'serif'
import warnings; warnings. simplefilter( 'ignore' )
1. 数据准备 & 回测准备
data = ts. get_k_data( 'hs300' , start = '2010-01-01' , end= '2017-06-30' ) [ [ 'date' , 'close' ] ]
data. rename( columns= {
'close' : 'price' } , inplace= True )
data. set_index( 'date' , inplace = True )
data. head( )
price
date
2010-01-04
3535.229
2010-01-05
3564.038
2010-01-06
3541.727
2010-01-07
3471.456
2010-01-08
3480.130
2. 策略开发思路
data[ 'returns' ] = np. log( data[ 'price' ] / data[ 'price' ] . shift( 1 ) )
data. head( )
price
returns
date
2010-01-04
3535.229
NaN
2010-01-05
3564.038
0.008116
2010-01-06
3541.727
-0.006280
2010-01-07
3471.456
-0.020040
2010-01-08
3480.130
0.002496
data[ 'position' ] = np. sign( data[ 'returns' ] )
data. head( )
price
returns
position
date
2010-01-04
3535.229
NaN
NaN
2010-01-05
3564.038
0.008116
1.0
2010-01-06
3541.727
-0.006280
-1.0
2010-01-07</