技术图文:数字资产量化中的三角套利策略
背景
我們在前面的圖文中介紹了一種跨市場的套利策略:
- 數字資產量化中的跨市場套利策略
該策略俗稱搬磚,只要兩個交易所對于同一種數字資產出現價差,就可以進行套利。
三角套利就是利用三種數字資產之間的價格差來獲利。
三角套利的過程就是規劃三角路徑的過程,三角路徑無外乎兩種:
- 第一種:買入 -> 賣出 -> 賣出
- 第二種:賣出 -> 買入 -> 買入
比如 BigOne 交易所有 ONE-USDT、ONE-EOS、EOS-USDT 交易對。
如果你手中擁有 USDT,可以通過第一種路徑進行套利。即用 A 數量的 USDT 買入 ONE,然后把買入的 ONE 換成 EOS,最后賣出EOS 換回 USDT。在刨除手續費之后,如果最后換回的 USDT 數量超過 A,我們就可以依賴這個路徑進行套利。
如果你手中擁有 ONE,可以通過第二種路徑進行套利。即賣出 A 數量的 ONE 得到 USDT,然后用該 USDT 買入 EOS,最后用這些 EOS 換回 ONE。 在刨除手續費之后,如果最后換回的 ONE 數量超過 A,我們就可以依賴這個路徑進行套利。
詳細的流程圖如下:
技術分析
以先買入后賣出的方式構造三角套利的路徑:
假設:USDT 起始數量為 A,交易手續費為:0.1%
Step1:USDT -> ONE
以Q1的價格買入ONE。
- OneAmount = A ÷ Q1
- RealOneAmount = OneAmount × 0.999
Step2:ONE -> EOS
以 Q2 的價格賣出 ONE 得到 EOS
- EOSAmount = RealOneAmount × Q2
- RealEOSAmount = EosAmount × 0.999
Step3:EOS -> USDT
以 Q3 的價格賣出 EOS 得到 USDT
- UsdtAmount = RealEOSAmount × Q3
- RealUsdtAmount = UsdtAmount × 0.999
如果想獲得盈利,則需要 RealUsdtAmount > A 即可。
經過簡單的推導,我們可以發現該三角套利路徑的盈利條件是:
(Q2 × Q3 × 0.999^3) ÷ Q1 > 1.0
以先賣出后買入的方式構造三角套利的路徑:
假設:ONE 起始數量為 A,交易手續費為:0.1%
Step1:ONE -> USDT
以 P1 的價格賣出 ONE。
- UsdtAmount = A × P1
- RealUsdtAmount = UsdtAmount × 0.999
Step2:USDT -> EOS
以 P2 的價格買入 EOS。
- EosAmount = RealUsdtAmount ÷ P2
- RealEosAmount = EosAmount × 0.999
Step3:EOS -> ONE
以 P3 的價格買入 ONE
- OneAmount = RealEosAmount ÷ P3
- RealOneAmount = OneAmount × 0.999
如果想獲得盈利,則需要 RealOneAmount > A 即可。
經過簡單的推導,我們可以發現該三角套利路徑的盈利條件是:
(P1 × 0.999^3) ÷ (P2 × P3) > 1.0
代碼實現
檢驗是否具有套利機會
static double TestBuySellSell(double q1, double q2, double q3) {return q2 * q3 * Math.Pow(0.999, 3) / q1; }運行先買入后賣出的套利模型
static void RunBuySellSell(double q1, double q2, double q3, double a) {double usdt = a;double oneAmount = 1.0*usdt/q1;double realOneAmount = oneAmount*0.999;double eosAmount = realOneAmount*q2;double realEosAmount = eosAmount*0.9999;double usdtAmount = realEosAmount*q3;double realUsdtAmount = usdtAmount*0.999;//用USDT換入ONEList<Order> orderOneUsdt = new List<Order>{new Order(q1, oneAmount),};_bigOneUtility.CreateBidOrders(orderOneUsdt, "ONE-USDT");//用ONE換入EOSList<Order> orderOneEos = new List<Order>{new Order(q2, realOneAmount),};//用EOS換入USDT_bigOneUtility.CreateAskOrders(orderOneEos, "ONE-EOS");List<Order> orderEosUsdt = new List<Order>{new Order(q3, realEosAmount),};_bigOneUtility.CreateAskOrders(orderEosUsdt, "EOS-USDT"); }檢驗是否具有獲利機會
static double TestSellBuyBuy(double p1,double p2,double p3) {return p1*Math.Pow(0.999, 3)/(p2*p3); }運行先賣出后買入的套利模型
static void RunSellBuyBuy(double p1, double p2, double p3, double a) {double one = a;double usdtAmount = one*p1;double realUsdtAmount = usdtAmount*0.999;double eosAmount = 1.0*realUsdtAmount/p2;double realEosAmount = eosAmount*0.999;double oneAmount = 1.0*realEosAmount/p3;double realOneAmount = oneAmount*0.999;//用One 換入USDTList<Order> orderOneUsdt = new List<Order>{new Order(p1, one),};_bigOneUtility.CreateAskOrders(orderOneUsdt, "ONE-USDT");//用USDT 換入EosList<Order> orderUsdtEos = new List<Order>{new Order(p2, eosAmount),};_bigOneUtility.CreateBidOrders(orderUsdtEos, "EOS-USDT");//用Eos 換入OneList<Order> orderEosOne = new List<Order>{new Order(p3, oneAmount),};_bigOneUtility.CreateBidOrders(orderEosOne, "ONE-EOS"); }總結
到此為止,有關于三角套利的模型以及具體實現就介紹完了。
由于市場中做市商的存在,這樣的套利機會雖然很多,但轉瞬即逝。通過手工掛單的方式已經很難滿足速度要求了。如果要用該種方式套利,需要寫程序讓計算機來執行。我上面的代碼大家可以作為參考啊。今天就到這里吧!See You!
相關圖文:
- 如何利用 C# 實現 K 最鄰近算法?
- 如何利用 C# 實現 K-D Tree 結構?
- 如何利用 C# + KDTree 實現 K 最鄰近算法?
- 如何利用 C# 對神經網絡模型進行抽象?
- 如何利用 C# 實現神經網絡的感知器模型?
- 如何利用 C# 實現 Delta 學習規則?
- 如何利用 C# 爬取帶 Token 驗證的網站數據?
- 如何利用 C# 向 Access 數據庫插入大量數據?
- 如何利用 C# 開發「桌面版百度翻譯」軟件!
- 如何利用 C# 開發「股票數據分析軟件」(上)
- 如何利用 C# 開發「股票數據分析軟件」(中)
- 如何利用 C# 開發「股票數據分析軟件」(下)
- 如何利用 C# 爬取「財報說」中的股票數據?
- 如何利用 C# 爬取 One 持有者返利數據!
- 如何利用 C# 爬取Gate.io交易所的公告!
- 如何利用 C# 爬取BigOne交易所的公告!
- 如何利用 C# 爬取 ONE 的交易數據?
- 如何利用 C# 爬取「貓眼電影:熱映口碑榜」及對應影片信息!
- 如何利用 C# 爬取「貓眼電影專業版:票房」數據!
- 如何利用 C# 爬取「貓眼電影:最受期待榜」及對應影片信息!
- 如何利用 C# 爬取「貓眼電影:國內票房榜」及對應影片信息!
- 如何利用 C# + Python 破解貓眼電影的反爬蟲機制?
- 如何進行代碼的重構?以封裝 BigOne API 為例
- 如何利用BigOne的API制作自動化交易系統 – 身份驗證
- 如何利用BigOne的API制作自動化交易系統 – 獲取賬戶資產
- 如何利用BigOne的API制作自動化交易系統 – 訂單系統
總結
以上是生活随笔為你收集整理的技术图文:数字资产量化中的三角套利策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (含源码)利用NVIDIA VPI之透视
- 下一篇: 点击div外区域隐藏div操作(嵌套if