獨立開發嘗試:如何用股票交易機器人每月賺 3500 美元?

評論
評論
Photo Credit: frankieleon on Flickr

原文  《Stock Trading Bot 》刊登於 Indie Hackers,由合作媒體 36Kr 編譯,INSIDE 獲授權轉載。

編者按:獨立開發者 Sebastian Dobrincu 業餘時建了一個神經網路用於自動股票交易,現在這個機器人每個月能為他賺 3500 美元。我們一起來看看他是怎麼開發這個神經網路並把它做大的。不過不要指望從中找到什麼技術細節,主要是看看他作為獨立駭客是如何做專案的。

背景和專案介紹

我叫 Sebastian Dobrincu,是一名軟體工程師,目前的職業是一名自由工作者。我還是一名熱情的產品製造者,熱愛開發業餘的、瘋狂的商業專案。我的專業背景可以用機器學習、行動開發、設計等來概括。

一開始我做 Stock Trading Bot(股票交易機器人)只是作為個人的研究專案。目的是想試試看現代的機器學習方案能不能以極高的頻率對當今的股票市場進行預測以及自動化買賣。

結果顯示,它在 5 個月內每個月大概就為我賺了 3500 美元,而維護成本只有不到 90 美元 / 月。目前我自己是主要用戶。我打算繼續開發這個機器人,目標是盡可能擴充它的規模。

你是怎麼想到要開發股票機器人的?

冒出這個想法實際上相當偶然。有一次我準備飛去舊金山之前決定先下載一些 podcast 來聽看看。我覺得要試一些新東西,於是就從金融分類裡面選了最熱門的一些內容。在高空中,我點擊了播放讓自己放鬆下來。

這次談到的是流動性的話題,流動性被分為了 3 個方向:價格、規模以及時間。當流動性充裕時,投資者就可以成功地以目前的價格在短時間內做出更大的定單交易。當他們開始爭論高頻交易能否透過提供流動性來改善市場時,我打開了手機的筆記 app,開始奮筆疾書一些重點想法。

在這個專案之前,我對金融的瞭解是相當有限的。我對基礎交易的瞭解很透徹,但除此以外就不甚明白。我希望改變這一點,但我也記得有人說過 99% 的金融書都是廢話。

坐下來,並學習舒適區以外的新東西是極其有益的。

在經過廣泛研究之後,我選定了 Larry Harris 的《Trading and Exchanges》以及 John Hull 的《股權、期貨以及其他衍生品》這兩本讀物。第一本也許是我讀過的最好的金融類書籍。它回答了進行過交易的好奇寶寶可能會提出的所有問題。另一方面,John Hull 的書對數學金融介紹得很透徹,讓我從應用角度瞭解了這門學科。如果你剛剛開始瞭解交易的話,我高度推薦這兩本書。

我相信,我們已經達到了 AI 領域的巔峰。我們現在既有強大的機器也有足夠的數據可以用於 AI 處理。想到這一點,我內心的那位工程師對於利用當代的先進技術來參與市場感到興奮不已。此外,我對於做一些迷人的專案也非常上癮,這個也不例外。

你開發這個機器人用了多長的時間,採用了哪些技術?

我最初的目標是做一個僅聚焦於比特幣(主要是因為比特幣方面的 API 很多)的高頻交易(HFT)機器人。其巨大優勢在於在這裡沒有跟大型交易機構打交道會遇到的障礙。

那是因為在股票交易時,每一毫秒都有可能導致交易出錯——比如你的機器人會成為另一個更快的機器人誘導式報價的受害者(想想誰會有更快的伺服器和機器人?)。但是在加密貨幣中,這些短時間的增量未必就那麼重要。

儘管我認為目前是比特幣市場的黃金時代(因為它還不完美),但我很快(也許太快了?)放棄了這個想法,因為沒辦法找到 FIX 上夠穩定的的 API。這裡面的技術細節我就不想說太多了,因為你會煩的,總之這個交易 API 基本上是基於 REST 的,對於我的目標來說表現還不夠快。

此外出於專利保密的原因我不會公開討論過多技術的實行細節。儘管我收到了很多專案的開源請求,而且我認為公開這個模型或者預測方法的深度細節,不會損害這解決方案對於其他現有機器人的優勢。然而,對於任何想要瞭解更多細節的人來說,我更願意在私下跟你們展開討論。

長話短說,我最終還是選擇了股票市場,但並不是進入真正的高頻交易市場。我的機器人會守住一個點位,市場從數秒到數分鐘不等(有時候甚至是數小時),所以它更像是一個自動化的交易商而不是高頻交易商。背後的原因是,作為個體操盤手你是很難跟大型交易商競爭的,因為你缺乏非常強大的硬體、先進的受訓練軟體等有利條件,伺服器放置的位置也沒有對方好。離股市越近,你收到資訊就越快。那些大型交易商往往要花好幾百萬美元就為了讓自己的伺服器離交易所近幾英里。

交易的話我推薦 Kite,主要是因為他們穩定的 Connect API 以及低頻寬。他們的限制是每秒鐘 3 個請求,對於我的新策略來說這個已經足夠了。拿到可靠的歷史金融數據並不便宜,鑒於有那麼多人跑到提供商那裡去下載數據,所以他們限制提供資訊也沒有什麼好指責的。Intrinio 是一個很好的即時股票報價提供商,而且價格也非常便宜。然而,能拿到更深入的數據永遠都會獲得更好的結果。

第一個原型我大概用了不到一個月的時間。我一般是利用晚上的時間,然後在白天作為自由職業者的工作間歇再寫寫。這個時候機器人還不是很聰明。後來我又多花了 2 週的時間來提供數據給它,直到錯誤率低到令我滿意的程度,然後又用了 2 週的時間來進行測試,最後才投入生產。所以目前這個版本的技術實作前後總共用了 4 個月的時間,一路上都在不斷改進。

你的未來目標是什麼,你打算如何實現這些目標?

自從我公開發表了這款機器人之後,我已經收到了交易公司的 10 多份報價。目前這套系統讓我取得了相對於其他交易商的優勢。如果我把它賣掉的話,我也就失去了對其他交易商的優勢了。儘管我不排除將來出售它的可能性,但目前我的打算是專心改進產品並對其進行擴充。

近期我的打算之一是提高交易金額,讓機器人經手更大的交易量。我腦子裡已經有很多的改進想法,尤其是在調整位置的時間跨度方面,此外還有讓它更輕量、促進更大交易量的解決方案。

你面臨的最大問題是什麼?如果你必須從頭開始的話你會怎麼做?

我在應用高頻交易到比特幣上面浪費了太多的時間。一開始這個想法似乎是很棒的,但我很快在試圖擴大請求數方面遭遇到很多的技術問題。然而,我現在還不敢肯定說實現加密貨幣真正的高頻交易是不是就沒有可能了,所以未來我可能還會回過頭來研究一下。

在由於技術限制而拋棄高頻交易的想法之後,我盯上了自動化交易的一種更加分析性的方法。那些改變大部分都不能應用到比特幣市場上,因為這是高度不可預測的,很難繞著它建立模型。也就是在那個時候我決定去做股票市場。

知道什麼時候該忽略什麼很重要。比方說,我看到很多的獨立駭客盲從於一些只對「有 VC 資金支持的公司」有效的建議。

我剛開始犯的另一個大錯誤是太過於依賴模型。我沒有嘗試用不同的辦法去分析手頭的數據,而是主要靠模型來識別有利潤的模式,沒有投入時間到其他更為直接的解決方案上面。模型只是現實世界的簡單抽象化概念,而我的常識救了我不止一次。

迄今為止,我目前的策略在 95% 的時間都是有效的。當然,從任何意義上來說這都還不是一個可靠的指標,而且還有很多因素會影響到它。這個機器人還沒有經過足夠的測試來確認結果並非僥倖(可能性一樣存在)。大型投資管理公司戶不惜任何代價來實現這些指標,我敢肯定在將來的交易當中我大概保持不了這樣的成功率。迄今為止所取得的成功很大程度上也是受到了有利的行情條件、選擇的股票,以及機器人只是間歇性運行等因素的影響。

此外,當剩下 5% 的失敗發生時,情況會變得非常糟糕。我是用非常痛苦的方式來學會這個的。不久之前市場變得相當瘋狂,如果我說自己沒有料到自己交易的股票出現重大崩盤的話那就是在撒謊。結果真的發生了這樣的情況。

儘管我的停損讓我避開重大損失,但如果不是因為我在恰當的時間點介入的話,機器人可能會讓我過去幾個月的利潤付之東流。那次事件讓我開始認真思考,我決定讓它停止運作幾天,直到我把漏洞給修復好。

這對我來說也是一次很好的學習經歷,我認為如果不經歷過這些起伏的話,我永遠也做不出讓它走到今天的演算法。我不後悔在比特幣上浪費的時間,因為它讓我對加密貨幣交易如何運作有了更深入的瞭解,而這些東西也許在將來有朝一日就會派上用場。

你的最大優勢是什麼?有沒有一些特別有用的東西?

我的最大優勢也許是自己是一位樂觀過頭的年輕夢想家。從某種程度來說,這讓我 夠相信自己的想法,願意投入別人不願投入的精力去實現它 。正是這個激勵著我堅持要找到市場的那些「後門」。盡管許多人認為個體操盤手沒有多少機會扳倒武裝堅強的大公司,但我證明了只要執行得好,市場還是有操作空間的。

另一個極其有用的資源是網路上公開的研究論文。實際上,我從 2006 年發表的論文上面得到了極大的幫助。我經常發現這些論文儘管包含著超級有用的分析,但大部分都被為人所忽視。

身為工作狂對取得這一成功也有相當大的貢獻。我可以每天工作 10 到 12 小時,一點問題都沒有。在時間方面,我形成了一種非常有生產力且一致的生活方式,設法排除了大部分的干擾。這讓我有時間投入打磨和研究專案的不同策略上面。

你對胸懷抱負的獨立駭客有什麼建議?

我見過幾個人,他們在那個論壇上就這麼呆呆地等著完美想法出現,或者花費了幾年的時間去完成產品。Reid Hoffman(LinkedIn 共同創辦人)的結論最到位:如果你沒有對 v1 版感到難堪的話,你的產品發表已經太遲了。

要發表東西!如果你全力以赴開發了某個東西但卻放棄推出的話,沒人會在意它的。我們生活在一個非常資本主義的社會,大家會根據真正的結果來判斷你。沒人會在意你的行動計劃以及你為什麼不發表出去的理由。

正如 Sam Altman(YC 負責人)所說那樣,推出一個不夠偉大的產品,沒人會原諒你。然而,什麼都沒有一定比這還要糟糕。不要第一版就想做到完美。先到市場上試試水溫,收集大量反饋然後不斷更新你的想法。

儘管這並不是一個面向客戶的產品(目前暫時不是),但是業餘專案的力量市值得大力推廣的。業餘專案讓你可以試驗瘋狂的想法又不會被指責為瘋子。而且即便大家根據這個專案來論斷你,你也可以拋出這句話來當擋箭牌:「是的,這不過是個業餘專案罷了。」

還有,你一定要追求腦子裡面最瘋狂的想法。大多數成功的公司都是這麼創辦出來的(比如說 Facebook、Uber、AirBnb)。你大概不會想浪費自己最寶貴的資源,去開發出另外一個 Snapchat 的山寨品來吧。每一個問題都有解決方案。你只是需要有足夠的創意去找到它而已。

相關文章

評論