BTC 自動交易策略研究 全程模擬

1目標 — 想答咩問題 2方法 — 數據、引擎、驗證階梯 3發現 — 五個結果 4分析 — 點解會咁 5結論 — 落咗咩、可以期望咩

1目標

最初嘅要求好簡單:整個 BTC 自動交易 demo,再搵個 Sharpe 高嘅策略。

但做落去,真正嘅問題變咗:

  1. 個 demo 行緊嘅策略係咪真係得?(答案:唔係,四年蝕 66%)
  2. 點先知道一個策略係真有優勢,定係我喺一大堆組合入面揀中咗噪音?

第二條先係整份研究嘅核心。任何人掃一千組參數都一定搵到「靚」嘅結果 —— 問題係點分辨真假。

2方法

數據

全部 1 小時 K 線,由公開交易所 API 抓,零 API key。 XRP 原始數據有個 905 日缺口(SEC 訴訟期間美國交易所下架), 表面上完全睇唔出 —— 檢查連續性先發現,已經自動只保留最長連續段。

引擎

驗證階梯

每一級都比上一級難呃。整份研究嘅價值就喺呢度。

  1. 樣本內掃參數喺全部歷史揀最好嗰組。最容易,亦都最冇意義。
  2. Walk-forward前一年調參數,之後半年落場,滾落去。好過上面,但每個 fold 換參數本身就係噪音。
  3. 參數高原唔睇單一格,睇高分區有冇連成一片。單點靚 = overfit。
  4. 封存驗證揀參數只准用截止日之前,之後嗰段一次過驗,永不回頭。
  5. 跨幣種同一組參數要喺 8 隻獨立嘅幣度都企得住。最難造假,因為啲幣係真正獨立嘅樣本。
  6. 未見過嘅幣喺一半幣揀,喺另一半完全冇見過嘅幣驗。跑齊全部 35 種切分,睇分布唔睇單一次。

3發現

發現一:原本個策略係蝕錢嘅

Demo 最初行 EMA 交叉 + RSI 濾網。四年 Sharpe -0.61,蝕 66%, 回撤 73%,炒足 623 次。

成本敏感度(同一個策略,只改手續費):

零成本(發夢)Sharpe +0.74
3 bps+0.46
15 bps(我哋假設)-0.61
30 bps(散戶)-1.86

佢唔係冇訊號 —— 係每次交易嘅優勢細過來回成本。623 次 × 0.3% ≈ 燒咗 187% 本金落手續費。

發現二:高頻完全唔需要

同一組參數、同一段時間長度嘅均線,淨係換 K 線大細:

由 1 小時到 1 日,Sharpe 全部 1.42–1.44。邊際效益喺「時間長度」,唔喺「取樣密度」。 個策略一年只做 次交易。

發現三:趨勢質素指標有真料,Hurst 冇

用條件前瞻回報驗(唔經策略揀選,所以冇 overfit 空間):睇「呢一刻之後 7 日賺幾多」。

指標區間樣本平均 7 日回報勝率
ADX 低23,489+1.87%54%
ADX 高5,956+4.28%69%
回歸 R² 低13,504+1.78%57%
回歸 R² 高23,608+3.10%60%
Hurst 低15,969+2.99%54%
Hurst 高7,370+1.99%54%

ADX 單調而且分得好開。Hurst 完全冇分辨力 —— 高嗰邊反而差過低嗰邊,已經劃走。 另外:回歸本身(OLS 斜率)冇新資訊,佢基本上就係另一條移動平均線。有用嘅係「趨勢質素」, 唔係將「趨勢方向」再算一次。

發現三點五:偷望一支 K 線,成績誇大 4.8 倍

呢個唔係我哋計劃入面嘅測試 —— 係諗緊「可唔可以行快一日」嗰陣意外量到嘅。

中間嗰行先係真。 第一行係用第 i 支嘅收市價做決定、然後喺第 i 支嘅開市價成交 —— 即係用一個當時仲未見到嘅價去落單。條數睇落好靚:回報由 232% 變 1,986%。

值得記住嘅唔係「唔好偷望」呢句廢話,而係個倍數。一個好隱蔽、差一格 index 嘅 bug, 可以令你以為搵到寶。所以 tests/ 入面有個專門捉呢樣嘢嘅陷阱測試: 對第 i 支 K 線有完美預知,唔可以喺第 i 支賺到 —— 引擎一改成收市價成交就即刻紅。

第三行順帶答咗另一條問題:遲一日成交要俾 22% Calmar。即係話個策略對執行時機唔算敏感, 但都唔係免費 —— 值得保住而家嗰個時序。

發現四:單幣種揀選會崩塌

呢個係整份研究最重要嘅數字。
喺 BTC 度揀最好嗰組參數,攞去其他 7 隻幣:Calmar 1.64 → 0.18
共同窗口版本更差:1.39 → −0.10,直接變負數。

而且揀嘅時候分數越高,之後跌得越犀利:

喺邊隻幣揀該幣分數其他幣中位數差距
SOL1.82−0.09−1.91
BTC1.39−0.13−1.52
ETH1.100.13−0.97
DOGE0.840.32−0.52
ADA0.32−0.18−0.50
LINK0.260.29+0.03
LTC0.170.38+0.21

跑齊全部 35 種「3 隻幣揀 / 4 隻幣驗」切分:訓練分數中位數 0.48,未見過嘅幣中位數 0.13, 35 個入面 27 個變差,衰退中位數 −0.26。

發現五:沽空係一份保費貴過賠償嘅保險

沽空喺熊市的確有用,但長開就有害。試過五種開關條件(慢線下斜、ADX 確認、跌穿長期均線⋯⋯), 冇一個打贏得到「唔沽空」:長倉 only 中位數 0.40,最好嘅閘門 0.39,而且最差嗰隻幣仲衰過。

沽空腿逐隻幣睇,賺錢嘅正正係有持續熊市嗰啲:

沽空腿名義上賺 +6%,但加入之後 BTC 十年總回報由 7,982% 跌到 5,325%
原因:喺上落市蝕嗰啲錢,本來可以喺長倉度複利。唯一真正有價值嘅係 2022 年 —— 蝕幅由 −38% 減到 −17%。

發現六:多幣組合 —— 「鋪得闊」有用,「揀最強」冇用

做開加密貨幣嘅人最常講嘅一招係橫向動量:每日排一次名,只揸最強嗰幾隻。 我哋開頭用 7 隻幣試,數字好靚,但 7 隻根本冇得分兩個籃驗證。今次擴到 隻,先夠位做真正嘅測試。

全部一齊 in-sample 跑,最好嗰組係 ,Calmar —— BTC 嘅三倍幾。呢個數字我特登擺喺最前,因為佢冇意思: 佢就係一份唔留 held-out 嘅研究會 print 出嚟嘅嘢。

真正嘅測試係:將啲幣隨機劈成兩個唔重疊嘅籃,喺第一個籃揀參數,喺第二個籃報成績, 重複 次。

3.22 → 0.88。但重點唔喺個跌幅,喺最後嗰兩行:
排名贏唔到「完全唔排名」。greedy 同 plateau 都只係 5/ 贏等權, 中位數差距 −0.03−0.02
即係話:做嘢嗰樣係趨勢過濾器 + 鋪得夠闊,唔係「揀最強」。

順帶一提,呢次連 plateau 都救唔到。之前單幣種嗰陣,plateau 明顯穩陣過 greedy; 今次兩個一齊冚 —— 因為呢度過擬合嘅唔係參數,係個籃

我仲做多咗一個特別乾淨嘅測試:喺 IBKR 買唔到嗰 24 隻幣度揀參數,拎去 13 隻買得到嘅度跑。 測試籃完全冇參與過選擇:

睇落好似證明咗啲嘢。但同上面 12 個 split 擺埋一齊睇就唔可以咁讀: 排名係擲毫,所以呢個 1.75 大機會只係「呢個籃啱啱好」。真正穩陣嗰行係第二行 —— 13 隻等權,一個參數都冇揀過,就已經 2,187% → 4,702%

最後一關,亦都係唯一可以決定要唔要改上線策略嗰關:封存最後兩年, 呢段期間整份研究從來冇攞嚟揀過任何嘢。唔揀參數,淨係問「等權籃係咪好過淨 BTC」:

改唔到。喺封存期,IBKR 真係買到嗰 13 隻等權 0.43,輸畀淨 BTC 嘅 0.75
贏到嗰個係「全部 37 隻」(0.98,回撤細到 18%)—— 但入面有 24 隻喺 IBKR 買唔到,做唔到。
所以 demo 維持 BTC 單幣。多幣組合喺呢度記錄成一個否定結果,唔係一個功能。

發現七:成交量指標 —— 真係有資訊,但對 BTC 打和

加密貨幣圈成日講「跟住成交量」。試咗四種成交量閘(OBV 斜率、資金流 CMF、 企喺 VWAP 之上、成交量高於平均),喺 隻幣度驗。

問題係:跌市入面任何「減少落場」嘅做法睇落都會靚。所以真正嘅測試唔係同「冇 gate」比, 係同同樣場內比例、但完全隨機開關嘅閘比 —— 淨喺封存期做,每個閘隨機試 40 次:

成交量高於平均打贏隨機中位數 35/,即係話呢個唔係「少咗落場」嘅假象, 係真係有跌市資訊。
但攞去 BTC 自己度睇:呢個閘封存期 Calmar 得 0.41,反而輸畀「冇 gate」嘅 0.54資訊係真,但對 BTC 打和 —— 冇落。

發現八:鏈上/whale 代用指標 —— 16 個訊號,中嘅數目同買彩票差唔多

試咗 個鏈上訊號(每個兩個窗口):whale 代用嘅平均轉帳金額、 活躍地址數、交易筆數、鏈上轉帳總額、手續費、算力、NVT。每個都同「將訊號旋轉去歷史上 另一個時間點」嘅 null 比,打贏隨機 90% 以上先算數。

揀參數期 / 過關,封存期 / 過關 —— 同純靠彩數預期嘅比例(10%)差唔多。
更關鍵嘅係:揀參數期嗰個贏家(鏈上轉帳金額,30 日窗)喺封存期唔喺贏家名單度 —— 封存期贏嘅係算力(90 日窗)同鏈上轉帳金額(90 日窗,唔係 30)。贏家換咗人, 即係話揀參數期嗰次係噪音,唔係訊號。16 個都冇落。

發現九:因子回歸 —— 試咗 24 個係數,0 個唔似係彩數

BTC 同乜嘢一齊郁?回歸落 SPY、QQQ、黃金、長債、美元指數、3 個月息率、 10 年孳息、

單週相關唔弱(SPY 0.20、QQQ 0.21),但呢啲係「解釋」唔係「預測」—— 攞嚟做未來一週嘅回歸,先睇下呢層關係穩唔穩:

SPY beta 每兩年重估一次:+1.50 → −1.80 → 0.02 → −0.53 → +2.27。 連符號都唔穩定,呢個唔係「BTC 同美股嘅關係」,係「你揀邊兩年」。

逐個因子單獨做未來一週嘅預測(避免多因子互相抵銷),再分頭 70% / 尾 30%(封存)兩段睇:

一共試咗 個係數,|t| > 2 嘅有 (純靠彩數預期會有 個)。 個因子喺兩半樣本 符號相反
即係話:呢批因子講到 BTC 係乜(單週會同乜齊上齊落),但講唔到 BTC 聽日會點 —— 呢個回歸唔可以攞去買賣。因子擇時,冇落。

4分析

點解單幣種揀選會失敗

十年 BTC 聽落好多數據,但獨立樣本其實得大約 十幾個市場情節 —— 幾個牛市、幾個熊市、幾段上落市。 喺 1,299 組參數入面,梗會有幾組啱啱好夾到嗰十幾個情節。呢個唔係優勢,係用一千個籤去抽十幾個結果

加幣之所以有效,係因為佢真正增加咗獨立樣本,而唔係將同一條價格路徑切得更細。 一個 1 小時 K 線嘅 BTC 序列有 87,659 個數據點,但佢哋高度相關;八隻幣就係八條真正唔同嘅路徑。

我自己犯過嘅錯,連埋改正:

高分數係 overfit 嘅證據,唔係質素嘅證據

發現四嗰張表入面,關係係倒轉嘅:兩個「揀出嚟最靚」嘅(SOL 1.82、BTC 1.39)崩塌得最犀利; 兩個「最難睇」嘅(LTC 0.17、LINK 0.26)反而係唯一 travel 得到嘅。

封存驗證講緊同一件事:系統自己揀嗰隻,訓練期 Calmar 6.43,封存期實際交出 0.27 —— 衰退 24 倍。

點解要用 Calmar 而唔係 Sharpe

Sharpe 可以用一個賤招造靚:坐喺現金度。有個版本 Sharpe 1.37 睇落好靚, 但拆開睇 —— 1,461 日入面只有 162 日真係有倉,89% 時間貢獻零波幅,把個分母壓細咗。 總回報只有 +130%,而基準版本有 +313%。

所以揀選改用 Calmar(回報 ÷ 最大回撤)+ 最低持倉 20% 門檻。

5結論

落咗咩

點解揀呢組:唔係因為佢喺 BTC 度分數最高,而係因為最多獨立切分同意佢 —— 5 個手選分層切分入面贏咗 3 個,包括訓練集係三隻跌得最慘嘅幣嗰個。

BTC 成績

八隻幣成績

可以期望咩

試過但冇落嘅

呢啲唔係「未做」,係做咗、輸咗。記低佢哋同記低贏嗰啲一樣重要 —— 一份只講成功嘅回測報告,本身就係一個 overfit 嘅訊號。

試過乜結果點解唔落
沽空(5 種開關條件)長倉 only 0.40 / 最好嘅閘門 0.39 2022 年有用,其餘時間侵蝕複利:10 年 7,982% → 5,325%
價格追蹤止蝕(減倉唔清倉)未見過嘅幣 0.39,對 0.52 70 個切分只贏 32 個,靚數字係孤例
戶口層斷路器未見過嘅幣 0.57,對 0.52 呢個落咗 —— 70 個切分贏 48 個
橫向動量(排名揀最強)訓練 1.86 → 未見過嘅籃 0.88 贏唔到「完全唔排名」(5/12),排名本身冇 edge
多幣等權籃封存期 0.43,對淨 BTC 0.75 贏嗰個版本(37 隻,0.98)有 24 隻 IBKR 買唔到
成交量閘(4 種)最好嗰個對隨機 35/37,但 BTC 封存 0.41 對 0.54 有真資訊,但套落 BTC 自己度打和
鏈上/whale 代用指標(16 個)揀參數期 1/16、封存期 2/16 過 90% 門檻 贏家換人 —— 揀參數期嗰個喺封存期唔見咗,係噪音
因子擇時(8 個宏觀因子)24 個係數,0 個 |t| > 2 SPY beta 每兩年跳一次符號,關係唔穩定

唔好信咩

  1. 任何只喺一隻幣度驗過嘅回測。差距可以係 1.64 → 0.18。
  2. 任何只喺一個籃度驗過嘅多幣策略。差距可以係 3.22 → 0.88, 而且贏唔到「乜都唔揀」。
  3. 任何冇封存驗證嘅數字。訓練期 6.43 變 0.27 係常態,唔係例外。
  4. 任何只報最好一格嘅參數。要睇高原,單點靚就係 overfit。
  5. 任何冇扣成本嘅 Sharpe。原本個策略零成本 +0.74,扣咗 15 bps 就變 −0.61。