时间序列分析与机器学习在金融数据中的应用
1. 发现时间序列中的趋势
时间序列数据通常会受到噪声和季节性的影响,使得图表看起来参差不齐。以苹果公司(AAPL)的收盘价数据为例,其原始数据的图表就比较杂乱。为了识别时间序列中的趋势,常用的方法是计算移动平均值。
以下是计算简单移动平均(SMA)并绘制趋势图的代码:
stock_data.sort_index(inplace=True)
plot_time_series(stock_data['close'].rolling('365D').mean(), 'AAPL Closing Trend')
需要注意的是,如果不先对索引进行排序,会出现 ValueError: index must be monotonic
错误。这里的滚动窗口定义为 365 天。
还可以将收盘价和成交量趋势组合在一个图表中,这有助于特征工程和深入了解数据行为。以下是实现代码:
def compose_trends(ts):
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled_ts = pd.DataFrame(scaler.fit_transform(ts), columns=ts.columns, index=ts.index)
return pd.concat([scaled_ts['clos