2009年至2016年全市场的动量以及动量翻转分析

最近想知道在全市场中跌了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五年,反转的周期较短,力度也较小,说明这些年份交易不够活跃。

但是现在处理的时候是将全市场收益率进行平均了,前两天对这个方法查了相关的论文,每一支股都有自己的周期变化,那么是否全市场取平均是不是欠妥,是否应只取一只股票,或是聚类后同类型的股票取平均,其次不仅是跌了多少天,还有跌幅、下跌速度的变化等一些因素,还值得进一步思考

原文地址:https://www.cnblogs.com/yunerlalala/p/6697694.html