本篇使用 LSTM 模型分析及預測黃金期貨價格,資料可由 yfinance 或本站資料庫取得。
關連式資料表
可以使用如下關連式資料表簡化表格制作,讓黃金價格最後有美元指標及原油價格。
conn, cursor=G.connect()
stock="GC=F"
shift=7
cursor.execute(f"select 名稱 from 股票代號 where 代號 ='{stock}'")
title=cursor.fetchall()[0][0]
cmd=f"""
select
a.日期 as 日期,
a.開盤 as 開盤,
a.最高 as 最高,
a.最低 as 最低,
a.收盤 as 收盤,
a.成交量 as 成交量,
b.收盤 as 美元,
c.收盤 as 原油
from (台灣股市 a join 台灣股市 b on a.日期=b.日期) join 台灣股市 c on a.日期=c.日期
where a.代號='{stock}' and b.代號='DX-Y.NYB' and c.代號 ='CL=F'
order by a.日期
"""
cursor.execute(cmd)
rs=cursor.fetchall()
columns=[d[0] for d in cursor.description]
df=pd.DataFrame(rs,columns=columns)
模型訓練
MinMaxScaler 是每筆資料除以最大值,產生介於 0~1 之間的資料,這樣在 sigmoid 時輸出 0~1 之間的預測。若沒有 MinMaxScaler,會產生梯度爆炸、梯度消失、Loss 不穩、收斂很慢。MinMaxScaler 的公式如下。
$(scaler = \frac{x_{i}-min}{max-min})$
shift : 由前 shift 天的價格預測明天,但黃金或股市的躁音太大,shift 不要太大。
batch_size 設定為 16 較為精準 : 金融時間序列,太大會造成更新太慢、泛化較差。
units : 為 LSTM 模型內的神經元數量。股市為 noisy data,units 太大會過度擬合,記住雜訊,測試出 128 為較準確的參數。
新版模型加入 [開盤, 最高, 最低, 收盤價, 成交量] 五個特徵進行訓練。
完整代碼如下。
🔒 更多內容,請登入會員繼續閱讀。
立即登入預測
預測隔日黃金價格完整代碼如下。
🔒 更多內容,請登入會員繼續閱讀。
立即登入平均日線
底下使用 5 日均線及 10 日均線為特徵,輸入 LinearRegression 模型訓練後,預測下一日的值。
請先安裝如下套件
pip install plotly yfinance scikit-learn pandas
完整代碼如下
🔒 更多內容,請登入會員繼續閱讀。
立即登入
單一特徵模型及預測
底下是單一特徵(前幾天的收盤)的 LSTM,僅作記錄用。
訓練
🔒 更多內容,請登入會員繼續閱讀。
立即登入預測
🔒 更多內容,請登入會員繼續閱讀。
立即登入FRED
黃金的漲跌跟 T10YIE 通膨預期有絕對關係。T10YIE 是10-Year Breakeven Inflation Rate 的縮寫,代表市場預期未來 10 年平均通膨率。黃金與 T10YIE 的相關性往往比 美國 CPI 指數(Consumer Price Index for All Urban Consumers,消費指數,CPIAUCSL) 的相關性更高
T10YIE 可由 FRED 美國官網下載,請進入如下網址註冊、登入,然後在 My Account 取得 api key
https://fred.stlouisfed.org/?utm_source=chatgpt.com
通膨下載代碥如下
