更多精彩內容,歡迎關注公眾號:數量技術宅,也可添加技術宅個人微信號:sljsz01,與我交流。
什么是資金費
永續合約每8小時為一期,每期結束時進行結算,永續合約每天結算3期(次)。即00:00-8:00為一期,結算時間為8:00;8:00-16:00為一期,結算時間為16:00;16:00-次日00:00為一期,結算時間為00:00。以上時間均為GMT+8時間。
結算時,用戶應當收取還是支付資金費用,由本期的資金費率以及該用戶的持倉情況決定。當資金費率為正值時,多倉將支付資金費用,空倉將收取資金費用;當資金費率為負值時,多倉將收取資金費用,空倉將支付資金費用。
介紹完資金費的概念,我們再來看資金費的計算方式。
首先,資金費率有一個重要的特征:延時性。 即當期的資金費率,由上一期的數據進行計算而得,在本期開始時已經確定,期內不會改變,並應用於本期結束時的資金費用結算。 而與此同時,交易所一般還會計算一個下一期的預測資金費率,這個預測資金費率一般每分鍾更新, 本期最后一次計算的預測資金費率,就是下一期的資金費率。
比如, 8:00-16:00這一期的資金費率,是通過上一期00:00-8:00的數據計算而得,在8:00的時候已經確定,在16:00進行結算時使用。同時,8:00-16:00這段時間內,每分鍾會計算一個預測資金費率,預測的是16:00-次日00:00這一期的資金費率,並將最后一次計算的預測資金費率,作為16:00-次日00:00這一期的資金費率。
其次,資金費的計算,與兩個變量相關,一是綜合利率,二是溢價。我們可以這樣來理解,以正資金費率為例,綜合利率決定資金費率的底,溢價決定資金費率的頂。當資金費率為正,且永續合約相對於現貨的溢價很小時,資金費率等於綜合利率,目前大部分平台的值都是0.01%;而當永續合約相對於現貨的溢價超過一定比率時,資金費率是由溢價率作為輸入的公式計算出來的,我們不需要去完整的理解這個公式,只需要有大致的概念,資金費與溢價率高度相關,溢價越大,資金費率相應的也越高。
之所以不需要去理解這個公式,是因為資金費率、下一期預測資金費率,我們都可以在交易所的K線界面看到,同時API中也有相關計算好的字段,能夠很容易的讀取到相應數值。
永續合約有兩類,一類是幣本位合約,以交易的幣種作為保證金、盈虧計價,另一類是U本位合約,以USDT作為保證金和盈虧計價。不論是U本位,還是幣本位,只要是永續合約,都有資金費率存在。我們也可以通過交易所的合約信息,查詢到兩類永續合約分別的實時資金費率、預測資金費率。
資金費策略原理
資金費率有一個顯著的特征:其正負分布是極度有偏的,我們以最近大熱的狗狗幣(doge/usdt)為例,可以看到的是,資金費>0的次數遠遠多於資金費<0的次數,也就是說,在大部分行情下,永續合約的空頭都在賺取永續合約多頭的資金費。
看到這里,嚴謹的朋友可能會問,那么是否是因為你舉了狗狗幣這個最近多頭大熱的例子,所造成的幸存者偏差?其實多頭、空頭在更長時間賺取資金費率的幾率應該是大致相等的呢?
我們以幣安交易所U本位永續合約BTCUSDT為例,繪制出過去3年BTC U本位永續合約所有時間的資金費,可以看到,仍然和近期的狗狗幣那樣,大部分時間資金費率都是正值,只有在深度熊市(例如2020年3月),資金費率才會短暫的打到負值。
於是,我們可以總結一下數字貨幣永續市場的規律:資金費率常年為正,牛市時期幅度極大,只有在深度熊市,才頻繁出現負值。換句話說:在永續合約市場,由於資金費率的存在,空頭的長期優勢是大於多頭的。那么,我們如何既在永續市場做空頭賺取資金費,又不承擔標的資產的方向性波動?許多老交易員第一時間就能想到:我們在現貨市場開多,在永續市場上開空,就能完美做到上述兩點。
而我們的這個資金費策略,在獲取資金費收益的同時,還期望能賺取市場一部分的價差波動。還是以近期的狗狗幣為例,下圖的溢價指數k線,可以理解為是永續合約與現貨之間的價差。盡管這個價差在大部分時間為正(永續>現貨),但在分鍾甚至Tick級別上,價差會出現短時間的負值(永續<現貨)。我們在價差達到較大正值時建倉(買現貨同時賣空永續),而在價差達到較小負值時平倉,就能夠賺取到市場中的價差波動。
因此,我們的資金費策略原理,是將收取資金費與賺取價差波動結合起來,當某個幣種資金費率高,同時現貨合約價差高,我們進場開倉(買現貨同時賣空永續),如果現貨合約價差不收斂到0以下,我們就在場內持續吃資金費的利潤,如果現貨合約價差到0以下,我們平倉(賣現貨同時買平倉永續)以獲取價差收益;同時在平倉之后,繼續尋找下一次高資金費率、高價差的進場機會,並如此循環往復。
全自動交易
如果說交割合約的期現套利,由於價差較大、交易周期較長,我們還可以通過手工交易來完成;永續合約的資金費策略,由於其價差小、機會轉瞬即逝、對交易成本極其敏感、需要不斷切換高資金費、高價差品種等特性,我們只有通過程序全自動執行這一系列低延時+高精度操作。
由於永續合約分成幣本位永續合約、USDT本位永續合約兩類,我們也根據這兩類不同的永續合約,設計了兩套不同的交易執行程序,而每一套程序,又包括了開倉邏輯和平倉邏輯。
一、幣本位永續
開倉邏輯
-
遍歷所有幣本位永續合約當期資金費率和下期預測資金費率,找到資金費率大於我們設定要求的幣種(代表此時做多現貨、做空合約,我們能夠收取到較高的資金費率)
-
實時跟蹤該幣種的期現價差比率(即幣本位永續合約價格減去現貨價格的百分比)
-
當實時期現價差比率大於設定值,立即買入現貨
-
現貨成交后,將該幣種划轉至幣本位永續賬戶作為保證金
-
在幣本位永續合約賬戶做空等市值的空單
-
完成開倉邏輯,更新配置文件中的現貨、合約持倉記錄、可用資金
平倉邏輯
-
遍歷所有幣本位永續合約持倉幣種當期資金費、下期預測資金費率,找到資金費率小於我們要求的幣種(代表此時我們已經只能收取極低的資金費率,或是要支付資金費率)
-
實時跟蹤該幣種的期現價差比率(即幣本位永續合約價格減去現貨價格的百分比)
-
當實時期現價差比率小於設定值,立即平倉永續合約空頭
-
永續合約釋放保證金,將該幣種釋放的保證金划轉至現貨賬戶
-
現貨賣出平倉,完成一輪平倉邏輯,和這一輪開、平的資金流轉
-
更新配置文件中的現貨、合約持倉記錄、可用資金
二、USDT本位永續
開倉邏輯
-
遍歷所有USDT本位全倉永續合約當期資金費率和下期預測資金費率,找到資金費率大於我們設定要求的幣種(代表此時做多現貨、做空合約,我們能夠收取到較高的資金費率)
-
實時跟蹤該幣種的期現價差比率(即USDT本位永續合約價格減去現貨價格的百分比)
-
當實時期現價差比率大於設定值,立即同時等市值開多現貨、開空USDT本位永續合約
-
完成開倉邏輯,更新配置文件中的現貨、合約持倉記錄、可用資金
平倉邏輯
-
遍歷所有USDT本位永續合約持倉幣種當期資金費、下期預測資金費率,找到資金費率小於我們要求的幣種(代表此時我們已經只能收取極低的資金費率,或是要支付資金費率)
-
實時跟蹤該幣種的期現價差比率(即USDT本位永續合約價格減去現貨價格的百分比)
-
當實時期現價差比率小於設定值,立即同時對現貨、USDT本位永續合約進行平倉
-
完成平倉邏輯,更新配置文件中的現貨、合約持倉記錄、可用資金
三、附加功能
以上描述的邏輯,是基礎的開、平倉的實現邏輯,與此同時,無論是幣本位永續,還是USDT本位永續,我們都為程序設計了以下的附加功能:
-
考慮到資金容量的問題,程序支持分批交易和拆單,減小對特別是小市值幣種的市場沖擊
-
期現價差比率,我們在跟蹤過程中采用的是保守的算法,比如准備開倉時,我們的期現比率價差,用的是現貨的賣5價與期貨的買5價之間的比率價差;而在准備平倉時,我們反過來,用的是現貨的買5價和期貨的賣5價之間的比率價差
-
策略的關鍵參數包括資金費率的進出場閾值、期現價差的進出場閾值、分批交易的金額,都設計成外接的配置文件,可以靈活調整
-
對於報單未成交問題,專門處理了報單、撤單、追單邏輯,確保套利頭寸雙邊成交。
-
整個資金費率策略,包含了資金費率輪動的大邏輯。在一輪一輪的開、平倉過程中,我們不斷地在高資金費的幣種建倉,吃資金費,等到該幣種資金費率降低,再平倉切換下一個高資金費幣種,繼續吃高資金費,由此邏輯不斷進行輪動,從而增強收益。
如何執行自動交易
編寫+調試完成策略,下一步我們就將部署執行自動交易了。部署自動交易,分為四步。
第一步,策略源碼打包上傳雲服務器
我們之所以選擇雲服務器交易,是因為第一,數字貨幣市場是7*24小時交易的,我們的個人電腦很難做到常年穩定的不關機,第二,許多數字貨幣的API使用國內IP是無法訪問的,所以我們的最優選擇,是租用一台物理地址位於海外(地址靠近想要交易的交易所)的服務器。出於穩定性考慮,我們服務器選擇Linux系統。
上傳我們可以通過Xsehll的sz/rz命令。上傳完成后,我們可以在服務器中查看到對應的策略工程項目文件。
第二步,配置參數
參數分為基礎參數和策略參數,基礎參數位於common模塊,需要配置包括最基本的交易所access_key,secret_key,最大開倉金額total_amount,以及每次開倉數量every_lot,此處every_lot是按照合約的張數設定,在交易現貨時,會自動按照合約張數對應的面值,計算現貨交易量。
策略參數部分,位於coin_swap模塊。該模塊的參數包括3個開倉參數,funding_rate_limit:開倉最小的當期資金費率閾值,funding_rate_next_limit:開倉最小的下期預測資金費率閾值,price_thresh_open:合約、現貨的最小開倉價差(大於價差才開倉)。以及3個平倉參數:funding_rate_exit_limit:當期資金費率最大不超過的值,funding_rate_next_exit_limit:下一期預測資金費率最大不超過的值,price_thresh_close:合約、現貨的平倉價差(小於價差才平倉)。
至於配置文件最后的spot和swap部分,在初始不需要設定,由程序后續在執行開平倉操作時自動寫入,比如我們此時截圖狀態,持有了eos、eth的現貨和永續合約。
第三步,開啟screen鏡像
由於我們選用的是Linux系統,如果直接在控制台運行程序,當我們關掉Xsehll或其他服務器登陸軟件后,程序會自動停止。為保證程序一直在后台運行,我們需要引入Screen工具,現在Linux系統安裝Screen,隨后用如下命令:
先用screen -S,創建窗口,窗口里面,和控制台一樣的命令運行自動交易py腳本,程序啟動后,用ctrl+a,再按d,detach這個screen,哪怕我們關掉Xsehll,仍然能夠保證程序在后台7*24運行。
第四步,運行策略,走你!
在策略運行前,最后一步的准備工作,是在賬戶中放入足夠的usdt。對於幣本位永續,我們只需要在幣幣賬戶存入相應數額的usdt,程序會在交易過程中,自動完成划轉功能;而對於U本位永續,我們需要在幣幣賬戶、U本位永續全倉賬戶存入足額的usdt(建議初始幣幣和U本資金1:1配置)。
然后我們就可以開啟策略了,開啟之后需要做什么?似乎什么也不需要做,靜靜等待策略自動交易就好。過去一個月,似乎實盤成績還不錯。
想要獲取本次分享的完整代碼,或是任何關於數據分析、量化投資的問題,歡迎添加技術宅微信:sljsz01,與我交流
往期干貨分享推薦閱讀
Omega System Trading and Development Club內部分享策略Easylanguage源碼
【數量技術宅|量化投資策略系列分享】基於指數移動平均的股指期貨交易策略
AMA指標原作者Perry Kaufman 100+套交易策略源碼分享
【數量技術宅|金融數據系列分享】套利策略的價差序列計算,恐怕沒有你想的那么簡單
【數量技術宅|量化投資策略系列分享】成熟交易者期貨持倉跟隨策略
【數量技術宅|金融數據分析系列分享】為什么中證500(IC)是最適合長期做多的指數
商品現貨數據不好拿?商品季節性難跟蹤?一鍵解決沒煩惱的Python爬蟲分享
【數量技術宅|金融數據分析系列分享】如何正確抄底商品期貨、大宗商品
【數量技術宅|量化投資策略系列分享】股指期貨IF分鍾波動率統計策略
【數量技術宅 | Python爬蟲系列分享】實時監控股市重大公告的Python爬蟲