点击上方关注,All in AI中国
获得数据
芝加哥期权交易所波动率指数(CBOE Volatility Index,简称VIX)是衡量标普500指数期权隐含的股市波动预期的常用指标,它是由芝加哥期权交易所(CBOE)实时计算和传播的。
本文设置的标普500指数(SP500)日期范围是从2011年2月11日到2019年2月11日。我们的目的是使用ANN和LSTM预测波动性标普500指数时间序列。
首先,我们需要导入以下内容到库:
import pandas as pd import numpy as np %matplotlib inline import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from sklearn.metrics import r2_score from keras.models import Sequential from keras.layers import Dense from keras.callbacks import EarlyStopping from keras.optimizers import Adam from keras.layers import LSTM
然后,将数据加载到Pandas数据帧中:
df = pd.read_csv("vix_2011_2019.csv")
我们可以快速浏览一下前几行,
print(df.head())
接下来,我们删除不需要的列,然后将“日期”列转换为datatime数据类型,并将“日期”列设置为索引。
df.drop(['Open', 'High', 'Low', 'Close', 'Volume'], axis=1, inplace=True) df['Date'] = pd.to_datetime(df['Date']) df = df.set_index(['Date'], drop=True) df.head(10)
以上步骤
完成后,我们再来绘制一张时间序列线图。
plt.figure(figsize=(10, 6)) df['Adj Close'].plot();
可以看出,“Adj Close”数据非常不稳定,既没有上升趋势也没有下降趋势。
接下来,以“2018-01-01”为分界将数据拆分训练和测试数据。也就是说,此日期之前的数据是训练数据,之后的数据是测试数据,然后再次对其进行可视化。
split_date = pd.Timestamp('2018-01-01') df = df['Adj Close'] train = df.loc[:split_date] test = df.loc[split_date:] plt.figure(figsize=(10, 6)) ax = train.plot() test.plot(ax=ax) plt.legend(['train', 'test']);