青銅時代:中本聰之惑
* 本文不代表我所任職機構的任何觀點
** 本文不提供任何交易建議
*** 本文在技術層面上完全屬實
序
我最後一次的登錄上了那些在雲端伺服器,把在運行的進程一個個kill掉,再把交易的log一個個備份到本地,最後我用一個rm -rf的命令刪除了殘留的所有文件。然後我撥通了龍大的電話,說:F.I.A.S.C.O (大逃亡)。至此,一場旅途結束了。壹
4月的伯克利天氣還沒有轉熱的跡象,在酒吧裡面,學生們依舊 hoodies 為主。當時我剛剛畢業,還沒有完全離開學校,在給 Stochastic Calculus 這門課做 TA。還逗留在伯克利的幾位同學約著來 Shattuck Ave 上面的小酒館打撞球,聊天。之中 Kevin 是個很有個性的同學,他很少來上課,幾乎不寫 group homework,每次在家找到他也是埋在啤酒罐中。那天他反常的很亢奮,跟我們說他之前花一萬美金買的一千個比特幣最近讓他已經賺了20倍了,畢業第一年是不是工作無所謂了。Kevin 大談比特幣的通縮本質對於普通人戰勝通脹的意義,以及自己堅定要持有到500美金/每個比特幣再拋售的信念。當時有一件事情吸引了我,就是比特幣在若干不同的交易所交易,而這些交易所都是民間愛好者自己搭建起來的網站,我覺得採集這些價格數據會很有意思,於是準備回家寫一些爬蟲抓數據。當時比特幣對於我完全是技術上的吸引,我當時剛剛讀完書,篤信市場有效性在絕大部分時候存在,加上手上閑余的錢也不少,對金錢感覺比較淡薄。後來一周悟空來找我下載美國股票的高頻數據。由於我屬於商學院,可以免費弄到這些數據。悟空是一個很有意思的人,他在伯克利統計系做博士研究,但是一心只愛做交易,尤其是高頻交易。從來沒人給他錢,他也到處找數據,月復一月每個周末自己 clean data,期望可以做出一個 sharpe ratio 高的策略來帶著去投奔某個對沖基金,或者自營交易公司。那天拷貝數據後,我跟悟空聊到了比特幣,我說股票市場競爭太激烈,你不如看看比特幣,也許有些好玩的,我這裡還有些比特幣數據,自己抓的,你看看吧。然後我就繼續給學生改作業去了。過了好幾天我都不記得此事了,悟空打電話給我,非常亢奮的說,這不 make sense,這東西交易所之間價差太大了,為什麼沒有人套利。我說那肯定有隱藏的限制你不知道的,不然市場的割裂(market segmentation)不會那麼大。於是我們兩個人開始研究具體如何套利,或者說,如何搬磚。很快我們發現了幾個核心的限制:1. 大部分的交易所因為法律問題關閉了註冊;2. 比特幣的轉賬鏈(兩個交易所之間)需要5到60分鐘(這個耗時跟比特幣的原理有關)——這段時間的價格波動足以消磨掉大部分的利潤;3. 當時最大的價差在中美交易所之間,但是人民幣管制,不容易形成回復(美元->比特幣->人民幣->美元->...)
我們當時想出了一系列對策:1. 爭取找到可以註冊的交易所,當時比特幣交易所多入牛毛,總有繼續讓人註冊的2. 如果交易所之間價差夠大,就不怕這5-60分鐘的波動了——大概率我們會有盈利3. 有很多辦法可以找到換匯渠道,這一點應該有希望解決熟悉後,我說,咱們去實際交易一筆吧,看看到底有哪些問題。貳
當時找不到可以直接美元買入的網站,但是人民幣有很多交易所,最大的是比特幣中國(btcchina)。我們搜索了很久,發現了一個網站叫做 Local BTC,大概思路就是你可以預定比特幣,然後形成潛在交易後,網站幫你凍結賣家一部分比特幣,等你轉賬後,這部分比特幣就歸你了。相當於 Local BTC 承擔了一個支付寶的功能。比較再三,我們選了一個埃及的賣家,準備開始我們的第一單。當時兩個人很慫,特別怕被騙,於是安排一個人留在家裡跟賣家 Skype,忽悠住賣家,一個人跑去轉賬。於是我就跑出來去銀行給賣家轉賬。這樣可以賣家打款後第一時間我們在中國地交易所上賣掉。第一筆交易我們買了0.94比特幣,這數字太難忘了。當我走出銀行打電話給悟空說已經交款時瞬間有種天橋下賣馬克賣英鎊的外匯販子的即視感。
第一單最後賺了30%,這讓我高興得中飯加了個雞腿。當時我們就想在美國哪裡可以買到大量的比特幣。Local BTC 上面都是零售商,數量太小,而美國最大的幾個交易所,比如 Mt. Gox 都關閉了註冊。這時候我們發現加拿大的交易所 Virt Ex 有可能註冊,但是要註冊公司,於是我們就聯繫加拿大的朋友辦理註冊公司的有關事項。還在我們熱火朝天準備去多倫多開公司時,我們發現國內的比特幣玩家用已經在瘋狂地擠壓現有的利潤空間。當時兩地的比特幣價差長期維持在30%-50%,於是很多國內有美國交易所賬戶的比特幣玩家,大量買入比特幣,在中國賣掉後在淘寶用8:1的匯率換回美金(當時中美匯率已經是6.2X了),繼續套利,這讓兩邊價差迅速縮減。我們感覺等不到我們辦好加拿大賬戶利潤空間就不會存在了。叄
這時候我的爬蟲已經收集了接近一個月的數據了,悟空仔細分析了一下,發現人民幣的幾個交易所:BTC China、火幣網、Okcoin 之間經常也有不小的價差,而且三個開戶都很方便。同時國內的交易所率先開始提供借入比特幣的功能,這讓悟空開始設想是否可以就做人民幣交易所之間的套利。那麼是直接在價格低的交易所買入,然後直接轉賬去價格高的交易所,再賣出嗎?這看起來很簡單,但是同樣你需要承受那個5-60分鐘的轉賬價格波動,因為你沒有對沖。這時候悟空想出了全新的套利方式,有一個例子來說就是:一開始你左右手各有一個蘋果,各有10元,此時兩邊的蘋果價格都是10元然後左右手的蘋果價格變化了,左手的變成了8元,而右手的變成了12元那麼這兩個蘋果的價值變化呢?雖然我們還是有兩個蘋果,但是蘋果可能貶值了啊。這就要用到國內比特幣交易所創新的「融資融券」功能了:
只要我們拆解一定數量的比特幣,那麼就可以沒有風險的做這個交易了,因為蘋果本身的價值已經無關。可是最核心的問題是,有時候兩個交易所價格不會真的逆轉,比如 BTC China 長期比火幣網價格高,這時候怎麼辦?這時候你要算出兩邊價差的平均水平了,在價差大於平均水平時候搬蘋果到一邊,在價差小於平均水平時搬回來。搬過去的過程是賺錢的,但是搬回來有可能是虧錢的,總體還是盈利。如下圖:假設兩個交易所的差價均值在100,但是穩定的震蕩於這個均值附近,你就可以在離群點(outliers)做對應的正反向搬磚了。這時,從單筆交易來看可能是虧損,但是從一個交易迴路來看,統計上顯著盈利。肆
到了這一步,這個交易已經不是一個純套利了,而是一個統計套利——我們賭兩個市場的價差穩定在一個水平附近,而且價差的波動率也穩定。從數學的角度上來看,兩個交易所的價格(P1和P2)符合以下關係:確定了這個交易的方式,我就開始實現這套跨交易所的交易系統了。本著沒有好名字就沒動力好好編程的精神,我先命名了所有的組件:- Optimus:擎天柱大哥,看盤終端,GUI
- Nirvana:涅槃,數據抓取系統——比特幣網站的介面那個爛,經常crash,用涅槃寄寓我們希望穩定抓數據的心愿
- Einstein:主程序,做主要的演算法交易邏輯
- Achilles:阿基里斯,下單系統
其中Achilles是最有意思的,當時很多比特幣交易網站都沒有API,所以只能夠用Javascript注入的辦法下單,簡而言之,就是一個機器人,模擬人登錄網站,模擬人點滑鼠下單。當時做起來非常噁心,很多邊際情況。經過大量的實驗,我個人強烈推薦兩個好用的庫:
- ariya/phantomjs · GitHub
- Selenium - Web Browser Automation
當然用 Node.js 直接包裹 V8 來操作也是非常黑科技的做法。只是當時趕時間,沒有機會繼續深入研究了。
這套系統開發了3周時間,我一個人碼的 code,之前在學校裡面完全沒有機會去實踐的寫一套交易系統,還是碰到了很多的問題。當時最大的難點是,每次搬磚都需要兩個交易所同步下單,但是兩邊的成交數量可能不一樣,這樣後面就需要追單。我們提出了兩種解決辦法:
- 線性下單,先下單價格變化快的交易所,得到成交數量了,再下單變化慢的交易所
- 追單,同步發單,然後每次邏輯循環檢查整個系統的風險敞口,如果不為零就在單邊補單——如果要買比特幣就去低價交易所,要賣比特幣就去高價交易所
今年國內的分級基金套利非常的火熱,我想也有類似的問題,同時下單 A、B 基金,技術上如何操作,最簡單就是線性下單——先買入B級,因為B級動得相對比較快,再根據成交數量買入A級。但是要追求極致的滑點,就必須同步下單了——歡迎進一步的討論。
Miscellaneous for geeks:
- 開始交易後,一天早晨,我正要看昨夜的收益情況,發現自動重新登錄系統被火幣網封鎖了——我們的系統會每20分鐘自動登出登入一次防止下單時 session 過期——是的,他們給設了驗證碼。早上碰到這種事情心情一下子很 kuso,突然一下腦洞大開,我想到了他們還有一個移動網頁端(http://m.huobi.com),check 了發現移動客戶端沒有驗證碼,於是我讓程序去移動端登出登入,獲取了 session 後,再切回桌面端下單。那個早上瞬間心情無比美好。
- 之前我們的程序一直在我本地交易,延時在 300ms 左右,因此我們測試了阿里雲、盛大雲等很多雲服務,最後發現盛大雲 ping 他們伺服器的 latency 最小,在10ms 左右,於是我們全部切換去盛大雲交易了,完成了「co-location」。
伍
由於所有的交易所都在國內,我和悟空也一段時間不在國內了,沒法自己去處理轉賬這些事宜,於是我找了發小「龍大」。龍大自己在國內運營一家PE、VC公司(如果有對融資感興趣的朋友,戳:唯通資本),相對於有點學究的我們,非常的接地氣,實在是國內 operation 的不二人選。在聽我非常激動地胡言亂語了一通後,龍大雖然不完全明白我們的策略,也很靠譜的準備去了。
都準備好了以後,我們就開始交易了,當然無論是策略還是系統都遇到了相當多的細節問題,此處需要省略數萬字調試過程。由於我們不停地加倉和增加頻率,很快我們單個交易所的交易量就達到了一個天文數字:
雖然看著很嚇人,但是每筆交易的利潤是非常薄的,而且如此套利的容量很有限,多少有點賺了吆喝沒賺錢的感覺。但是過了前一個月後,我們基本無需操心了,該幹嘛幹嘛,早上起來收點小零花錢就好了。從0搭建一個交易系統的快感你只有自己體驗了才會懂。後來逐步把PnL查看也弄得高大上了
運營到2014年的2月份,當時比特幣界發生了一件大事,就是總部位於日本的交易所Mt. Gox倒閉了,給全球的比特幣價格帶來了巨大波動性。
結果那段時間成了我們盈利能力最強的時間,因為各個交易所之間價格經常脫鉤100元以上,單次套利的利潤空間變得非常大。當然最萬幸的是,我們沒有在Mt.Gox交易,不然也是血本無歸了。尾聲
在運行了近8個月後,我和悟空最終決定把這套系統關閉。當時主要有三個原因:
- Mt. Gox 倒閉後,大家一度對比特幣信心銳減,交易量也在到頂峰後開始暴跌。我們的利潤空間越來越小了
- 我和悟空都慢慢開始全職工作了,也不應該在外面做自己的交易了
- 傳聞央行要限制國內比特幣交易所的存取款通道了,這樣資金也會越來越不安全
但是這8個月留給我很多 enlightenment,也讓我和悟空成了無話不說,經常一起討論市場的好朋友。最後我們兩個一起總結的時候,發現我們策略和交易系統的年化利潤率是280%,而 Sharpe Ratio 在11左右。
之前我從來不相信有 Sharpe Ratio 超過5的策略,但是自己實現後發現原來真的存在—— Sharpe Ratio 10 以上基本代表你的策略全年沒有幾天在虧損,而方差完全來自於每日盈利的多少的差別了。
後來我自己開始做美國利率市場的自動化交易,也認識了越來越多做各種「奇異資產」套利的朋友——包括Diablo遊戲道具、在線德州撲克,發現了一個有意思的規律:
准入門檻(資金上、技術上、政策上)越高的東西,策略越簡單,而門檻越低的東西,策略越複雜
美國的利率、國內的股指期貨,都是進入門檻並不高的資產,因此交易策略的設計和調優相對複雜很多,而比特幣、Diablo遊戲道具這種,由於搭建一個像樣的交易系統都需要費很多功夫,裡面需要的策略並不複雜。
所以,一個套利或者交易的團隊,需要能夠準確估計投入產出的能力。假設自己技術實力很強,但是策略能力不強,就可以多介入比特幣這種奇異市場,利用技術力量去抹平市場間的無效性;如果策略能力強勁,則可以做中低頻的常見資產;如果技術和策略實力都非常強勁,則可以去嘗試各種活躍資產的高頻Alpha交易——這需要科技和策略的完美結合——這也正是高頻交易的迷人之處。
一年後(2015年),大老闆 MD 安排我帶哈佛 CSE 專業的學生做一個 Industry Project (Course 297r,Applied Computation 297r. Computational Science and Engineering Capstone Project),我想起了比特幣的這段經歷,於是把之前的數據找出來,給他們研究比特幣的交易策略。除了我們做的這種 Pairs Trading 的策略,他們還研究了 Hidden Markov Chain 和其他技術指標交易辦法。如果對結果有興趣的,歡迎查看他們的 Report:
https://www.dropbox.com/s/zcbph5labk0u3pg/297_Report.pdf?dl=0
2015年夏日於紐約
推薦閱讀:
※如何看待 Craig Wright 宣稱自己是比特幣創始人中本聰?
※如何看待今天(2013 年 12 月 5 日)在「央行通知」發出後比特幣在 16 時的暴跌?
※比特幣和投資理財之間有什麼關係?
※丟失比特幣的貨幣能否重新放回挖礦池中?
TAG:比特币Bitcoin | 金融 | 编程 | 套利 |