用 AI 寫股票分析程式,以 0050 為例

股票物理.ipynb - Colab

https://colab.research.google.com/drive/1zjNSjUA9YsjgjBcIOKmnDFbq0u4j6_bE?usp=sharing

有需要的自取,這個是公開版本,是基於一個社群裡一個網友的文章得到的一個靈感,他是用物理的熱力學概念分析股票,基於物理概念運用在股票這個觀念,我拿來給AI分析,有需要的自己可以根據程式碼再跟AI做修改。

這段程式碼是一個基於 Python 的自動化量化交易策略,主要針對台灣市場的 0050 ETF 進行技術分析與回測 。

它將物理學的概念(如慣性、流體、功率)引入金融分析,旨在捕捉股價處於「穩定長波段」時的進場機會 。以下是該程式碼的核心邏輯解釋:

1. 物理學概念指標分析 (analyze_physics)

程式將傳統技術指標轉化為物理模型來評估市場狀態 :

  • 位移功率 (Power): 利用平均報酬率除以波動率 。這用來偵測那些「安靜但強大」的趨勢,確保趨勢具有足夠的動能而非隨機震盪 。

  • 慣性參考系 (Inertia): * MA50 (短期慣性): 視為波段的阻尼(Damping) 。

    • MA200 (長期引力): 視為長期的趨勢底線(Gravity) 。
  • 秩序診斷 (CV): 計算變異係數來判斷股價是否處於「定向移動」 。數值越低,代表趨勢越穩定,呈現所謂的「層流(Laminar Flow)」狀態 。

2. 進場與出場邏輯 (run_strategy)

策略透過嚴格的條件篩選來過濾雜訊:

  • 進場條件 (多重濾網):

    • 股價高於 50 日均線,且 50 日均線高於 200 日均線(呈現多頭排列) 。

    • 功率指標大於 0.5 。

    • 變異係數 (CV) 小於 2.0,確保趨勢不過於混亂 。

  • 出場條件:

    • 必須滿足 獲利大於 10%結構遭到破壞(股價跌破 50 日線或功率大幅轉弱)時才會離場 。這種設計是為了確保能抱住獲利,避免過早離場 。

3. 可視化與成效統計

  • 自動繪圖: 程式會自動抓取 yfinance 數據,並在圖表上標註明確的 BUY(買入)SELL(賣出) 日期與價格 。

  • 報酬率統計: 最後會計算所有交易的累積總報酬率,讓使用者直觀了解該策略在歷史數據中的表現 。

總結

這是一套追逐趨勢 (Trend Following) 的量化策略 。它不追求頻繁交易,而是透過物理指標篩選出 0050 走勢最穩健、能量最強大的時期進行波段操作 。

警語: 如程式開頭所述,此程式僅供學習參考,交易風格不一定適合每個人,並非最終投資依據 。