avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

Deribit Futures API를 옵션 양적 거래에 맞게 변환

만든 날짜: 2019-10-29 14:57:54, 업데이트 날짜: 2024-12-16 11:24:47
comments   0
hits   2744

Deribit Futures API를 옵션 양적 거래에 맞게 변환

이미 많은 디지털 통화 선물 거래소가 있지만, 선물 파생상품으로서 디지털 통화 옵션 거래는 시장에 거래소가 많지 않습니다. 옵션 거래를 지원하는 거래소로는 Deribit과 BitMEX가 있습니다. 양적 거래 분야에서도 옵션 거래 전략은 많이 있는데, 일부 검색 자료에 언급된 옵션 전략은 다음과 같습니다.

유형
방향 전략: 콜 옵션 구매 풋 옵션 판매 불 콜 스프레드 불 풋 스프레드
풋 옵션 구매 콜 옵션 판매 베어 콜 스프레드 베어 풋 스프레드
변동성 전략: 스트래들 판매 와이드 스트래들 매도 스트래들 구매 와이드 스트래들 구매
헤지 전략: 커버드 콜 커버드 풋 보호 호출 보호용 풋
롱 더블 리미트 숏포지션 더블리미트

인용됨연결하다

옵션 거래 전략을 작성하려면 먼저 튼튼한 기초를 다지고 주문하기, 시장 정보 얻기, 주문 취소하기, 포지션 얻기 등의 기본 작업에 익숙해져야 합니다. 전략 문서 작성에서는 여전히 Inventor Quantitative Trading Platform을 사용하고 있지만, Inventor Quantitative Trading Platform은 현재 주로 통화 대 통화 거래, 계약 거래, 디지털 통화 양적 거래 분야의 레버리지 거래를 지원합니다. 옵션 거래와 관련된 정보는 많지 않습니다. 아래에서는 “Deribit” 거래소를 예로 들어 Inventor Quantitative Trading Platform을 사용하여 디지털 통화 옵션 거래를 하는 방법을 소개합니다.

파생상품 관련 정보

API 문서: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument 시뮬레이션 디스크: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

시뮬레이션 플랫폼 웹사이트에 계정을 등록하고, API KEY를 활성화하여 API KEY를 얻을 수 있습니다. Inventor 양적 거래 플랫폼을 구성하는 것은 실제 계정을 구성하는 것과 동일합니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환

옵션 거래를 위해 이해해야 할 기본 개념은 4가지가 있습니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환

  • 행사일: 옵션의 롱 포지션과 숏 포지션 당사자가 옵션 계약의 인도를 완료하는 날짜입니다.
  • 행사가격: 행사일에 옵션의 롱과 숏 당사자는 행사가격으로 옵션 계약의 인도를 완료합니다.
  • 프리미엄: 이것은 옵션의 가격입니다. 현물 선물과 마찬가지로, 호가에는 매수 가격과 매도 가격이 포함됩니다. 옵션의 유동성은 일반적으로 선물 및 현물보다 낮기 때문에 매수-매도 차이가 클 수 있으므로 이 부분에 특별한 주의를 기울여야 합니다! 거래가 완료된 후 거래 가격은 롱 옵션의 비용입니다. 이때 롱 포지션은 권리(옵션을 행사할 권리)를 얻고, 숏 포지션은 프리미엄을 받는 당사자로서 옵션의 , 추가 의무가 있습니다. 롱 포지션이 권리를 행사하기를 요청하면 숏 포지션은 협조해야 합니다.
  • 콜 및 풋 옵션: 콜옵션은 롱옵션 보유자가 숏옵션 보유자에게 특정 행사가격으로 특정 행사일에 특정 수량의 비트코인을 매수할 것을 요구할 수 있는 권리이며, 숏옵션 보유자는 롱옵션 보유자와 협조할 의무가 있습니다. 보유자. 풋 옵션은 롱 옵션 보유자가 숏 옵션 보유자에게 특정 행사일에 특정 행사 가격으로 특정 양의 비트코인을 매수하도록 요청할 수 있는 권리입니다. 특정 행사일에 숏 셀러는 다음을 수행해야 합니다. 주어진 비트코인을 특정 행사 가격으로 매도해야 하며, 공매도자는 공매도자와 협조할 의무가 있습니다.

시장 정보

Deribit 거래소의 API 설명서에 따르면, Deribit의 시장 인터페이스는 선물이나 옵션 시장 정보에 접근하는 데 필요한 데이터만 전달합니다.instrument_name매개변수가 다르고(instrument_name은 SetContractType 함수에 의해 설정됨) 기본적으로 이 인터페이스를 사용하여 시장 정보를 얻을 수 있습니다.GetTicker옵션에 대한 견적을 받으세요.

물론, Inventor Quantitative Trading Platform의 기본 패키지는 Deribit Exchange의 실제 시장입니다. 먼저 시뮬레이션 시장으로 전환하고 다음 코드를 사용해야 합니다.

exchange.IO("base", "https://test.deribit.com")

그럼 현재 우리는 옵션 계약을 맺고 있습니다BTC-27DEC19-7000-P: 이것은 행사일: 27DEC19, 행사가격: 7000인 풋 옵션입니다.

exchange.SetContractType("BTC-27DEC19-7000-P")

그럼 가져옵니다. 우리는 함께 작성하고, 코드를 실행하고, 이 옵션 계약의 시장 정보를 얻기 위해 테스트합니다.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    var ticker = exchange.GetTicker()
    Log(ticker)
}

디버깅 도구를 사용하면 테스트하기가 매우 편리할 수 있습니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환 가격이 시뮬레이션 디스크와 일치하는 것을 볼 수 있습니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환

다른 마켓 인터페이스의 호출 방법은 동일하며 여기서는 반복하지 않습니다. 다음 사항에 유의해야 합니다. 옵션 거래는 활발하지 않습니다. 때로는 매수 주문이나 매도 주문이 없을 수 있습니다. 이때 Inventor Quantitative Trading Platform의 하단 계층은 0 값을 감지하고 오류를 보고합니다. 다음을 사용할 수 있습니다.SetErrorFilter("Invalid ticker")이 오류를 무시하고 사용하세요GetRawJSON이 함수는 시장의 원래 정보를 얻고 데이터를 캡슐화합니다. 여기서 비슷한 기능을 달성하기 위한 예를 작성합니다.

function init() {
    SetErrorFilter("Invalid ticker")
}

$.GetTicker = function(e) {
    var ticker = e.GetTicker()
    if (!ticker) {
        try {
            var ret = JSON.parse(e.GetRawJSON())
            return {
                Info : ret,
                High : ret.result.stats.high,
                Low : ret.result.stats.low, 
                Buy : ret.result.best_bid_price,
                Sell : ret.result.best_ask_price,
                Last : ret.result.last_price, 
                Volume : ret.result.stats.volume,
                OpenInterest : 0,
                Time : new Date().getTime()
            }
        } catch (err) {
            Log(err)
        }
    }
    
    return ticker
}

write를 호출할 때:Log($.GetTicker(exchange))

주문하기

주문 배치 작업은 매우 간단합니다. 선물 거래와 비교하면 매수와 매도의 두 가지 방향만 있습니다. 또한 사용Sell,Buy함수 순서.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    
    var id = exchange.Buy(0.017, 1)
    Log(exchange.GetOrder(id))
}

Deribit Futures API를 옵션 양적 거래에 맞게 변환

방금 내린 주문은 시뮬레이션 거래판에 표시됩니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환

그리고exchange.GetOrder(id)주문 정보를 조회할 수 있습니다.

주문 취소

주문 취소에도 동일한 방법이 사용됩니다.CancelOrder선물 거래에서 주문을 취소하는 것과 같은 기능입니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환

계정에서 사용 가능한 자산을 가져옵니다.

계정에서 사용 가능한 자산을 얻는 것은 선물 거래와 정확히 동일합니다. 직접 전화하세요.GetAccount기능.

시뮬레이션된 교환 페이지에 표시 Deribit Futures API를 옵션 양적 거래에 맞게 변환

코드를 실행하면 다음을 얻습니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환

위치 정보를 얻으세요

포지션을 유지하기 위해서는 패키지된 것을 직접 사용할 수 없습니다.GetPosition기능은 기본적으로 Deribit 거래는 옵션 거래가 아닌 선물 거래이고, 이 기능만이 선물 포지션을 얻는 데 사용될 수 있기 때문입니다. 그러므로 우리는 옵션 포지션을 얻는 기능을 우리 스스로 구현해야 합니다.

API 문서에서 위치를 얻기 위한 함수 인터페이스: Deribit Futures API를 옵션 양적 거래에 맞게 변환

$.GetPosition = function(e) {
    // /private/get_positions
    // currency  , kind 
    
    var positions = [] 
    var currency = e.GetCurrency()
    var arr = currency.split("_")
    var baseCurrency = arr[0]
    
    try {
        var ret = e.IO("api", "GET", "/api/v2/private/get_positions", "currency=" + baseCurrency + "&kind=option")
        for (var i in ret.result) {
            if (ret.result[i].size == 0 || ret.result[i].direction == "zero") {
                continue    
            } 
            
            var pos = {
                Info : ret.result[i], 
                Amount : ret.result[i].size,
                FrozenAmount : 0,
                Price : ret.result[i].average_price,
                Profit : ret.result[i].floating_profit_loss,
                MarginLevel : 0,
                Margin : 0,
                ContractType : ret.result[i].instrument_name,
                Type : ret.result[i].direction == "buy" ? ORDER_TYPE_BUY : ORDER_TYPE_SELL,
            }
            
            positions.push(pos)
        }
    } catch (err) {
        Log(err)
        positions = null
    }
    
    return positions
}

부르다Log($.GetPosition(exchange))위치 정보를 인쇄할 수 있습니다. Deribit Futures API를 옵션 양적 거래에 맞게 변환 Deribit Futures API를 옵션 양적 거래에 맞게 변환

이런 식으로 기본적인 작업을 수행할 수 있고 나머지는 옵션 거래 전략을 연구하는 것입니다.