1.5.8 使用时间序列法分解数据
接下来将使用时间序列分解的方法来分析数据,通过将时序数据拆解为趋势、季节性和残差等组成部分,以更好地理解数据的变化趋势。
(1)使用库yfinance获取了自2020年1月1日至2022年1月31日期间的比特币(BTC)价格数据。然后,通过计算每日收益率,得到了比特币的收益率数据(returns)。
tickerSymbol = 'BTC-USD'
data = yf.Ticker(tickerSymbol)
prices = data.history(start='2020-01-01', end='2022-01-31').Close
returns = prices.pct_change().dropna()
returns
执行后会输出:
Date
2020-01-02 -0.029819
2020-01-03 0.051452
2020-01-04 0.008955
2020-01-05 0.000089
2020-01-06 0.048291
...
2022-01-27 0.007764
2022-01-28 0.017397
2022-01-29 0.009365
2022-01-30 -0.005784
2022-01-31 0.014915
Name: Close, Length: 761, dtype: float64
(2)使用库plotly.express创建了一个折线图,展示比特币(BTC)对美元(USD)的价格随时间的变化情况。
fig = px.line(prices)
fig.update_layout(title='BTC/USD Price',
xaxis_title='Time',
yaxis_title='Price',
plot_bgcolor='white')
fig.show()
执行效果如图7-8所示。图中的横轴表示时间,纵轴表示价格,整体呈现比特币价格的趋势。
图7-8 比特币对美元的价格随时间的变化
(3)使用库plotly.express创建了一个折线图,展示了比特币(BTC)对美元(USD)的收益率随时间的变化情况。
fig = px.line(returns)
fig.update_layout(title='BTC/USD Price',
xaxis_title='Time',
yaxis_title='Returns',
plot_bgcolor='white')
fig.show()
执行效果如图7-8所示。图中的横轴表示时间,纵轴表示收益率,整体呈现比特币收益率的趋势。
图7-8 比特币对美元的收益率随时间的变化