本文將從多個方面詳細闡述如何使用Python進行基金預測分析。
一、獲取基金數據
首先,我們需要從網路上獲取基金的歷史數據。可以使用Python中的pandas_datareader庫獲取基金數據。以下是獲取易方達創業板ETF的收盤價數據:
import pandas_datareader.data as web import datetime start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2021, 9, 1) df = web.DataReader("159949.SZ", "yahoo", start, end) print(df.tail())
在上述代碼中,我們通過DataReader函數獲取指定日期範圍內159949.SZ的收盤價數據,最後列印輸出數據的末尾5行。
二、數據可視化
通過可視化數據可以更好地了解數據的趨勢和關係。在Python中,我們可以使用matplotlib庫進行數據可視化。以下是以折線圖形式展示易方達創業板ETF收盤價數據的代碼:
import matplotlib.pyplot as plt plt.plot(df['Close']) plt.title('159949.SZ Price') plt.xlabel('Date') plt.ylabel('Price') plt.show()
在上述代碼中,我們將df中的收盤價數據繪製成折線圖,並添加標題、橫縱坐標標籤,最後顯示圖像。
三、特徵工程
特徵工程是指通過數據處理和特徵構建等手段提取出有用的特徵。以下是一個例子,展示如何計算基金的30日移動平均線:
df['MA30'] = df['Close'].rolling(window=30).mean() print(df.tail())
在上述代碼中,我們通過rolling函數計算每一天的30日移動平均線,並將結果存儲到df的新列’MA30’中。
四、建立模型
建立模型是基金預測分析的關鍵。我們將使用scikit-learn庫中的線性回歸模型進行預測。以下是一個基於移動平均線的線性回歸模型:
from sklearn.linear_model import LinearRegression X = df[['MA30']] Y = df['Close'] model = LinearRegression().fit(X, Y) print('R2 score:', model.score(X, Y))
在上述代碼中,我們將MA30作為自變數,收盤價作為因變數,構建線性回歸模型,並計算模型的R2得分。
五、模型預測
有了已建立好的模型,我們可以對未來基金的收盤價進行預測。以下是一個基於移動平均線的模型預測價格的例子:
import numpy as np future_days = 30 last_date = df.iloc[-1].name index = pd.date_range(last_date, periods=future_days + 1, freq='B') df_future = pd.DataFrame(index=index, columns=['Close', 'MA30']) df_future['MA30'] = df['Close'].rolling(window=30).mean().iloc[-1] df_future['Close'] = model.predict(np.array(df_future['MA30']).reshape(-1, 1)) print(df_future)
在上述代碼中,我們構建了一個包含未來30個工作日的日期範圍的DataFrame,計算了這30天的移動平均線值,並用模型對移動平均線值進行預測,最後輸出預測結果。
以上是基於Python的基金預測分析的相關內容,希望能對你有所幫助。
原創文章,作者:NSPSS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/373272.html