#动量策略(改进策略请咨询博主)
import pandas as pd
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt
Mdata = pd.read_csv(r'C:\Users\Lenovo\Desktop\work\量化投资\TRD_Mnth.csv')
Mdata.info() #or use Mdata.dtypes
Mdata.head()
Mdata.tail()
Mdata['Trdmnt1']=pd.to_datetime(Mdata.Trdmnt)
Mdata['date2']=Mdata.Trdmnt1.dt.year
Mdata['date3']=Mdata.Trdmnt1.dt.month
Mdata['date']=pd.PeriodIndex(year=Mdata.date2,month=Mdata.date3,day=Mdata.Clsdt, freq="D")
del Mdata['Trdmnt1']
del Mdata['date2']
del Mdata['date3']
del Mdata['Clsdt']
#1.calculate returen_6month
Mdata=Mdata.sort_values(by=['Stkcd','Trdmnt'],ascending=[True,True])
Mdata['ret_lag6']=(Mdata.Mclsprc-Mdata.Mclsprc.shift(6))/Mdata.Mclsprc.shift(6)
Mdata.loc[Mdata.loc[:,'date']<=dt.datetime(2011,6,30),'ret_lag6']=np.NaN
#2.select 10 stocks with highest return_6month
Mdata2=Mdata.dropna(subset=['ret_lag6']).loc[:,['Trdmnt','Stkcd','ret_lag6']]
Mdata2=Mdata2.sort_values(by=[