Nghiên cứu sơ bộ về Backtesting của chiến lược tùy chọn tiền kỹ thuật số

Tác giả:Tốt, Tạo: 2020-08-23 10:53:41, Cập nhật: 2023-10-08 19:56:47

img

Nghiên cứu sơ bộ về Backtesting của chiến lược tùy chọn tiền kỹ thuật số

Gần đây, nền tảng FMZ đã nâng cấp hệ thống kiểm tra lại để hỗ trợ kiểm tra lại các tùy chọn tiền kỹ thuật số.

Deribit lựa chọn backtest

Tùy chọn Deribit được xác định trong hệ thống backtest là kiểu châu Âu, và giá trị của một hợp đồng là 1BTC. Mã hợp đồng tùy chọn là: BTC-7AUG20-12750-C.

Chủ đề Ngày thực thi Giá thực hành (Call/Put) Tùy chọn
BTC 7AUG20 12750 C
Bitcoin Bài tập vào ngày 7 tháng 8 năm 2020 Giá thực thi 12750 Tùy chọn gọi
BTC 7AUG20 12750 P
Bitcoin Bài tập vào ngày 7 tháng 8 năm 2020 Giá thực thi 12750 Tùy chọn đặt

Các hoạt động như thiết lập hợp đồng và nhận vị trí giống như hợp đồng tương lai tiền kỹ thuật số. Hợp đồng đặt: trao đổi.SetContractType ((BTC-7AUG20-12750-C) Nhận vị trí: var pos = trao đổi.GetPosition()

Giá của hợp đồng quyền chọn là tiền thưởng của hợp đồng quyền chọn, và người mua quyền chọn cần phải trả tiền thưởng quyền chọn cho người bán quyền chọn. Người mua có quyền thực hiện, và người bán có nghĩa vụ thực hiện. Trước khi hợp đồng quyền chọn được thực hiện, nó có thể được giao dịch (như thanh lý, thanh toán nghĩa vụ).

Ví dụ về các kết hợp giao dịch tùy chọn phổ biến

Bán một lựa chọn mua và mua một điểm.

/*backtest
start: 2020-07-27 00:00:00
end: 2020-08-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Deribit","currency":"BTC_USD"},{"eid":"OKEX","currency":"BTC_USDT","balance":100000}]
*/

function main() {
    exchanges[0].SetContractType('BTC-7AUG20-12750-C');
    var initSpotAcc = _C(exchanges[1].GetAccount)
    var isFirst = true
    while(true) {
        var optionTicker = exchanges[0].GetTicker()
        var spotTicker = exchanges[1].GetTicker()
        if(isFirst) {
            exchanges[0].SetDirection("sell")
            exchanges[0].Sell(optionTicker.Buy, 1)
            exchanges[1].Buy(spotTicker.Sell, 1)
            
            isFirst = false 
        }
        
        var optionPos = _C(exchanges[0].GetPosition)
        var nowSpotAcc = _C(exchanges[1].GetAccount)
        var diffStocks = (nowSpotAcc.Stocks - initSpotAcc.Stocks)
        var diffBalance = (nowSpotAcc.Balance - initSpotAcc.Balance)
        var spotProfit = diffBalance + diffStocks * spotTicker.Last
        var optionProfit = optionPos[0].Profit * spotTicker.Last
        LogProfit(spotProfit + optionProfit)
        $.PlotLine("Spots", spotProfit)
        $.PlotLine("Options", optionProfit)
        Sleep(500)
    }
}

img

Tùy chọn có thể cung cấp một mức độ bảo vệ bảo hiểm nhất định cho các tài sản được mua tại chỗ. Thông thường được sử dụng khi lạc quan về mặt tại chỗ và sẵn sàng giữ tại chỗ. Rủi ro nằm trong sự sụt giảm giá tại chỗ. Mặc dù đến một mức độ nhất định, tùy chọn có thể bù đắp cho một khoản lỗ tại chỗ nhất định, nhưng sau khi lỗ vượt quá phí bảo hiểm tùy chọn, sẽ có lỗ ròng.

Ngoài ra, thanh khoản của thị trường tùy chọn tiền kỹ thuật số là trung bình, và đôi khi không có đối tác nào được tìm thấy.

Tương tự, chúng ta có thể thay thế điểm với tương lai, mã là như sau:

/*backtest
start: 2020-07-27 00:00:00
end: 2020-08-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Deribit","currency":"BTC_USD"},{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
*/

function main() {
    exchanges[0].SetContractType('BTC-7AUG20-12750-C');
    exchanges[1].SetContractType("quarter")
    var isFirst = true
    while(true) {
        var optionTicker = exchanges[0].GetTicker()
        var futuresTicker = exchanges[1].GetTicker()
        if(isFirst) {
            exchanges[0].SetDirection("sell")
            exchanges[0].Sell(optionTicker.Buy, 1)
            
            exchanges[1].SetDirection("buy")
            exchanges[1].Buy(futuresTicker.Sell, _N(1 * futuresTicker.Sell / 100, 0))
            
            isFirst = false 
        }
        
        var optionPos = _C(exchanges[0].GetPosition)
        var futuresPos = _C(exchanges[1].GetPosition)
        
        
        var futuresProfit = futuresPos[0].Profit 
        var optionProfit = optionPos[0].Profit
        LogProfit(futuresProfit + optionProfit)
        $.PlotLine("Futures", futuresProfit)
        $.PlotLine("Options", optionProfit)
        Sleep(500)
    }
}

img

Các hợp đồng tương lai có thể làm giảm vốn chiếm đóng so với mặt hàng, nhưng rủi ro cao hơn so với mặt hàng.

Ngoài ra còn có nhiều sự kết hợp giao dịch tùy chọn khác:

  • Phân phối tùy chọn gọi giá caobull call spread
  • Lựa chọn đặt gấu SpreadBear Put Spread

Những người quan tâm có thể nghiên cứu nó trong hệ thống backtest.


Có liên quan

Thêm nữa