精华内容
下载资源
问答
  • 简单移动平均 & 指数移动平均

    千次阅读 2019-02-27 14:30:13
    当我想我的指数移动平均的历史加权的质心和N窗口简单移动平均质心是一样的。 选取 α \alpha α 的方法 × 指定指数移动平均的质心 令质心为c,则 c = 1 α c=\frac{1}{\alpha} c = α 1 ​ ,即 α = 1 c \...

    参考自

    简单移动平均(Simple moving average)

    数据p1,p2,...,pMp_1, p_2, ..., p_M的窗口为n的简单移动平均:
    pSM=pM+pM1+...+pM(n1)n=1ni=0n1pMi\overline{p}_{SM}=\frac{p_M+p_{M-1}+...+p_{M-(n-1)}}{n}=\frac{1}{n}\sum_{i=0}^{n-1}{p_{M-i}}

    迭代的形式:
    pSM=pSM,prev+pMnpMNn\overline{p}_{SM}=\overline{p}_{SM, prev}+\frac{p_M}{n}-\frac{p_{M-N}}{n}

    实现

    简单实现

    import pandas as pd
    s = [1,2,3,5,6,10,12,14,12,30]
    # 等价于data = pd.DataFrame(s)
    data = pd.Series(s)
    # 窗口为3的简单移动平均
    smv_3=data.rolling(window=3).mean()
    
    print('时间序列数据:')
    print(data)
    print('\n窗口为3的简单移动平均:')
    print(smv_3)
    

    结果:

    时间序列数据:
    0     1
    1     2
    2     3
    3     5
    4     6
    5    10
    6    12
    7    14
    8    12
    9    30
    dtype: int64
    
    窗口为3的简单移动平均:
    0          NaN
    1          NaN
    2     2.000000
    3     3.333333
    4     4.666667
    5     7.000000
    6     9.333333
    7    12.000000
    8    12.666667
    9    18.666667
    dtype: float64
    

    平均结果的NaN和数据中的NaN怎么办?

    min_periods字段

    平均结果的NaN
    import pandas as pd
    s = [1,2,3,5,6,10,12,14,12,30]
    data = pd.Series(s)
    # data = pd.DataFrame(s)
    # 窗口为3的简单移动平均,min_periods指的是如ugo没有3个数,有2个数都可以做简单移动平均
    smv_3=data.rolling(window=3, min_periods=2).mean()
    
    print('时间序列数据:')
    print(data)
    print('\n窗口为3的简单移动平均:')
    print(smv_3)
    

    结果:

    时间序列数据:
    0     1
    1     2
    2     3
    3     5
    4     6
    5    10
    6    12
    7    14
    8    12
    9    30
    dtype: int64
    
    窗口为3的简单移动平均:
    0          NaN
    1     1.500000
    2     2.000000
    3     3.333333
    4     4.666667
    5     7.000000
    6     9.333333
    7    12.000000
    8    12.666667
    9    18.666667
    dtype: float64
    
    
    数据中的NaN
    import pandas as pd
    # 第三个数据是NaN
    s = [1,2,None,5,6,10,12,14,12,30]
    data = pd.Series(s)
    # data = pd.DataFrame(s)
    # 窗口为3的简单移动平均
    smv_3=data.rolling(window=3, min_periods=2).mean()
    
    print('时间序列数据:')
    print(data)
    print('\n窗口为3的简单移动平均:')
    print(smv_3)
    
    

    结果:

    时间序列数据:
    0     1.0
    1     2.0
    2     NaN
    3     5.0
    4     6.0
    5    10.0
    6    12.0
    7    14.0
    8    12.0
    9    30.0
    dtype: float64
    
    窗口为3的简单移动平均:
    0          NaN
    1     1.500000
    2     1.500000
    3     3.500000
    4     5.500000
    5     7.000000
    6     9.333333
    7    12.000000
    8    12.666667
    9    18.666667
    dtype: float64
    

    指数移动平均(Exponential moving average)

    数据p1,p2,...,pMp_1, p_2, ..., p_M的指数移动平均的迭代形式
    pEM={p1M=1αpM+(1α)pSM,prevM1 \overline{p}_{EM}=\left\{ \begin{array}{rcl} p_1 && {M=1}\\ \alpha p_M+(1-\alpha)\overline{p}_{SM, prev} && {M \neq 1} \end{array} \right.

    如何理解指数移动平均

    把指数移动的公式展开:
    pEM=α(pM+(1α)pM1+(1α)2pM2+...+(1α)M1p1)\overline{p}_{EM}=\alpha(p_M+(1-\alpha)p_{M-1}+(1-\alpha)^2p_{M-2}+...+(1-\alpha)^{M-1}p_1)

    M>>1M>>1时,他其实就是一个历史数据的指数加权平均:
    pEM=i=0+α(1α)ipMi\overline{p}_{EM}=\sum_{i=0}^{+\infin}\alpha(1-\alpha)^{i}p_{M-i}

    时间 T	:近->远
    值		: p_M->P_1
    权重		: w_0->w_{M-1}
    

    我们可以发现权重pMip_{M-i}对应的权重wi=α(1α)iw_i=\alpha(1-\alpha)^{i},我们计算所有权重之和看是否为1:i=0wi=α(1+(1α)+(1α)2+...)=α11(1α)=1\sum_{i=0}^{\infin}{w_i}=\alpha(1+(1-\alpha)+(1-\alpha)^2+...)=\alpha\frac{1}{1-(1-\alpha)}=1

    因此,我们用迭代的方式计算指数移动平均相当于把权wi=α(1α)iw_i=\alpha(1-\alpha)^i赋给过去的值。

    而下面考察权重的变化,如果α\alpha足够小,则
    w1/α=α(1α)1/α=α1e=36.8%αw_{1/\alpha}=\alpha(1-\alpha)^{1/\alpha}=\alpha\frac{1}{e}=36.8\%\alpha

    指数移动平均与简单移动平均的关系

    可以通过指数移动平均与简单移动平均的关系来知道α\alpha的选取。

    注:下面质心的推导的坐标系是这样的:

    0------>1------>2------>...
    	   	p_M     p_{M_1}
    

    选取α\alpha的方法 × 两者的质心相同

    简单移动平均的质心为1+N2\frac{1+N}{2}
    指数移动平均的质心为α[1+2(1α)+3(1α)2+...]=1α\alpha[1+2(1-\alpha)+3(1-\alpha)^2+...]=\frac{1}{\alpha}

    令二者的质心相同,则1+N2=1α\frac{1+N}{2}=\frac{1}{\alpha},即α=2N+1\alpha=\frac{2}{N+1}。当我想我的指数移动平均的历史加权的质心和N窗口简单移动平均质心是一样的。

    选取α\alpha的方法 × 指定指数移动平均的质心

    令质心为c,则c=1αc=\frac{1}{\alpha},即α=1c\alpha=\frac{1}{c}

    例子,我令最新的数据为质心,则c=1,此时α=11=1\alpha=\frac{1}{1}=1;

    注意如果质心选择的原点不一定会有影响

    p_M对应坐标1是我们之前的推导方式

    0------>1------>2------>...
    	   	p_M     p_{M_1}
    

    我们现在变为p_M对应坐标0

    0------>1------>2------>...
    p_M     p_{M_1}
    

    例子,我令最新的数据为质心,则c=0c'=0,此时有c=c+1c=c'+1,则α=1c=1c+1=1\alpha=\frac{1}{c}=\frac{1}{c'+1}=1

    选取α\alpha的方法 × 最近的N个数所累计的权重和

    拖尾的权重{wN,wN+1,...w_N, w_{N+1}, ...}之和:
    wn,...=α((1α)N+(1α)N+1,...)=a(1α)N(1+(1α)+...)=(1α)Nw_{n, ...}=\alpha((1-\alpha)^N+(1-\alpha)^{N+1}, ...)=a(1-\alpha)^N(1+(1-\alpha)+...)=(1-\alpha)^N

    最近的N个数所累计的权重和:
    w0,..,n1=1wn,...=1(1α)Nw_{0, .., n-1}=1-w_{n, ...}=1-(1-\alpha)^N

    • 如何选取α\alpha,我们可以说让最近N个数所累计的权重和为刚刚12\frac{1}{2},此时12=1(1α)N\frac{1}{2}=1-(1-\alpha)^N,所以α=1eln(0.5)/N\alpha=1-e^{\ln(0.5)/N}

    • α\alpha足够小时,w0,..,n1=1(1α)N=1((1α)1/α)αN=1eαNw_{0, .., n-1}=1-(1-\alpha)^N=1-((1-\alpha)^{1/-\alpha})^{-\alpha N}=1-e^{-\alpha N}

    • α\alpha(足够小),则意味着1α\frac{1}{\alpha}个最近的数据包含了约1e1=63.2%1-e^{-1}=63.2\%的权重

    偏差修正

    偏差修正的主要目的是为了提高指数加权平均的精确度,主要是针对前期的加权平均值的计算精度。

    下面的例子中α=0.1;β=1α=0.9\alpha=0.1;\beta=1-\alpha=0.9观察到的序列为{40, 50},而的计算的指数平均为{4, 7.1},这样的结果精度是很差的。
    在这里插入图片描述

    下面我们进行修正偏差,得到修正指数平均vtv_t'
    vt=vt1βtv_t'=\frac{v_t}{1-\beta^t}

    因此,

    原序列:{40, 50}
    指数平均序列:{4, 7.1}
    修正偏差后的指数平均序列:{40, 37.37}
    

    实现

    Series.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0)
    

    α\alpha选择参数

    span, com, halflife分别对应前面所说的选择方法

    com : float. optional (注意,这里的com,第一个元素是对应0的)
    Center of mass: \alpha = 1 / (1 + com),
    
    span : float, optional
    Specify decay in terms of span, \alpha = 2 / (span + 1)
    
    halflife : float, optional
    Specify decay in terms of halflife, \alpha = 1 - exp(log(0.5) / halflife)
    

    基本实现

    # adjust=True的情况
    import pandas as pd
    s = [40, 50]
    data = pd.Series(s)
    # data = pd.DataFrame(s)
    # span=19对应a=0.1
    emv=data.ewm(span=19).mean()
    ans_1=0.1*50+0.9*40
    print('时间序列数据:')
    print(data)
    print('\na=0.1指数移动平均:')
    print(emv)
    print('ans of time 1:', ans_1)
    
    时间序列数据:
    0    40
    1    50
    dtype: int64
    
    a=0.1指数移动平均:
    0    40.000000
    1    45.263158
    dtype: float64
    ans of time 1: 41.0
    

    我们发现计算结果,跟我们推到的结果ans_1不一致。原因在于,我们之前关于移动评价的公式是假设权重之和为1,但这只有是无穷级数求和的结果。

    • 真正的公式(即adjust=True)应该是
      yt=xt+(1α)xt1+(1α)2xt2+...+(1α)tx01+(1α)+(1α)2+...+(1α)ty_t = \frac{x_t+(1-\alpha)x_{t-1}+(1-\alpha)^2x_{t-2}+...+(1-\alpha)^tx_0}{1+(1-\alpha)+(1-\alpha)^2+...+(1-\alpha)^t}
    • 快速迭代的公式(即adjust=False)应该是
      y0=x0,yt=(1α)yt1+αxty_0=x_0, \\ y_t=(1-\alpha)y_{t-1}+\alpha x_t
    • 只有在t足够大时,adjust=False的结果才会接近adjust=True的结果,而adjust=False计算得快,但有一定精度损失
    import pandas as pd
    s = [40, 50]
    data = pd.Series(s)
    # data = pd.DataFrame(s)
    # span=19对应a=0.1
    emv=data.ewm(span=19, adjust=False).mean()
    ans_1=0.1*50+0.9*40
    print('时间序列数据:')
    print(data)
    print('\na=0.1指数移动平均:')
    print(emv)
    print('ans of time 1:', ans_1)
    
    

    结果:

    时间序列数据:
    0    40
    1    50
    dtype: int64
    
    a=0.1指数移动平均:
    0    40.0
    1    41.0
    dtype: float64
    ans of time 1: 41.0
    

    数据中有NaN怎么办?

    参考前面的公式

    • When ignore_na is False (default), weights are based on absolute positions. For example, the weights of x and y used in calculating the final weighted average of [x, None, y] are (1-alpha)**2 and 1 (if adjust is True), and (1-alpha)**2 and alpha (if adjust is False).

    • When ignore_na is True (reproducing pre-0.15.0 behavior), weights are based on relative positions. For example, the weights of x and y used in calculating the final weighted average of [x, None, y] are 1-alpha and 1 (if adjust is True), and 1-alpha and alpha (if adjust is False).

    个人认为,四种搭配中这两种是比较合理的:

    1. ignore_na=True, adjust=False
    2. ignore_na=False, adjust=True
    

    下面的例子都考虑adjust=False的情况

    # ignore_na=True,忽略NaN
    import pandas as pd
    s = [40, None, None, 50, None]
    data = pd.Series(s)
    # data = pd.DataFrame(s)
    # span=19对应a=0.1
    emv=data.ewm(span=19, adjust=False, ignore_na=True).mean()
    ans_1=0.1*50+0.9*40
    print('时间序列数据:')
    print(data)
    print('\na=0.1指数移动平均:')
    print(emv)
    print('ans of time 4:', ans_1)
    
    

    结果:

    时间序列数据:
    0    40.0
    1     NaN
    2     NaN
    3    50.0
    4     NaN
    dtype: float64
    
    a=0.1指数移动平均:
    0    40.0
    1    40.0
    2    40.0
    3    41.0
    4    41.0
    dtype: float64
    ans of time 4: 41.0
    
    
    # ignore_na=False,不忽略NaN
    import pandas as pd
    s = [40, None, None, 50, None]
    data = pd.Series(s)
    # data = pd.DataFrame(s)
    # span=19对应a=0.1
    emv=data.ewm(span=19, adjust=False, ignore_na=False).mean()
    ans_1=(0.1*50+(0.9**3)*40)/(0.1+0.9**3)
    print('时间序列数据:')
    print(data)
    print('\na=0.1指数移动平均:')
    print(emv)
    print('ans of time 4:', ans_1)
    
    

    结果:

    时间序列数据:
    0    40.0
    1     NaN
    2     NaN
    3    50.0
    4     NaN
    dtype: float64
    
    a=0.1指数移动平均:
    0    40.000000
    1    40.000000
    2    40.000000
    3    41.206273
    4    41.206273
    dtype: float64
    ans of time 4: 41.20627261761158
    

    二元移动窗口函数

    一些统计计算符,比如相关性和协方差,需要在两个时间序列上进行计算。例如,经济分析通常喜欢比较一只股票与基础指数标普500之间的相关性。

    更多

    展开全文
  • 移动平均法又称滑动平均法、滑动平均模型法 移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速...

    ____tz_zs

    注:本博客中关于概念的解释部分均来自 MBA智库百科


    一、移动平均法(Moving average,MA)

    移动平均法又称滑动平均法、滑动平均模型法

    移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效地消除预测中的随机波动,是非常有用的。移动平均法根据预测时使用的各元素的权重不同,可以分为:简单移动平均和加权移动平均。

    移动平均法是一种简单平滑预测技术,它的基本思想是:根据时间序列资料、逐项推移,依次计算包含一定项数的序时平均值,以反映长期趋势的方法。因此,当时间序列的数值由于受周期变动和随机波动的影响,起伏较大,不易显示出事件的发展趋势时,使用移动平均法可以消除这些因素的影响,显示出事件的发展方向与趋势(即趋势线),然后依趋势线分析预测序列的长期趋势。


    (一)简单移动平均法

    简单移动平均的各元素的权重都相等。简单的移动平均的计算公式如下: 

    Ft=(At-1+At-2+At-3+…+At-n)/n

    式中,

    Ft--对下一期的预测值;

    n--移动平均的时期个数;

    At-1--前期实际值;

    At-2,At-3和At-n分别表示前两期、前三期直至前n期的实际值。

    小Demo

    .

    import matplotlib.pyplot as plt
    
    # 简单移动平均法
    def ma(list2):
        n = len(list2)
        sum = 0
        for i in list2:
            sum += i
        result = sum / n
        return result
    
    def answer1(list1, n):
        # 简单移动平均法
        listMA = []  # 简单移动平均值的列表
        for i in range(n - 1, len(list1)):
            # print(i)
            list2 = (list1[i - (n - 1):i + 1])
            listMA.append(ma(list2))
        print("简单移动平均值的列表:{}".format(listMA))
        # 最后的移动平均值可做为下一个数的预测
        x = listMA[-1]
        print("下一个数的预测:{}".format(x))
        # 画图
        plt.scatter(list(range(len(listMA))), listMA)
        plt.show()
    
    if __name__ == '__main__':
        list1 = [1, 2, 4, 5, 6, 8, 10, 12, 14, 16, 19, 24, 29]  # 13个
        n = 3  # 移动平均期数
    
        answer1(list1, n)  # 简单移动平均法
    

    .

    运行结果:

    .

    简单移动平均值的列表:[2.3333333333333335, 3.6666666666666665, 5.0, 6.333333333333333, 8.0, 10.0, 12.0, 14.0, 16.333333333333332, 19.666666666666668, 24.0]
    下一个数的预测:24.0

    .

    简单移动平均值散点图:



    (二)加权移动平均法

    加权移动平均给固定跨越期限内的每个变量值以不同的权重。其原理是:历史各期产品需求的数据信息对预测未来期内的需求量的作用是不一样的。除了以n为周期的周期性变化外,远离目标期的变量值的影响力相对较低,故应给予较低的权重。 加权移动平均法的计算公式如下:

    Ft=w1At-1+w2At-2+w3At-3+…+wnAt-n

    式中,

    w1--第t-1期实际销售额的权重;

    w2--第t-2期实际销售额的权重;

    wn--第t-n期实际销售额的权重;

    n--预测的时期数;w1+ w2+…+ wn=1

    在运用加权平均法时,权重的选择是一个应该注意的问题。经验法和试算法是选择权重的最简单的方法。一般而言,最近期的数据最能预示未来的情况,因而权重应大些。例如,根据前一个月的利润和生产能力比起根据前几个月能更好的估测下个月的利润和生产能力。但是,如果数据是季节性的,则权重也应是季节性的。

    小Demo

    .

    import matplotlib.pyplot as plt
    
    
    # 加权移动平均法
    def wma(list2, w):
        n = len(list2)
        sum = 0
        for i in n:
            sum += list2[i] * w[i]
        return sum
    
    def answer2(list1, n):
        # 加权移动平均法
        w = [0.2, 0.3, 0.5]  # 各期的权重
        listWMA = []  # 加权移动平均值的列表
        for i in range(n - 1, len(list1)):
            # print(i)
            list2 = (list1[i - (n - 1):i + 1])
            listWMA.append(ma(list2))
        print("加权移动平均值的列表:{}".format(listWMA))
        # 最后的移动平均值可做为下一个数的预测
        x = listWMA[-1]
        print("下一个数的预测:{}".format(x))
        # 画图
        plt.scatter(list(range(len(listWMA))), listWMA)
        plt.show()
    
    if __name__ == '__main__':
        list1 = [1, 2, 4, 5, 6, 8, 10, 12, 14, 16, 19, 24, 29]  # 13个
        n = 3  # 移动平均期数
    
        answer2(list1, n)  # 加权移动平均法

    运行结果:

    .

    加权移动平均值的列表:[2.3333333333333335, 3.6666666666666665, 5.0, 6.333333333333333, 8.0, 10.0, 12.0, 14.0, 16.333333333333332, 19.666666666666668, 24.0]
    下一个数的预测:24.0

    .

    加权移动平均值散点图:

    .


    (三)移动平均法的优缺点

    使用移动平均法进行预测能平滑掉需求的突然波动对预测结果的影响。但移动平均法运用时也存在着如下问题:

    1、 加大移动平均法的期数(即加大n值)会使平滑波动效果更好,但会使预测值对数据实际变动更不敏感;

    2、 移动平均值并不能总是很好地反映出趋势。由于是平均值,预测值总是停留在过去的水平上而无法预计会导致将来更高或更低的波动;

    3、 移动平均法要由大量的过去数据的记录。


    二、指数平滑法(Exponential Smoothing,ES)

    指数平滑法是布朗(Robert G..Brown)所提出,布朗(Robert G..Brown)认为时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近的过去态势,在某种程度上会持续到最近的未来,所以将较大的权数放在最近的资料。

    指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测方法中,指数平滑是用得最多的一种。简单的全期平均法是对时间数列的过去数据一个不漏地全部加以同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期资料更大的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。

    也就是说指数平滑法是在移动平均法基础上发展起来的一种时间序列分析预测法,它是通过计算指数平滑值,配合一定的时间序列预测模型对现象的未来进行预测。其原理是任一期的指数平滑值都是本期实际观察值与前一期指数平滑值的加权平均。


    (一)指数平滑法的基本公式

    S_t=a\cdot y_t+(1-a)S_{t-1} 

    式中,

    St--时间t的平滑值;

    yt--时间t的实际值;

    St − 1--时间t-1的平滑值;

    a--平滑常数,其取值范围为[0,1];

    由该公式可知:

    1.St是yt和 St − 1的加权算数平均数,随着a取值的大小变化,决定yt和 St − 1对St的影响程度,当a取1时,St = yt;当a取0时,St = St − 1。

    2.St具有逐期追溯性质,可探源至St − t + 1为止,包括全部数据。其过程中,平滑常数以指数形式递减,故称之为指数平滑法。指数平滑常数取值至关重要。平滑常数决定了平滑水平以及对预测值与实际结果之间差异的响应速度。平滑常数a越接近于1,远期实际值对本期平滑值影响程度的下降越迅速;平滑常数a越接近于 0,远期实际值对本期平滑值影响程度的下降越缓慢。由此,当时间数列相对平稳时,可取较大的a;当时间数列波动较大时,应取较小的a,以不忽略远期实际值的影响。生产预测中,平滑常数的值取决于产品本身和管理者对良好响应率内涵的理解。

    3.尽管St包含有全期数据的影响,但实际计算时,仅需要两个数值,即yt和 St − 1,再加上一个常数a,这就使指数滑动平均具逐期递推性质,从而给预测带来了极大的方便。

    4.根据公式S_1=a\cdot y_1+(1-a)S_0,当欲用指数平滑法时才开始收集数据,则不存在y0。无从产生S0,自然无法据指数平滑公式求出S1,指数平滑法定义S1为初始值。初始值的确定也是指数平滑过程的一个重要条件。

    如果能够找到y1以前的历史资料,那么,初始值S1的确定是不成问题的。数据较少时可用全期平均、移动平均法;数据较多时,可用最小二乘法。但不能使用指数平滑法本身确定初始值,因为数据必会枯竭。

    如果仅有从y1开始的数据,那么确定初始值的方法有:

    1)取S1等于y1;

    2)待积累若干数据后,取S1等于前面若干数据的简单算术平均数,如:S1=(y1+ y2+y3)/3等等。


    (二)指数平滑的预测公式

    据平滑次数不同,指数平滑法分为:一次指数平滑法、二次指数平滑法和三次指数平滑法等。

    (1) 一次指数平滑预测

    当时间数列无明显的趋势变化,可用一次指数平滑预测。其预测公式为:

    yt+1'=ayt+(1-a)yt' 

    式中,

    yt+1'--t+1期的预测值,即本期(t期)的平滑值St ;

    yt--t期的实际值;

    yt'--t期的预测值,即上期的平滑值St-1 。

    该公式又可以写作:yt+1'=yt'+a(yt- yt')。可见,下期预测值又是本期预测值与以a为折扣的本期实际值与预测值误差之和。

    (2) 二次指数平滑预测

    二次指数平滑是对一次指数平滑的再平滑。它适用于具线性趋势的时间数列。其预测公式为:

    yt+m=(2+am/(1-a))yt'-(1+am/(1-a))yt=(2yt'-yt)+m(yt'-yt) a/(1-a)

    式中,

    yt= ayt-1'+(1-a)yt-1

    显然,二次指数平滑是一直线方程,其截距为:(2yt'-yt),斜率为:(yt'-yt) a/(1-a),自变量为预测天数。

    (3) 三次指数平滑预测

    三次指数平滑预测是二次平滑基础上的再平滑。其预测公式是:

    yt+m=(3yt'-3yt+yt)+[(6-5a)yt'-(10-8a)yt+(4-3a)yt]*am/2(1-a)2+ (yt'-2yt+yt')*a2m2/2(1-a)2

    式中,

    yt=ayt-1+(1-a)yt-1

    它们的基本思想都是:预测值是以前观测值的加权和,且对不同的数据给予不同的权,新数据给较大的权,旧数据给较小的权。

    (三)指数平滑法的趋势调整

    一段时间内收集到的数据所呈现的上升或下降趋势将导致指数预测滞后于实际需求。通过趋势调整,添加趋势修正值,可以在一定程度上改进指数平滑预测结果。

    调整后的指数平滑法的公式为:

    包含趋势预测(YITt)=新预测(Yt)+趋势校正(Tt)

    进行趋势调整的指数平滑预测有三个步骤:

    1、 利用前面介绍的方法计算第t期的简单指数平滑预测(Yt);

    2、 计算趋势。其公式为: Tt=(1-b)Tt-1+b(Yt-Yt-1)其中,

    Tt=第t期经过平滑的趋势;

    Tt-1=第t期上期经过平滑的趋势;

    b=选择的趋势平滑系数;

    Yt=对第t期简单指数平滑预测;

    Yt-1=对第t期上期简单指数平滑预测。

    3、计算趋势调整后的指数平滑预测值(YITt)。计算公式为:YITt=Yt+Tt。


    .

    import matplotlib.pyplot as plt
    
    
    # 一次指数平滑预测
    def es1(list3, t, a):
        if t == 0:
            return list3[0]  # 初始的平滑值取实际值
    
        return a * list3[t - 1] + (1 - a) * es1(list3, t - 1, a)  # 递归调用 t-1 → 12
    
    
    # 二次指数平滑预测
    def es2(list3, t, a):
        if t == 0:
            return list3[0]
    
        return (a * es2(list3, t - 1, a) + (1 - a) * list3[t - 1])
    
    
    def answer3(list2):
        # 指数平滑法
        a = 0.8  # 平滑常数
        listES = []  # 指数平滑值的列表
        for i in range(len(list2)):
            if i == 0:
                listES.append(list2[i])
                continue
            s = a * list2[i] + (1 - a) * listES[-1]
            listES.append(s)
        print("指数平滑值的列表:{}".format(listES))
    
        # 画图
        plt.scatter(list(range(len(listES))), listES)
        plt.show()
    
        # 一次指数平滑预测
        t = len(list2)  # 预测的时期 13
        x = es1(list2, t, a)
        print("下一个数的一次指数平滑预测:{}".format(x))
    
        # 二次指数平滑预测
        m = 3  # 预测的值为之后的第m个
        yt = es2(list2, t - 1, a)
        ytm = listES[t - 2]
        esm = ((2 * ytm - yt) + m * (ytm - yt) * a / (1 - a))
        print("之后的第{}个数的二次指数平滑预测:{}".format(m, esm))
    
    
    if __name__ == '__main__':
        list1 = [1, 2, 4, 5, 6, 8, 10, 12, 14, 16, 19, 24, 29]  # 13个
        n = 3  # 移动平均期数
    
        answer3(list1)  # 指数平滑法
    
    
    .

    运行结果:

    .

    指数平滑值的列表:[1, 1.8, 3.56, 4.712, 5.742400000000001, 7.5484800000000005, 9.509696, 11.5019392, 13.50038784, 15.500077568, 18.300015513600002, 22.860003102720004, 27.772000620544002]
    下一个数的一次指数平滑预测:27.772000620544002
    之后的第3个数的二次指数平滑预测:137.5839514214401

    .

    指数平滑值的散点图:


    .

    展开全文
  • 在深度学习中,经常会使用EMA(指数移动平均)这个方法对模型的参数做平均,以求提高测试指标并增加模型鲁棒。 EMA的定义 指数移动平均(Exponential Moving Average)也叫权重移动平均(Weighted Moving Average...

    在深度学习中,经常会使用EMA(指数移动平均)这个方法对模型的参数做平均,以求提高测试指标并增加模型鲁棒。

    EMA的定义

    指数移动平均(Exponential Moving Average)也叫权重移动平均(Weighted Moving Average),是一种给予近期数据更高权重的平均方法。

    假设我们有n个数据: [\theta_1, \theta_2, ...,\theta_n]

    • 普通的平均数: \bar v = \frac{1}{n} \sum_{i=1}^{n} \theta_i
    • EMA: v_t = \beta \cdot v_{t-1} + (1-\beta) \cdot \theta_t ,其中, v_t 表示前t条的平均值 ( v_0=0 ), \beta 是加权权重值 (一般设为0.9-0.999)。

    Andrew Ng在Course 2 Improving Deep Neural Networks中讲到,EMA可以近似看成过去1/(1-\beta)个时刻v值的平均。

    普通的过去n时刻的平均是这样的:

                                                                                   v_t = \frac{(n-1) \cdot v_{t-1} + \theta_t}{n}

    类比EMA,可以发现当\beta=\frac{n-1}{n}时,两式形式上相等。需要注意的是,两个平均并不是严格相等的,这里只是为了帮助理解。

    实际上,EMA计算时,过去1/(1-\beta)个时刻之前的数值平均会decay到\frac{1}{e}的加权比例,证明如下。

    如果将这里的v_t展开,可以得到:

                                                                v_t=\alpha^n v_{t-n} + (1-\alpha)(\alpha^{n-1}\theta_{t-n+1}+...+\alpha^0\theta_t)

    其中,n=\frac{1}{1-\alpha},代入可以得到\alpha^n=\alpha^{\frac{1}{1-\alpha}}\approx \frac{1}{e}

     

    在深度学习的优化中的EMA

    上面讲的是广义的ema定义和计算方法,特别的,在深度学习的优化过程中, \theta_t 是t时刻的模型权重weights, v_t 是t时刻的影子权重(shadow weights)。在梯度下降的过程中,会一直维护着这个影子权重,但是这个影子权重并不会参与训练。基本的假设是,模型权重在最后的n步内,会在实际的最优点处抖动,所以我们取最后n步的平均,能使得模型更加的鲁棒。

    EMA的偏差修正

    实际使用中,如果令 v_0=0 ,且步数较少,ema的计算结果会有一定偏差。

     

    理想的平均是绿色的,因为初始值为0,所以得到的是紫色的。

    因此可以加一个偏差修正(bias correction):

                                                                                           v_t=\frac{v_t}{1-\beta^{t}}

     

    显然,当t很大时,修正近似于1。

    EMA为什么有效

    网上大多数介绍EMA的博客,在介绍其为何有效的时候,只做了一些直觉上的解释,缺少严谨的推理,在这补充一下,不喜欢看公式的读者可以跳过。

    令第n时刻的模型权重(weights)为v_n,梯度为g_n,可得:

                                               \theta_n=\theta_{n-1}-g_{n-1} =\theta_{n-2}-g_{n-1}-g_{n-2}=...=\theta_1-\sum_{i=1}^{n-1}g_i

     

    令第n时刻EMA的影子权重为v_n ,可得:

                                                                  v_n=\alpha v_{n-1}+(1-\alpha)\theta_n

                                                                       =\alpha (\alpha v_{n-2}+(1-\alpha)\theta_{n-1}) + (1-\alpha)\theta_n

                                                                       =...

                                                                       =\alpha^n v_0 + (1-\alpha)(\theta_{n} + \alpha \theta_{n-1} + \alpha^2 \theta_{n-2} + ... + \alpha^{n-1} \theta_{1})

    代入上面\theta_n的表达,令v_0=\theta_1展开上面的公式,可得:

                                                                   v_n=\alpha^n v_0 + (1-\alpha)(\theta_{n} + \alpha \theta_{n-1} + \alpha^2 \theta_{n-2} + ... + \alpha^{n-1} \theta_{1})

                                                                        =\alpha^n v_0 + (1-\alpha)(\theta_{1} - \sum_{i=1}^{n-1}g_i + \alpha (\theta_{1} - \sum_{i=1}^{n-2}g_i) +...+ \alpha^{n-2} (\theta_{1} - \sum_{i=1}^{1}g_i) + \alpha^{n-1}\theta_1 )

                                                                        =\alpha^n v_0 + (1-\alpha)(\frac{1-\alpha^n}{1-\alpha}\theta_1 - \sum_{i=1}^{n-1}\frac{1-\alpha^{n-i}}{1-\alpha}g_i)

                                                                        =\alpha^n v_0 + (1-\alpha^n)\theta_1 - \sum_{i=1}^{n-1} (1-\alpha^{n-i}) g_i

                                                                        =\theta_1 - \sum_{i=1}^{n-1} (1-\alpha^{n-i}) g_i

    对比两式:

                                                                         \theta_n=\theta_1 - \sum_{i-1}^{n-1}g_i

                                                                 v_n=\theta_1 - \sum_{i=1}^{n-1}(1-\alpha^{n-i})g_i

    EMA对第i步的梯度下降的步长增加了权重系数1-\alpha^{n-i},相当于做了一个learning rate decay。

    PyTorch实现

    class EMA():
        def __init__(self, model, decay):
            self.model = model
            self.decay = decay
            self.shadow = {}
            self.backup = {}
    
        def register(self):
            for name, param in self.model.named_parameters():
                if param.requires_grad:
                    self.shadow[name] = param.data.clone()
    
        def update(self):
            for name, param in self.model.named_parameters():
                if param.requires_grad:
                    assert name in self.shadow
                    new_average = (1.0 - self.decay) * param.data + self.decay * self.shadow[name]
                    self.shadow[name] = new_average.clone()
    
        def apply_shadow(self):
            for name, param in self.model.named_parameters():
                if param.requires_grad:
                    assert name in self.shadow
                    self.backup[name] = param.data
                    param.data = self.shadow[name]
    
        def restore(self):
            for name, param in self.model.named_parameters():
                if param.requires_grad:
                    assert name in self.backup
                    param.data = self.backup[name]
            self.backup = {}
    
    # 初始化
    ema = EMA(model, 0.999)
    ema.register()
    
    # 训练过程中,更新完参数后,同步update shadow weights
    def train():
        optimizer.step()
        ema.update()
    
    # eval前,apply shadow weights;eval之后,恢复原来模型的参数
    def evaluate():
        ema.apply_shadow()
        # evaluate
        ema.restore()

    参考:https://zhuanlan.zhihu.com/p/68748778

    展开全文
  • 最近在学习一些数据算法,看到很多不错的总结性文章,突然想起自己这几年的工作主要集中在指数编制方面,也算是比较系统全面的研究并编制了一些指数,所以想把自己对指数编制的一些理解记录下来,做一个总结,方便...

    最近在学习一些数据算法,看到很多不错的总结性文章,突然想起自己这几年的工作主要集中在指数编制方面,也算是比较系统全面的研究并编制了一些指数,所以想把自己对指数编制的一些理解记录下来,做一个总结,方便查看同时也有助于个人理解。

    什么是指数?

    指数或称为统计指数,在统计学中占有重要地位,是分析社会经济现象数量变化的一种重要统计方法。18 世纪中叶,由于金银大量流入欧洲,欧洲物价飞涨,引起社会不安,于是产生编制物价指数的要求。当时用来比较商品价格涨落情况的相对数就称作物价指数。后来指数被推广应用到其他经济领域,如用来说明工业、农业产品综合变动的工业生产指数、农业生产指数;反映各种商品销售量综合变动情况的销售量指数;反映劳动生产率和单位成本变动情况的劳动生产率指数和单位产品成本指数等。在此基础上,指数也由动态扩展到静态,如反映计划、定额完成情况的计划完成指数和定额完成指数等。目前人们对于指数概念的认识,一般有以下两种理解,即广义指数与狭义指数。

    • 广义指数。相同种类的现象,在数量上的变化比率表现为相对数的形式,该相对数就可以叫做指数,它既可以反映单个现象的变动程度,有可以反映复杂事物的变动情况。
    • 狭义指数。有时候,复杂的社会经济现象的数量变动难以直接加总或无法直接对比,衡量这些事物的数量变动时就用到狭义指数。它是一种特殊形式的相对数。例如,在对我国工业产品的产量变动进行研究时,由于每种产品具有不同的使用价值,导致在计算某一时期的总产量是,不能简单加总计算,所以两个时期的总产量变动情况也就不能真实的反映工业产品产量的总动态。这就需要引入狭义指数来解决复杂事物不能加总的问题。

    指数分类有哪些?

    指数可以从不同的角度,有以下几种分类:

    • 按指数所反映现象的范围不同,分为个体指数和总指数。 个体指数是反映个别现象数量变动的相对数,如个别产品产量指数、个别商品价格指数等。总指数是综合反映复杂现象总体数量变动的相对数,如工业产品产量总指数、商品零售物价总指数等。由于指数理论主要是研究总指数的编制,在计算总指数时,为更加深入、全面地反映现象发展的动态,往往对总体包含的多种现象进行分类,分别计算每一类现象的指数,如粮食类价格指数、油料类价格指数。这样的指数称之为类指数,其编制方法相似于总指数。
    • 按指数所表明的指标的性质不同,分为数量指标指数和质量指标指数。数量指标指数如商品销售量指数、工业产品产量指数等,反映了研究现象总体数量规模的变动程度;质量指标指数如商品价格指数、 产品成本指数、劳动生产率指数等,说明了生产经营所取得的效益状态、工作质量的变动程度。在指数的应用中,必须重视这种区分,因为他们的编制方法不同。
    • 按指数的表现形式不同,分为综合指数、算术平均数指数及调和平均数指数。综合指数是计算总指数的基本形式,算术平均数指数、调和平均数指数合称为平均数指数,是综合指数的变形,他们从属于综合指数,又有独立的应用意义。此外,在指数分析法中,为分解加权平均指标的指标水平和单位构成变动的影响,要将两个时期加权平均指标加以对比,形成平均指标指数,它是测定同质总体内平均指标的各构成因素变动的,其基本原理仍属综合指数的范畴。
    • 按指数编制所采用的基期不同,分为定基指数和环比指数。统计要反映现象在长时间内不断变动的情况,常常要编制指数数列。例如,我国每年都计算工农业产品无量指数、国民经济发展状况的国内生产总值指数,这就形成在时间上前后衔接的指数数列。在一个指数数列中,各个指数都以某一固定时期作为基期来计算,成为定基指数;各个指数都以前一期作为基期来计算,成为环比指数。

    指数的作用有哪些?

    指数的作用主要有以下几种:

    • 综合反映复杂总体数量变动的方向和程度——因为社会经济现象中的复杂总体,其各构成单位(事物)不能直接相加汇总,但在社会经济管理与理论研究中,则要经常分析其总的变动情况,这就必须利用指数这一方法才能实现。如我国统计部门经常向社会提供的工业生产指数、农业生产指数、各种主要的价格指数等,都是综合反映有关复杂总体数量变动方向和程度的重要统计指数。
    • 根据指数之间的社会经济联系进行因素分析——社会经济现象之间是相互联系和相互制约的,一些现象的发展变化往往是其他一些现象变化影响的结果,利用指数之间的经济联系,可从数量上具体揭示某种现象的发展变化的原因及各构成因素对其具体影响,从而明确现象发展变化的主要原因及其主要矛盾,并对我们进行社会经济管理的具体成效做出客观的评价。
    • 研究社会经济现象在长期内的变动趋势——利用连续编制的指数数列,可以对社会经济现象在较长时期内发展变化的趋势进行描述和分析。如编制工业产品成本指数数列,可分析工业产品成本在某一时期内德变动趋势。还可以利用相互联系的指数数列,进行有关对比分析。如根据农产品价格指数数列和工业品零售价格指数数列,来分析工业农业产品综合比价的变化趋势,以及工农业产品价格差的变化趋势。

    指数编制流程?

    指数编制的基本流程大体上的固定的,当然也会随着不同的项目需求而有所差异。

    确定主题和目的-->确定编制方法-->指标体系构建-->指标及数据搜集-->数据处理-->指数测试-->指数论证发布
    
    • 首先是确定主题和编制目的。只有有了明确的主题和目的才能够着手设计指数编制方法,比如要编制反映股票市场走势的指数,很明显主题是股票,目的是要通过指数反映股票价格波动情况;如果要观测行业景气程度,那么主题就是所属行业,编制的目的就是通过指数度量行业发展的景气程度。
    • 其次是要确定编制方法。一般在主题和编制目的确定的情况下,编制方法基本就已经确定。比如上面说的反映股票市场走势的指数,方法应该是价格指数的方法。要观测行业景气程度的指数方法基本可以确定是景气指数方法或者发展指数方法。
    • 再次是确定指标体系。指标体系是一个指数的灵魂,往往在指数编制过程中很大一部分的工作是在指标体系的确定上。指标体系的确定需要从两方面着手,一方面是自上而下,先宏观再细化;另一方面是自下而上,先从微观方面的指标确定开始,基于指标数据可得性、代表性、指标相关性、替代性等方面的指标选择。甚至在指数测试阶段根据指标的表现,修改指标和指标体系的情况也是存在的。
    • 然后要进行的是指标数据的获取,数据处理(包括缺失值处理、标准化处理、异常值处理等),指标权重设计,指数测试、更新、修正等方法的设计。这一部分也是指数编制的关键步骤。因为很多指数之所以生命力比较强,很大一个原因是在当初设计的时候考虑比较长远,而不是只顾一时的需要仓促了事的。
    • 指数一般都需要经过一定的测试期,经过论证没毛病了以后才能公诸与众,指导公众作为参考。不然的话会误人误事,甚至可能会背负骂名。

    以上简单介绍了指数分类、作用及基本编制流程。作为指数编制序列的第一篇。后面将陆续介绍发展指数、评价指数、景气指数、价格指数等指数的编制方法以及指数编制中数据标准化、权重设置等方法。

    All things are difficult before they are easy.

    展开全文
  • 本文内容 算术平均 几何平均 调和平均 平方平均 移动平均 ...算术平均(Arithmetic mean)是最基本、最常用的一种平均指标,描述数据集中趋势的一个统计指标。 计算公式为: 即,n 个数据...
  • 指数

    千次阅读 2018-10-14 00:05:12
    一、基本问题 1、指数概念 指数,或称统计指数,是分析社会经济现象数量变化的一种重要统计方法。...二是其表现形式为动态相对数,既然是动态相对数,涉及指标的基期对比,不同要素基期的选择就成为指数...
  • 它可以衡量当特定商品或服务价格发生变化对该组相对价格变动的影响,但由于不同商品和服务的价格变化并非同步,价格指数反映的是“平均”变化。例如,以某一时期为基期,该时期价格指数为 1或100,而其他时期的价格...
  • 指数平滑法——趋势平滑预测方法

    万次阅读 2019-07-09 09:08:09
    原文地址:... 指数平滑法(Exponential Smoothing,ES) 目录 1什么是指数平滑法 2指数平滑法的基本公式 3指数平滑的预测公式 3.1(一) 一次指数平滑预测 ...
  • 股票价格指数

    千次阅读 2008-11-17 17:39:00
    股票价格指数 股票价格指数简介 股票价格指数即股票指数。是由证券交易所或金融服务机构编制的表明股票行市变动的一种供参考的指示数字。由于股票价格起伏无常,投资者必然面临市场价格风险。对于具体某一种股票的...
  • 国际热门商品指数 标普高盛商品指数S&P-GSCI 道琼斯瑞银商品指数DJ-UBSCI 路透商品研究局指数CRBCI 德意志银行流通商品指数DBLCI 罗杰斯世界商品指数RICI   国内商品指数(价格型指数和投资型指数) 南华...
  • PMI指数

    千次阅读 2014-01-10 11:59:06
    PMI指数 编辑 PMI指数的英文全称为Purchasing Managers' Index,中文含义为采购经理指数,PMI指数50为荣枯分水线。当PMI大于50时,说明经济在发展,当PMI小于50时,说明经济在衰退。PMI是一套月度...
  • 信号与系统—周期复指数信号

    千次阅读 多人点赞 2019-09-27 21:55:38
    周期复指数信号重要性在于其可以作为基本的信号构造单元来构造许多其他信号(大多数周期信号都可以由一系列成谐波关系的周期复指数信号线性组合而成)。至于如何构造可以学习卷积和傅里叶级数相关内容,本文中主要对...
  • 其中美国商务部与日本经济企划厅的计算方法思想上是一致的,但方法上略有不同,经济合作与发展组织基于“增长循环”,用阶段平均法分离趋势要素后,确定各成员国基准日期进而编制合成景气指数。美国商务部的合成指数...
  • 几种平均

    千次阅读 2020-02-15 10:15:13
    1、算数平均数:又称均值,是统计学中最基本,最常用的一种平均指标,分为简单算术平均数、加权算术平均数。 设一组数据为X1,X2,...,Xn,简单地算术平均数的计算公式为: 加权算术平均:主要用于处理经分组整理...
  • 股票价格指数+加权

    2019-09-26 23:09:07
    它是选取有代表性的一组股票,把他们的价格进行加权平均,通过一定的计算得到。各种指数具体的股票选取和计算方法是不同的。 定义编辑 股票价格指数就是用以反映整个股票市场上各种股票市场价格的总体水平及其...
  • 简单指数平滑

    千次阅读 2018-03-24 15:51:38
    简单指数平滑 简单指数平滑法(SES)适用于预测没有趋势和季节性的模型。 y^T+1|T=αyT+α(1−α)yT−1+α(1−α)2yT−2+⋯,y^T+1|T=αyT+α(1−α)yT−1+α(1−α)2yT−2+⋯,\hat{y}_{T+1|T} = \alpha y_T + \...
  • 时间序列模型 (三):指数平滑法

    万次阅读 多人点赞 2019-04-21 22:39:38
    时间序列的其它博文系列: 时间序列模型 (一):模型概述 时间序列模型 (二):移动平均法 时间序列模型 (三):指数平滑法 ...时间序列模型 (七): 时间序列建模的基本步骤 一次移动平均实际上认为...
  • 1.上证50指数 上证50是上交易所挑选规模最大, 流动性最好的50只股票 指数的特点: 以大盘股为主。 只有上交所的股票,没有深交所的股票 指数基金从交易渠道上可以分为场内指数基金和场外指数基金,这个场指...
  • 第一章 指数基金的魅力 投资的三个常识 风险和收益成正比 人取我弃,人弃我取 理性投资,远离杠杆 指数投资的两个忠告 如果看好未来股市或者某个行业,则应该选择宽基指数或者行业指数买入持有,获得股市上涨...
  • 指数体系的形式不是随意的,而是由现象间客观存在的必然联系决定的。例如, 产品产值=产品产量×产品价格 商品销售额=商品销售量×商品价格 全员劳动生产率=生产成果×职工(平均)人数 …… 上述这些现象在...
  • 十二平均律的数学描述

    万次阅读 2018-09-29 09:10:06
    十二平均律的数学描述 mywang88 2018年9月28日 1. 声音的物理特性 声音的本质,是空气的震动。 人听到外界的声音大致需要经历以下几个步骤: 发声体(例如人的声带、各种乐器)发生特定的震动,也包括了发声体内部...
  • 股票指数期货

    千次阅读 2012-03-01 11:37:09
    近些天关于股指期货的消息可谓越来越多,近期之内推出股指期货几乎没有悬念了,而股指期货的推出对现货市场的影响也是很大的,尤其是...股票指数期货:简称股指期货,是一种以股票价格指数作为标的物的金融期货合约。
  • ISP基本框架及算法介绍

    万次阅读 多人点赞 2018-05-20 01:30:29
    ISP基本框架及算法介绍 ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在...
  • MATLAB01:基本的数学运算与矩阵运算

    万次阅读 多人点赞 2019-11-12 17:22:52
    MATLAB01:基本的数学运算与矩阵运算MATLAB基本语法变量变量名保留变量不适合做变量名变量不应当覆盖内置函数MATLAB的调用优先级变量类型数字型变量的显示格式MATLAB命令行使用MATLAB进行数字运算使用MATLAB计算数学...
  • 时间序列分析之指数平滑法(holt-winters及代码)

    万次阅读 多人点赞 2018-09-07 16:45:20
    在做时序预测时,一个显然的思路是:认为离着预测点越近的点,作用越大。...将权重按照指数级进行衰减,这就是指数平滑法的基本思想。 指数平滑法有几种不同形式:一次指数平滑法针对没有趋势和...
  • 本文结合July、dznlong 两位大神的博客文章内容加上自己的理解与阐述,介绍了傅里叶变换的基础内容以及实数形式离散傅里叶变换的理解。
  • 债券指数基金以及债券ETF

    千次阅读 2018-12-19 15:18:02
    债券指数基金以及债券ETF揭秘:创新指数编制        债券指数基金以及债券ETF揭秘系列之五——另辟蹊径 创新指数(3898.047,7.37,0.19%)编制  债券指数主要用途:1)衡量市场表现;2)评判投资业绩;3)作为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,431
精华内容 8,972
关键字:

平均指数的基本形式