美文网首页Wolfram...
使用Mathematica计算A股指数的周期

使用Mathematica计算A股指数的周期

作者: 破旧的大卡车 | 来源:发表于2018-06-30 21:50 被阅读130次

经济周期是一种理论认为诸如股票市场的波动具有周期性, 那么我们能不能通过分析A股指数来得到具体的周期大小呢?

假设我们和前面一篇文章一样, 利用tushare获得了A股指数的每日收盘价格。我们作如下步骤来利用MMA计算其波动周期:

  1. 导入A股指数的日期和收盘价格

    SetDirectory["E:\\cygwin64   \\home\\van\\development\\stock"];
    data = Import["AS_index.csv"];
    data[[1 ;; 2]] // TableForm
    

    输出为

    date date high low close volume amount
    2018-06-28 2959.67 2913.97 2918.64 11821880600 129596964939
  2. 计算每月的平均值

    t = data[[2 ;;, 1]];
    stdt = ToExpression@StringSplit[#, "-"] & /@ t;
    stdt[[1 ;; 2]]
    
    v = data[[2 ;;, 5]];
    
    tv = Transpose[{Cases[stdt, {x_, y_, z_} -> {x, y, 1}], v}];
    gatherByDate = GatherBy[tv, First];
    stdData = Table[{x[[1, 1]], N[Mean[x[[All, -1]]]]}, {x, gatherByDate}];
    DateListPlot[stdData]
    

    这里的过程是, 首先stdt表示将日期转换为标准的{2018,6,29}这样的格式; 然后将月份统一变成同一个月的第一天

    Cases[stdt, {x_, y_, z_} -> {x, y, 1}]
    

    接着我们将新的数据按照相同的月份来收集(GatherBy), 最后我们计算了同一个月A股收盘价格的平均值并作图。

    A股指数月平均图
  3. 利用离散Fourier变换绘制频谱图

    {montht, monthMeanv} = Transpose[stdData];
    DateListPlot[Transpose[{montht, Abs[Fourier[monthMeanv]]}],  PlotRange -> Full]
    

    得到按照日期的频谱图


    A股指数月平均日期频谱图

或者按照数据顺序的频谱图

ListLinePlot[Abs[Fourier[Reverse@monthMeanv]], PlotRange -> Full]
A股指数月平均数据顺序频谱图

由此可见, A股指数并没有明显的周期性。

相关文章

网友评论

    本文标题:使用Mathematica计算A股指数的周期

    本文链接:https://www.haomeiwen.com/subject/yqexuftx.html