今日推薦|一文詳解MakerDAO市商機器人

買賣虛擬貨幣

馬爸爸說“讓天下沒有難做的生意”,那在此斗膽模仿一句:讓DeFi沒有難做的市商。

熟悉DeFi的人都知道Uniswap上可以自動化做市商,簡稱AMM(Automated Market Maker)。做市商就是靠撮合買賣家交易,賺取價差來獲得收益。Uniwap就透過以太坊讓自己變成一臺去中心化的市商機器人,自動執行,使用者可以把資產放入到它的流動池,讓它自動做市商,可以收取手續費,這個是比較智慧的。之前已經介紹過了,今天就說下MakerDAO的AMM。MakerDAO做的東西大而全,不像Uniswap一樣小而精。他的GitHub倉庫下有n多個子專案,昨天算噴了一下MakerDAO的vote,今天還是來奶一下它的機器人專案。

之前有說過auction-keeper拍賣機器人,又是用到Linux,又是docker的,很多小白表示吃不消。那好吧,我們就把market-maker-keeper市商機器人簡單化在windows環境下來弄,讓它飛入尋常百姓家。這個專案是MakerDAO倉庫裡的扛把子專案,已經被pin起來了,我想這可能是用來活躍穩定幣DAI的殺手級輔助。它的搭建文件在這https://docs.makerdao.com/keepers/market-maker-keepers/market-maker-keeper-bot-setup-guide。有興趣的幣友可以自行研究,文件的介紹是指導大家建立自己專屬的市商機器人,來教育社羣理解市商機器人並幫助使用者和開發者理解這難以置信軟體的價值。它支援在很多交易所做市商,包含OasisDEX,EtherDelta,OKEX等等,這些交易所既有去中心化的,又有中心化,覆蓋面還是很廣的。我還是大概介紹一下okex_market_maker_keeper搭建的步驟(其它的也是類似的):

1.在windows電腦上安裝Python 3.6的開發環境,不懂的朋友先去學習下Python環境搭建。

2.用git下載Github倉庫原始碼,地址:https://github.com/makerdao/market-maker-keeper.git

3.安裝相關聯的子模組: git submodule update --init --recursive

4.安裝相關依賴:pip3 install -r requirements.txt(記住lib下的子模組也要安裝各自依賴哦)

5.如果沒啥問題,配置下PYTHONPATH變數把程式碼目錄和子模組的目錄包含進來,就可以跑起來了。

6.用pyinstaller把可執行的python程式打包成exe,就很方便攜帶使用了

我這裡做的okex_market_maker_keeper,就是針對okex交易所的市商機器人,做這個的原因是比較簡單,不用搞什麼以太節點,這個是鏈下的,不用擔心ETH擁堵產生的高額手續費,最多讓OKEX拔下網線,機器人罷工就是了。機器人的執行需要填寫不少的引數,就說幾個必要的引數,其餘可以自己琢磨。

--okex-api-key  就是okex上申請的API的key令牌,可以到OKEX使用者中心申請

--okex-secret-key 就是okex上申請的API的令牌金鑰,可以到OKEX使用者中心申請

--okex-password 應該是okex的密碼吧

--pair  交易對,常用的ETH/DAI

--config 這個就是做市商最核心的策略brands.json,這裡面的就是告訴機器人如何買,如何賣,還是有點複雜,還沒看明白,需要深入研究,我就只複製了它官方的例子

--price-feed 這個就是喂價用的,官方預設內建了好幾個,如eth_dai-setzer,eth_dai,如果你不喜歡它提供的喂價,也可以對接到自己實現的喂價系統,用websocket的方式

其它引數可以在cmd直接執行exe加--help查詢引數及其說明。

上面是針對有技術基礎的朋友說的,如果是小白也沒關係,可以去下載解壓打包好的程式嘗試使用,同時還弄了個bat指令碼,可以用記事本編輯修改填入個人的引數,雙擊執行bat程式就可以啟動了。

下載地址:https://dl.xiaopao.gq/okex_market_maker_keeper.zip

備註:1.已在Windows 7下測試能用

        2.需要XX上網環境或者國外網路下的PC或伺服器(推薦海外阿里雲)環境

        來張執行演示圖

MakerDAO的市商機器人專案還是挺有意思的,如果是大神可以去貢獻一下程式碼,算是推動DeFi事業的發展吧。

關於做市策略的配置問題。這個先給大家道個歉,由於個人手誤的原因,導致把官方提供bands.json配置檔案寫成了brands.json,不過這並不影響使用,明白有這麼個json檔案是用來配置市商策的就好,改成啥名字都是可以的。這個檔案是非常非常重要的,之前一筆帶過了,想想現在還是有必要一起學習一下。先翻譯一下官方理解bands配置原文:

bands配置檔案直接關係到市商機器人如何工作。就像之前提到的,這些機器人持續在訂單表中監控和調整它們的倉位,在同一時間還能維護多個band的買單和賣單。對於買和賣的band,機器人目標是至少是達成minAmount(最小數量)的開單。在這兩種情況下,它們將要確保開單的價格停留浮動在minMargin(最小邊界),maxMagin(最大邊界)之間。當執行的時候,機器人在每個band用avgMargin(平均邊界)來計算訂單價格,下單達成平均的數量(avgAmount)。

只要訂單價格保持在band設定的區間(如它在當前價格的minMargin,maxMargin範圍內),機器人將保持他們開啟並執行。如果一些訂單偏離了band,他們既可能會進入另一個臨近的band也可能超出所有的band。就後者來說,他們會直接取消掉。對於前者,機器人可以保持訂單開啟直到他們的數量在所進入的band設定的minAmount(最小數量),maxAmount(最大數量)之間。如果它超出最大數量,一些開啟的訂單將要被取消掉並且新的訂單將被建立讓總數量回到範圍內。如果它小於了最小數量,新的訂單也會建立到剩餘的數量,因此band中訂單的總數量還是會等於avgAmount(平均數量)。有些機器人會不不斷地用gas燃料去取消訂單(如:OasisDEX,EtherDelta以及0x)並在價格變化時建立新訂單。gas燃料使用不僅可以透過設定邊界和數量範圍到足夠的寬度來進行限制,還可以確保每個band之間總是相鄰,以讓他們的最小,最大數量範圍疊接。(哈哈,咱的OKEx機器人不存在gas這種問題)

好了,以上是理論知識,好好理解吧。下面也有例子講解,也是針對它案例的bands.json說的,bands.json有兩個band,假設開始1個ETH等於10個DAI。

使用band1:

初始是要買30(avgAmount)個DAI,當前市場價格是0.1ETH一個DAI,透過計算price - (price * avgMargin) -> 0.1 - (0.1 * 0.01) -> 0.099,意思我們的機器人只會買0.099ETH價格的DAI。然後會用這個價格的去掛單,就是機器人說“我要0.099ETH價格買30個DAI,有沒有人賣啊”。然後市場上有人有15個DAI急賣就按這個價出售了,機器人就給接到了,但是我們只完成了一部分啊,那麼剩下就會還是按照那個價格掛著,等待成交。另外在賣方向機器人也會透過計算price + (price * avgMargin)掛單出售。

使用band2:

它這個例子好像跟上面沒啥關聯,說的是賣ETH的,老外的思維真是夠跳的。假設一開始市場賣1個ETH價格在100DAI ,分兩個掛單(5個ETH價格在101DAI,6個價格在102.5DAI)。然後開始假設ETH價格開始跌破到97.50DAI,開始啟動band2工作了,機器人開始重置了,按照band1會掛單5ETH在98.4的價格賣,按照band2配置如果是按目前價格加上最高邊界0.02的浮度賣,價格就變成了102.375,比之前的還高,所以會先計算最小邊界,保持了band1中的第一個掛單,價格還是101DAI,取消之前的第二個掛單,按照band2的平均邊界再開單,如價格99.937DAI ,維持掛單到平均數量。

最終開始的兩個單變成了三個單:

Band 1 -> (5 ETH @ 98.475 DAI)

Band 2 -> (5 ETH @ 101 DAI)

Band 2 -> (1 ETH @ 99.837 DAI)

幣友們不知看明白了沒?評論區回覆一下唄,有問題也煩請指正,我也只是大概清楚了一下。哈哈,技術人員活生生被逼成了金融人士,太難了。如果大家有更多興趣的,可以私下拉我入群私聊哈。

繼續說下訂單速率限制的問題。案例裡面是沒設定,但也有設定的參考樣例。

"buyLimits": [
{
"period": "1h",
"amount": 50.0
},
{
"period": "1d",
"amount": 200.0
}
]

period就是時間段了,可以設定1小時(1h)或者1天(1d)這樣的,當然數值可以改成你想要的,對應的amout就是訂單成交的最大數額了,根據個人喜好設定吧,所以例子中的意思是一個小時內限制購買成交數額50的,然後一天內只能購買數額200的,超過這些限制,機器人罷工。

關於喂價方面,看是否下次再說。

至於問我用這個機器人是否能賺到錢,我還真不好說,因為我也只是研究,沒有真正實戰到真實環境去,畢竟做技術的還是窮得一B。照之前說的可以參考下傳統市商,他們都是大戶,資金雄厚,有賺有賠,長期來看都是比散戶賺的。DeFi的思想只是給散戶提供了個更公平的機會,至於散戶願不願投入進來就更不好說了。如果有機構或者財團願意去嘗試並分享經驗,沒準可以給大家提供更多的實戰經驗。

最後提醒一下,市場有風險,本文只是個研究,不作為投資建議,請合理控制風險。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;