时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。本文我们会分享如何用历史股票数据进行基本的时间序列分析(以下简称时序分析)。首先我们会创建一个静态预测模型,检测模型的效度,然后分享一些用于时序分析的重要工具。
在创建模型之前,我们先简要了解时间序列的一些基本参数,比如移动平均线、趋势、季节性等。
获取数据
我们本文会用到 MRF 过去五年的“调整价格”,用 pandas_datareader 可以从 Yahoo财经上获取所需的数据。我们首先导入需要的库:
import pandas as pd
import pandas_datareader as web
import matplotlib.pyplot as plt
import numpy as np
现在我们用 datareader 获取数据,主要是自 2012 年 1 月 1 日至 2017 年 12 月 21 日的股票数据。当然也可以只用调整收盘价,因为这是最相关的价格,应用在所有的金融分析中。
stock = web.DataReader('MRF.BO','yahoo', start = "01-01-2012", end="31-12-2017")
stock = stock.dropna(how=’any’)
我们可以用 head() 函数检查数据。
stock.head()
我们可以用导入的 matplotlib 库再次绘制出时间段内的调整价格。
stock[‘Adj Close’].plot(grid = True)
计算和绘制每日收益
利用时间序列,我们可以计算出随着时间变化的每日收益,并绘制出收益变化图。我们将从股票的调整收盘价中计算出每日收益,以列名“ret”储存在同一数据帧“stock”中。
stock['ret'] = stock['Adj Close'].pct_change()
stock['ret'].plot(grid=True)
移动平均数
和收益相同,我们可以计算和绘制出调整收盘价格的移动平均线。移动平均线是广泛应用于技术分析中的一个非常重要的指标。出于简要说明的目的,这里我们只计算 20 天移动平均线作为示例。
stock['20d'] = stock['Adj Close'].rolling(window=20, center=False).mean()