程式碼
# 用於資料處理 import numpy as np import pandas as pd # 用於獲取資料 import akshare as ak # 匯入線性迴歸模型 from sklearn.linear_model import LinearRegression # 匯入畫相簿、設定主題和中文顯示 import matplotlib.pyplot as plt import re plt.style.use('seaborn-darkgrid') plt.style.use('seaborn-v0_8-darkgrid') plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文顯示 plt.rcParams['axes.unicode_minus'] = False # 負數顯示 # 設定忽略警告 import warnings warnings.filterwarnings('ignore') from datetime import datetime # 獲取黃金ETF的歷史行情資料 etf_data = ak.fund_etf_hist_em(symbol='518880', period='daily', start_date='20130801', end_date='20240517') # 只需要收盤價序列 Df = etf_data[['收盤']].rename(columns={'收盤':'Close'}) # 將Index設定為datetime格式的日期 Df.index = pd.to_datetime(etf_data['日期']).tolist() # 去除空值 Df = Df.dropna() # 畫出黃金ETF的價格走勢圖 Df.Close.plot(figsize=(15, 8), color='red') plt.ylabel('黃金ETF價格') plt.title('黃金ETF價格序列') plt.show() # 計算均線因子 Df['S1'] = Df['Close'].rolling(window=55).mean() Df['S2'] = Df['Close'].rolling(window=60).mean() # 第二天的收盤價 Df['next_day_price'] = Df['Close'].shift(-1) Df = Df.dropna() # 定義解釋變數 X = Df[['S1', 'S2']] # 定義因變數 y = Df['next_day_price']
生成