撰文 :Leo Zhang、Jack Koehler、Karim Helmy ;前兩者就職於算力及衍生產品研究機構Anicca Research,後者是Coin Metrics 數據研究分析師

本文是《明智的比特幣礦工》系列第二篇,上一篇為《明智的比特幣礦工,應當像管理投資一樣運營算力》,由Anicca Research 與新加坡算力及衍生產品投資和交易機構General Mining Research (GMR)合作撰寫。

「當然,任何試圖用確定性的方法產生隨機數的人,都生活在罪惡中。」約翰·馮·諾伊曼(John von Neumann)

概述

在難以通過實驗檢驗假設時,可以通過模型模擬收益變化。比特幣挖礦業不透明,資本密集度高,但如果以數值模擬為主,定性分析為輔,研究該行業時會更加簡單易行。在無法判定市場變化的前提下貿然投資挖礦的代價是昂貴的,但在實際操作之前建立模型卻很便宜。

在本系列的第一部分中,我們建立了蒙特卡羅模型來模擬礦機的公允價值以及該公允價值對不同市場參數的敏感性。我們證明了:由於礦機流動性較差,算力的市場價格經常偏離其理論公允價值。

參考閱讀:

《明智的比特幣礦工,應當像管理投資一樣運營算力》

在上一篇文章中,我們用跳躍擴散(Jump-Diffusion) 過程對未來的價格軌跡進行了建模,並使用線性函數來描述全球算力如何響應價格的變化。但正如我們的幾篇文章中所討論的那樣,算力和價格之間的動態關係超出了簡單的線性關係。為了提高我們框架的代表性,我們必須將全網算力作為一個單位的方法提高精度,從自下而上的角度來建模。

參考閱讀:

《Bitcoin Mining's Three Body Problem》

https://www.aniccaresearch.tech/blog/bitcoin-minings-three-body-problem

在本文中,我們根據礦機類型、全部運營成本和挖礦策略,將礦機定性為幾種原型。每個礦工原型都有著不同的利潤率和風險考量。隨著挖礦收入發生波動,每個礦工會產生利潤或虧損,而利潤或虧損又會促使他們決定增加或減少作業礦機的數量。

在這個框架下,網絡算力的變化不僅是價格變化的函數,而且是具有不同經濟和風險特徵的所有礦工輸出的決策的總和。

該模型的代碼庫是完全開源的,可以在這裡(https://github.com/khelmy/intelligent-bitcoin-miner) 獲得。

用戶可以插入自己的假設,並查看他們的挖礦業務在此後的表現。在本文中,我們將詳細介紹該模型,解釋如何使用該模型,並從五個場景的分析中給出一些有趣的發現。

康威的生命遊戲

我們將網絡算力建模為單個礦工輸出的總和,這種方法是基於一種叫做基於代理的模擬技術。基於代理的建模起源於20 世紀50 年代約翰·馮·諾伊曼(John Von Neumann) 關於細胞自動機的早期研究,並因約翰·康威(John Conway)的《生命遊戲》而流行起來。

圖片來源: Teb's Lab

參考閱讀:

《Agent-based modeling》

https://en.wikipedia.org/wiki/Agent-based_model

《How I optimized Conway's Game Of Life》

https://medium.com/tebs-lab/optimizing-conways-game-of-life-12f1b7f2f54c

《Play John Conway's Game of Life》

https://playgameoflife.com/

這是一個回合製的模擬,發生在一個二維的細胞網格上。一個預先指定的、決定性的規則負責管理相鄰細胞之間的相互作用。每一個回合,細胞的狀態都會根據其相鄰細胞的狀態而改變:如果細胞剛好有三個活著的鄰居,它們就會復活;如果有兩個或三個活的鄰居,它們可以存活,否則則會死亡。

《生命遊戲》是基於代理的模型的一個原始例子,這是一種由共享全局狀態的參與者做出決策的模擬類型。在《生命遊戲》中,細胞是代理人,它們的決策圍繞著生存還是死亡展開。結果完全取決於棋盤的初始狀態,而棋盤的狀態可能會以非直觀的方式演變。

基於代理的建模已經較康威的《生命遊戲》有了很大的發展。如今,基於代理的模擬被廣泛應用於生態學、經濟學、量化金融和智能合約分析。

參考閱讀:

《Insights from the study of complex systems for the ecology and evolution of animal populations 》

https://academic.oup.com/cz/article/66/1/1/5477426

比特幣挖礦的盈利能力取決於比特幣的價格、網絡總算力,在較小程度也跟交易費用有關(到目前為止)。計算盈利能力的第二個因素,即網絡算力,取決於其他礦工打算運行還是關閉機器。因此,對礦工盈利能力的預測必須是迭代的,而這個問題非常適合基於代理的建模。

假設比特幣價格完全獨立於網絡算力,我們可以將價格建模為一個獨立的幾何布朗運動。可以將時間序列中的每一天視為一個輪次;在每個輪次開始時,價格和全局算力都被輸入到礦工代理的決策過程中。

參考閱讀:

《Geometric Brownian motion》

https://en.wikipedia.org/wiki/Geometric_Brownian_motion

根據他們的利潤率,每個礦工通過改變他們運行的機器數量來擴大或縮小他們的運作規模,並公佈他們運作的算力。每個礦工的算力輸出之和因此成為新的全局算力。

礦工作為代理

將礦工作為代理建模,本質上是對挖礦經濟學中的輸入變量進行參數化。在《算力的煉金術》 (The Alchemy of Hashpower) 中,我們提出了算力的反身性這個概念:每一個挖礦作業都會受到物理條件和操作者對市場主觀感知的嚴重影響。

參考閱讀:

《The Alchemy of Hashpower》

https://www.aniccaresearch.tech/blog/the-alchemy-of-hashpower-part-i

雖然不可能涵蓋所有決策因素,但我們認為礦機類型、成本基礎和策略應該是決定礦工行為的主要因素。我們在礦工類別中,將這些因素定為了參數。

機器類型

在現實世界中,一個挖礦作業通常涉及多種不同類型的礦機。為了簡單起見,我們讓每個礦工原型在整個分析過程中使用單一的礦機類型。在這個版本的模擬中,我們支持以下的礦機類型:

成本基礎:總電費能源消耗

在整個模擬過程中,每個礦工都被分配了一個平均的總電量。能量消耗為礦工的:礦機數量*礦機類型消耗。

每天,礦工產生的運營費用等於:能耗/ 1000 *總電費* 24。

我們還指定了一個總電費分佈,它決定了初始化時相關礦工原型的礦機數量。

在這個版本中,我們提供以下默認分層。用戶可以在運行模擬之前對其進行自定義。

基於最佳努力預測策略

做多比特幣

每日出清

每個礦工在初始化時都被分配了一個策略。在實踐中,礦工可以使用的策略範圍很廣,只要他們對市場條件的看法發生變化,就可以在這些策略之間進行切換。

為簡單起見,我們在整個模擬過程中按照相同的策略對每個礦工進行建模。在《 智能比特幣礦工,第一部分》 (The Intelligent Bitcoin Miner, Part I) 中,我們介紹了這兩種策略,並評估了它們在不同市場週期中的表現。

參考閱讀:

《明智的比特幣礦工,應當像管理投資一樣運營算力》

做多比特幣意味著礦工每天只賣出足夠支付運營費用的比特幣,並將其餘收入保留在比特幣中。

每日出清是指礦工立即將所有資產兌換成美元。

礦工的策略決定了他們的美元倉位和比特幣倉位如何劃撥。當使用看多比特幣策略計算礦工的利潤時,需要考慮未實現收益。未實現收益按比特幣倉位*比特幣價格計算。

基於這三個變量的組合,我們將礦工的世界分解為11 種礦機類型、7 種電費成本層和2 種策略,總共154 種原型。

在初始化時,我們根據Hashrate Index 和General Mining Research 以及其他一些來源的數據,提供了市場上礦機的默認分層和價格數據。用戶可以在模擬之前自定義:

價格數據:Hashrate Index, General Mining Research。算力百分比:基於各種來源的估算

參考閱讀:

《Bitcoin runs on Hashrate》

https://hashrateindex.com/

https://www.gmr.xyz/

電費分佈和礦機分層是每個礦工礦機數量的輸入。這代表了礦工作業的礦機數量。需要注意的是,在實踐中,這兩個分佈並不像模型中假設的那樣在統計上是獨立的—例如,像S9 這樣的老礦機更有可能是由能夠獲得更便宜電力的礦工操作。

在模擬開始時,所有礦工的礦機數量*算力的總和被縮放為大致等於當前網絡算力水平,這個數值是從Coin Metrics 中收集的。

參考閱讀:

https://charts.coinmetrics.io/network-data/

為了跟踪礦工的表現,我們在礦工類別中加入了一個簡單的賬戶餘額和歷史利潤計算器。

賬戶餘額

美元倉位比特幣倉位算力倉位

初始算力倉位為礦工的礦機數*礦機_類型_算力。    

盈利能力                 

每日盈利 最近30天盈利 全部盈利

隨著市場的發展,盈利能力決定了礦工的行為。我們將在下一節中介紹該機制。最近30天盈利和全部盈利是延伸盈利的總和。

下面是一個示例礦工類的所有數據條目。礦工類的代碼可以在agents.py 文件中找到。  

參考閱讀:

https://github.com/khelmy/intelligent-bitcoin-miner/blob/main/agents.py

礦工的效用函數

當預期盈利能力較高時,礦工可能會想要購買更多的礦機,當預期未來盈利能力為負時,他們可能會關閉一些礦機以減少運營費用。我們需要準確定義礦工如何增加或減少他們的算力。

在現實中,還會有許多外部因素驅使礦工決定購買或關閉礦機,比如是不是能從外部融資,甚至於他們是不是太累了。為了簡單起見,我們將礦工的歷史利潤作為礦工決策過程中的主要輸入進行建模。

決策流程將最近30天盈利作為輸入,併計算用於生成操作的結果。計算過程如下:

如果最近30天盈利為零或負數,礦工將礦機數量減少x,直到盈虧平衡。計算方法很簡單:損失(最近30天盈利)除以每台礦機的能耗成本。

如果最近30天盈利為正並超過某個閾值,礦工將增加礦機數量。閾值為:最近30天盈利 > 所有(支出) 的總和。

增加的礦機數量計算如下:(最近30天盈利所有(支出) 的總和) / 礦機價格*礦機增長係數。

每種礦機類型都有一個增長率,反映的是它的相對增長。由於製造商缺乏繼續生產的意願,老一代的礦機增長率較小。我們還為添加新礦機設置了一個反應延遲。新訂單的生產和交付通常需要一段時間。

在我們的模型中,這意味著在增加x 台礦機的動作被觸發後,礦機不會立即被添加到礦工的賬戶中。我們設置了一個常量列表作為每種機器類型的反應時間。反應延遲是一個靜態近似值,應定期更新,以反映供應鏈能力的變化。

基於最佳努力估計

總而言之,觸發函數會輸出礦工買入或賣出的礦機數量。

用戶可以用他們認為合適的常量來更新增長因子和反應天數。調整的代碼可以在Simulator.py 中找到。

參考閱讀:

https://github.com/khelmy/intelligent-bitcoin-miner/blob/main/Simulator.py

設置模擬

與《第一部分》一樣,我們使用一個隨機過程來預測比特幣在模擬生命週期內的價格。幾何布朗運動模型的基礎支持來自於從Coin Metrics 中提取的歷史價格數據。

將所有內容結合在一起,我們使用下面的圖表來說明這個過程是如何運作的:

參考閱讀:

《明智的比特幣礦工,應當像管理投資一樣運營算力》

場景分析

為了測試該模型,我們模擬了不同的市場條件,並分析了由此產生的礦工行為。我們評估了一個用戶礦工的盈利能力,該礦工獲得了100 萬美元的前期資金用於購買礦機,但無法進一步擴大經營規模。模擬運行100 天,取25 次試驗的平均結果。

用戶的盈利能力是根據不同礦機類型和幾種不同的電力成本來衡量的。亮點如下所示。

所使用的參數絕不是確定的,用戶可以自由地用自己的假設重新運行分析。場景分析的代碼可以在main.py 中找到。

參考閱讀:

https://github.com/khelmy/intelligent-bitcoin-miner/blob/main/main.py

牛市場景

我們的第一個測試是模擬了牛市的情景。考慮到撰寫本文時正在進行的牛市,我們簡單地將幾何布朗運動模型與歷史數據進行擬合。在這種條件下,價格逐漸上升到10 萬美元以上,沿途經歷了幾次修正。

網絡算力穩步上升,隨著價格下調,經歷了一些小型滯後修正。

在這種情況下,相比每天賣出比特幣,保留比特幣倉位的利潤要高得多即使電價很高也是如此。考慮到比特幣價格的快速升值,這是有道理的。

以一度電4 美分的價格來算,只有使用S9 礦機並在比特幣中保持倉位的礦工才能在百日模擬期內實現盈虧平衡。

市場波動

在第二種場景分析中,我們模擬了一個極為波動的市場,將歷史擬合GBM 模型中的波動項增加25%,並將漂移設置為0。價格最初上漲到近8 萬美元,然後暴跌到略高於4 萬美元。

算力開始快速增長,但隨著價格下降開始趨於穩定。由於響應延遲,算力會繼續增加,但速度較慢。

 

最初,這兩種策略的表現相當,比特幣多頭的表現略好於每天出清的賣家。隨著價格下跌,有比特幣風險敞口的礦工會因為承擔了額外的風險而受到懲罰,持有的比特幣市值下降。

熊市

第三種模擬通過將GBM 與歷史數據擬合,並翻轉漂移項的符號來模擬熊市。價格從目前的水平急劇下降,跌到近3 萬美元。

為了應對價格下跌,網絡算力在最初的上升後進入修正。這就是《算力的煉金術》中介紹的從庫存刷新到週期震盪階段的過渡。

參考閱讀:

《The Alchemy of Hashpower, Part II.》

https://www.aniccaresearch.tech/blog/the-alchemy-of-hashpower-part-ii

在熊市中,每個人都遭殃。比特幣多頭尤其如此:在每度電4 美分的價格下,如果面臨著比特幣風險敞口,即使是最有效率的操作在模擬期內都無法收回一半的初始投資。

每日出清的賣家的表現明顯要好一些,但由於他們的收益仍然取決於比特幣的價格,因此表現仍然不如牛市時。

 

在牛市中,用舊礦機好還是新礦機更好?

場景4 使用與場景1 相同的歷史參數,目的是比較在具有競爭性電價的情況下,運行新舊硬件的礦工的表現。

這一次,價格飆升到14 萬美元以上,一路加速。算力也迅速增加。

場景1 vs. 場景4

考慮到牛市的強度,即使是每天出清比利幣的礦工,在運行S9 礦機的情況下,也能在100 天的模擬期內實現盈虧平衡。 S19 礦機的利潤要低得多,但仍能在每天出售的同時收回大部分初始投資。

在這種情況下,做多比特幣的礦工盈利驚人。在模擬期間,運行S9 的礦工投資基本上翻番,S19 礦工也能獲得可觀的利潤。

在熊市中,降低運營成本有多重要?

第五種也是最後一種模擬重新回到熊市中運行,這次的目標是分析電力成本對盈利能力的作用。為此,我們評估了S9 和S19 礦機在熊市條件下的表現,電費分別為每度3、4 和5 美分。

情形與場景3 類似:價格暴跌,算力出現了一個較淺但長時間的修正。

場景3 vs. 場景5

對於S9 礦工來說,電力成本帶來了實質性的差異。儘管在這些條件下,無論電力成本處在哪個水平,礦工的表現都不佳,但在電費為每度3 美分的情況下,做多比特幣的礦工的回報率接近其初始投資的40% ,如果電費換成是每度5 美分,回報率則略低於32%。

這種對電價的敏感性有助於解釋為什麼S9 礦工往往會在電費更便宜的地區運營。

對於S19 礦工來說,這種差異就不那麼明顯了。雖然電價較低的礦工仍然比電價較高的礦工賺得更多,但這一變量對盈利能力的影響要小得多。

結論

維度是統計學家的天敵,而比特幣挖礦是一個很難建模的問題。即使是我們這種只做了幾個簡化假設的模型,也比我們最初設想的要復雜得多。像所有基於蒙特卡羅的工具一樣,它的預測能力從根本上受到用戶偏見的限制,這些偏見會從初始種子條件波及到一切結果。

參考閱讀:

https://en.wikipedia.org/wiki/All_models_are_wrong

我們的模型明確假設價格和算力之間的關係是單向的,同時假定了可能相關的礦機模型和電力成本分佈之間的獨立性。所有的模型都是不全面的,但有些是有用的。

我們認為這個模型是有用的。在明智的比特幣礦工的工具箱中,它應該能找到用武之地。