跳到主要內容

003互動

打造神經進化交易戰隊:適應市場變化的 AI 交易策略

讓一群隨機的交易機器人在 2024 年的蘋果股價上互相競爭、繁殖、突變。你可以親手訓練一支,然後看清楚它到底學到了什麼、又沒學到什麼。

發布
閱讀時間
6 分鐘

訓練自己的交易機器人

下面是蘋果公司(AAPL)2024 年的每日收盤價。你可以透過這個儀表板訓練自己的交易機器人:系統會隨機生成一群機器人,讓牠們在這一年的股價上交易,保留表現最好的策略,再繁殖出下一代。

fig 01/neuroevolution / trading

AAPL

2024 年 1 月 2 日 – 12 月 31 日,每日收盤價

全年漲幅
+34.90%
1601802002202402602024-012024-042024-072024-10

設定參數後按「開始訓練」。每一代都會讓整個族群把這一年交易一遍。

每個機器人從 10,000 美元開始,每天只能做一件事:買一股、賣掉最早買的那一股,或什麼都不做。報酬率把年底還沒賣的持股也用最後一天的收盤價算進去。

儀表板功能

訓練完成後,你會看到:

  • 交易活動摘要:買入與賣出次數、總損益、報酬率,以及拿來對照的「買進持有」報酬率
  • 股價圖表:青色三角形是買入點,粉紅色三角形是賣出點
  • 進化曲線:每一代最佳機器人的報酬率,虛線是買進持有
  • 交易日誌:每一筆交易的日期、價格、該股的報酬率與交易後的現金餘額

訓練結果會保存在你的瀏覽器裡,下次回到這一頁時會自動載入。

參數設定

  • 世代數(1–100):演算法要進化多少代。越多代訓練越充分,也越花時間。每一代都會淘汰表現差的策略,保留優秀的策略。
  • 族群大小(10–500):每一代有多少個交易機器人。族群越大,搜尋的範圍越廣,訓練時間也越長。建議從 50 開始。
  • 突變率(1–100%):控制神經網路權重隨機變動的程度。數值越高實驗性越強,數值越低越穩定。

這個工具讓你親身體驗神經進化演算法如何從一開始的隨機交易,逐漸發展出一套有模有樣的策略。每次訓練的結果都可能不同,這正是演化過程的隨機性。

什麼是神經進化交易策略?

在金融市場中,交易策略的優劣取決於決策模型的適應性。神經進化演算法(Neuroevolution)是一種基於「自然選擇」的機器學習方法,它讓交易機器人像生物一樣進化,逐步學習如何更聰明地買賣資產。這不僅是自動化交易,更是一場 AI 的生存競賽。

神經進化的交易智慧

與傳統深度學習不同,神經進化並不依賴反向傳播(backpropagation)。相反,它模仿生物進化的過程,透過「選擇、突變、交叉繁殖」來培養更強的交易決策者。其核心步驟如下:

  1. 初始族群:隨機生成多個交易策略,每個策略由一個神經網路構成。
  2. 市場模擬:讓這些策略在歷史市場數據上進行交易,評估牠們的績效。
  3. 適者生存:表現最佳的策略存活下來,低效的策略被淘汰。
  4. 基因突變:對倖存者的參數進行隨機調整,測試有沒有更好的決策方式。
  5. 交叉繁殖:合併優勝策略的特徵,產生新的交易策略。
  6. 迭代進化:重複這一過程,直到產生最能適應這段市場的交易演算法。

每個機器人的大腦是一個 30 → 24 → 3 的小網路:輸入是過去 30 天每天的漲跌幅(百分比),輸出三個分數,分別代表「不動」「買」「賣」,取最高的那個。

content/posts/trading-agent/components/trading.ts
export function observe(closes: number[], day: number): Float32Array {
  const out = new Float32Array(WINDOW); // WINDOW = 30
  for (let i = 0; i < WINDOW; i++) {
    const t = day - (WINDOW - 1) + i;
    if (t >= 1) out[i] = ((closes[t] - closes[t - 1]) / closes[t - 1]) * 100;
  }
  return out;
}

為何用神經進化來訓練交易策略?

傳統的機器學習方法往往需要大量標註數據來訓練,而金融市場的特性(非線性、黑天鵝事件等)使得這種方式不夠靈活。相比之下,神經進化演算法有幾個優勢:

  • 無須梯度計算:「這一年賺了多少」不是一個可以微分的目標。神經進化不依賴梯度下降,而是靠試錯尋找更好的策略。
  • 探索與開發並重:保留菁英的同時不斷引入隨機個體,在「探索新策略」與「優化現有策略」之間取得平衡,避免陷入局部最優解。
  • 適合沒有標準答案的問題:市場數據沒有「正確的買賣點」可以標註,神經進化讓機器人直接根據自己的交易結果來學習。

交易機器人的學習過程

想像你的機器人是一群剛進入市場的新手交易員,沒有任何交易經驗,但可以透過不斷試錯來學習:

1. 初始狀態:像個賭徒

  • 機器人開始隨機買賣股票,完全沒有策略可言。
  • 第一代的交易日誌通常是一團混亂。

2. 初步適應:開始認識這段行情

  • 經過幾代訓練,倖存下來的機器人買賣次數變少,動作開始集中在某些時間點。
  • 牠們的交易決策看起來開始有邏輯,不再是純粹亂賭。

3. 策略成形:學會避開大坑

  • 最優秀的機器人逐漸發展出更一致的做法,例如在連續下跌之後買進。
  • 這時候進化曲線會越過買進持有的那條虛線。

4. 持續進化:報酬率繼續往上爬

  • 訓練足夠多代後,圖上的買入點會越來越集中在上半年股價較低的區段。

看到這裡先別興奮,下一節才是重點。

它到底學到了什麼

用預設參數訓練三十代,最佳策略的報酬率大約是 +43%,明顯高於買進持有的 +34%。看起來機器人打敗了市場。

其實沒有。我用六組不同的隨機種子各訓練了三十代,報酬率全部落在 43–44%,而且贏家做的事幾乎一樣:大部分的買入集中在股價還低的上半年(全年最低點是 4 月 19 日的 165 美元),到年底幾乎滿倉,中間再做幾十次小幅的高賣低買,其中約九成是賺錢的。

2024 年蘋果整年上漲了 35%。在這種行情裡,任何「趁便宜買滿、抱到年底」的策略都會贏過「一月二日就用 185 美元買滿」。

這正是下面幾個風險的具體樣子。

交易 AI 的潛在風險

雖然神經進化可以在一段歷史數據上找到漂亮的策略,但它並非萬能:

  • 過度擬合(overfitting):AI 可能在歷史數據中發現毫無意義的模式,導致策略在未來的市場無效。上面的 +43% 就是一個活生生的例子。
  • 市場異常波動:突發的新聞或政策變化可能讓機器人無法適應,導致虧損。訓練資料裡沒發生過的事,它不可能學到。
  • 演算法偏見:如果演化過程中沒有足夠多樣的市場環境(這裡只有一檔股票、一個多頭年),AI 會發展出只適用於那個環境的行為,例如「買滿之後就抱著」。換成一個下跌的年份,同樣的習慣會賠得很慘。

要讓這個實驗更誠實,至少需要把資料切成訓練期與測試期、加入交易成本,並且在多檔股票、多種行情上評分。

結論:AI 交易並非神話,但也不是魔法

神經進化演算法為交易機器人提供了一種強大的學習方式,讓牠們能夠針對一段市場自動找到有效的策略。但需要記住,交易始終伴隨風險,過去的表現不能保證未來的收益。這一頁的機器人最會的,是在一段已經知道結局的歷史裡找到最好的劇本。


這篇文章最初於 2025 年 4 月發表在我的舊站。搬到這本筆記時,互動元件用 TypeScript 整個重寫了。