美文网首页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