最近想知道在全市场中跌了1-10天的情况下,未来1-10天涨跌情况,进而分析动量以及动量翻转的效果
以下是分析的代码
import csv import pandas as pd import numpy as np import math def decrease_day(dayBefore,dayAfter): df = pd.read_csv('E:/slowsnowball/2015.csv') df = df.set_index('secID') stockList = df.index Yield = [] for stk in stockList: for d in range(len(df.columns)-dayBefore): flag = True for tempD in range(dayBefore): if(float(df[df.columns[d+tempD+1]][stk])>=float(df[df.columns[d+tempD]][stk])): flag = False break if(flag==True): try: temp = 1 for i in range(dayAfter): beforePrice = float(df[df.columns[d+dayBefore+i]][stk]) afterPrice = float(df[df.columns[d+dayBefore+i+1]][stk]) YieldTemp = 1.0000+(afterPrice-beforePrice)/beforePrice temp*=YieldTemp YieldTemp = math.pow(temp,float(1/dayAfter))-1 Yield.append(YieldTemp) except: pass Yield = [x for x in Yield if str(x) != 'nan'] return (np.mean(Yield)) def main(): dayBefore = 10 dayAfter = 10 for db in range(dayBefore): #for db in range(8, dayBefore): for da in range(dayAfter): Yield_mean = decrease_day(db+1,da+1) print("Before: "+str(db+1)+' '+"After: "+str(da+1)+' '+'Yield_mean: '+str(Yield_mean)) main()
结果表明:
在市场活跃时期,反转现象表现的尤其明显(2014~2016年),而且前期偏离力度越大则反转力度越大。2014~2016三年的样本表明,连续下跌十天以后下一个交易日平均都能取得5%以上的正收益。2009~2013五年,反转的周期较短,力度也较小,说明这些年份交易不够活跃。
但是现在处理的时候是将全市场收益率进行平均了,前两天对这个方法查了相关的论文,每一支股都有自己的周期变化,那么是否全市场取平均是不是欠妥,是否应只取一只股票,或是聚类后同类型的股票取平均,其次不仅是跌了多少天,还有跌幅、下跌速度的变化等一些因素,还值得进一步思考