跳到主要內容

Engineer + Trader can be something else

尋找 Alpha !


我們的核心目標是透過不斷地進行市場研究來建立交易策略,再透過程式進行相對高頻的交易,而這些策略是必須具有可重複、可規模化等特性。


常見流程如下:

一、研究數據

在研究的工作上,我們會透過觀察數據找出最佳潛在的交易機會 — — Alpha 。

二、發想交易策略

基於交易訊號來建立「交易策略」,通常好的訊號要有很穩固的策略基礎原理,也就是核心邏輯,如果從數據直接推倒訊號,則有點倒因為果。

三、寫程式進行自動交易

最後,利用交易策略來編寫程式進行自動化交易,這階段的重點是「回測」,回測在未來不一定適用,但不回測就沒信心上線。並透過交易的結果持續優化策略。


以我最近(從2021/9/22開始),投入 BTC/USDT 這個 trading pair $5000 USD 的小額試單為例:


首先,比特幣市場特性為

1. 用戶在合約市場可以輕易開高倍槓桿

2. 由於行業缺乏監管,主力可以來回收割散戶籌碼,精準打止損爆倉是家常便飯(所謂價格不變,倉位不見)

3. 存量市場,博弈性質強烈

  • 永遠是散戶賠錢,握有交易數據與龐大資金的量體的主力賺錢
  • 開空的散戶多了,就漲了
  • 開多的散戶多了,就跌了

根據上述先驗知識,我們在想有沒有辦法可以預先解析主力動向?很難。但我們只要知道大部分散戶在做什麼,反著做就可以了!為什麼?因為 BTC的價格會傾向往阻力最小的方向移動。

那什麼是阻力最小?我們得先有一個假設:

散戶喜歡開高倍槓桿,主力機構一般不開槓桿!

多頭槓桿倍率高 ⇒ 多頭車重,容易翻車; 空頭槓桿倍率高 ⇒ 空頭車重,容易翻車

e.g., 空頭平均槓桿是2倍; 多頭平均槓桿是20倍。那麼機構傾向空方,因為拉 -5% 比 拉 +50% 容易

在大多數時候,多空槓桿倍率不會相差太多,但若行情到了關鍵位置:往往多空倍率會嚴重失衡!

這時候選擇當槓桿倍率高的對手方⇒賺錢機率基較高。

該如何知道哪邊的槓桿倍率比較高?

由眾多期貨數據組成,其中一個重要是資金費率。

永續合約的資金費率

在加密貨幣衍生品市場,有一種特別的期貨,它的特色是沒有到期日。所以引入資金費率來平衡價格,用來促使促使永續合約貼近現貨價格的一種機制。
  • 合約價格高於現貨價格時:

    • 資金費率為正
    • 多方支付空方利息
    • 促使多方平倉,賣出手中的合約⇒降低價格
  • 合約價格低於現貨價格時:

    • 資金費率為負
    • 空方支付多方利息
    • 促使空方平倉,買進市場上的合約⇒提升價格

👉 永續合約偏離現貨價格越多,資金費率德絕對值越高


掛單簿,掛單分兩種:

  1. 帶有交易意圖的掛單
  2. 造市商(Market Maker)的單

造市商原則上只提供流動性,吃兩種利潤:

  1. 點差
  2. 交易所 maker fee rebate

當市場槓桿過高,把正常掛單掃掉,吃到造市商點差單的時候

⇒就會導致永續合約價格較大幅度偏離現貨價格

⇒進而造成資金費率過高或過低


結論

  • 散戶看漲情緒濃厚

    資金費率過高,多頭槓桿較重 ⇒ 出場/做空

  • 散戶極度恐慌

    資金費率過低,空頭槓桿較重 ⇒ 進場/做多


而我依照以上交易邏輯,用 golang 寫了一點簡單的程式,進行回測5年。並 24 小時不間斷地在我於美西的機房執行,而這近兩個月的已實現績效約為 300%,平均持倉為 4~7 天,sortino ratio 超過 100(因為回撤很小且勝率近乎100%,應該沒意義),而同期比特幣對美金的漲幅,用 Buy & Hold 策略約是 58%。

後記

Bull shit works.. 我個人不太相信技術指標,但這應該算是基於籌碼面的吧 xddd 
總之跟散戶對幹就對了,雖然我也是小 retail ,但還是對韭當割。

感謝 c9s 大讓我參與 bbgo 這個專案,謝謝。

TBC

Rolling APY

Bitfinex Whale

Vectorized Backtesting

留言

這個網誌中的熱門文章

Git 注意事項

使用 Git 的一些技巧 1. git pull 的時候可以用 --rebase 比較不會有多餘的 merge point 2. 善用 squash commit,squash 完心情都很好 3. commit 之前一定要先 format code 一次,不然多出來的 reformat commit 會很難整理 4. 拆 commit,盡可能讓每個 commit 都可以 build & test,也比較好回到上游 5. 如果 local 修改的整理過的 commit tree 要 rebase 上去就只能用 rebase onto e.g., git fetch upstream git checkout -B local-rebase-branch upstream/feature/binance-futures git rebase -i upstream/main .... 改改改 git push -f origin HEAD -B 會洗掉原本就有的 local branch CS Visualized: Useful Git Commands Code Cleanup: Splitting Up git Commits In the Middle of a Branch Git rebase --onto an overview 30 天精通 Git 版本控管

上市的概念

傳統上市流程繁瑣,合規要求門檻太高.. 如果今天只是某個在 Github 上的早期小項目,可不可以直接發幣呢? 發 PR 賺 token ; 發 Issue 出 token (沒有就去交易所買) 利用設計精良的 Token Economic,透過 DAO 之類的方式,可規模、可持續地 distribute token,看需求再 IEO、IDO 等等,感覺會很有趣! 像是把 VC 的概念簡化,希望能讓軟體工業回到“員工股票分紅費用化”以前的年代。

三種資料

  成交前:      OrderBook 上有交易所所有的掛單資料      理論上最好的成交價格 midPrice = (bestAsk + BestBid) / 2 成交時:     Trade Price, Volume ... (Tick Level)      Trade Price 是實際上的成交價格     用法: trade.price 成交後:     根據 interval,累積一段時間的 Trade 資料,有兩種:          1. onClosed()           2. 即時 Stream      用法:kline.close 資料來源可能是 stream 也可能是 web api  , 看各交易所實作的情況 (註記:理論上所謂的成交前狀態應該不存在,那是薛丁格的狀態) 更新:Tick period = average time between changes in the mid-price. Tick 事件有三種可能的發生原因:     1. "BID" (one side is LO)     2. "ASK"  (one side is LO)     3. "TRADE"  (one side is MO, both sides are MO, two LO at the same price) 當 mid price 發生改變的狀態,一定會 emit tick event 更新:這邊的 tick 是 mid price 的話,那要 best bid/ask 改價格才會變動。 撤單下單在 best bid/ask 範圍區間內都會影響! trade 把best bid/ask taken away 那也會影響! 但是假如 trade 不夠多,tick還是不變的!