리소스 로딩... 로딩...

컨트랙트 헤지그 전략에 의한 자산 이동에 대한 생각

저자:FMZ~리디아, 창작: 2022-12-19 16:36:12, 업데이트: 2023-09-20 10:38:30

img

컨트랙트 헤지그 전략에 의한 자산 이동에 대한 생각

최근에는 디지털 화폐 시장과 거래소에 대한 많은 소식이 있습니다. 한동안 모든 화폐 친구들은 자신의 블록체인 자산의 안전에 대해 걱정하며 공황 상태에있었습니다. 또한 다양한 화폐 시장 그룹에서 비활성화 된 중고 화폐에 대한 10% 및 20% 할인 혜택의 작은 광고가 많습니다. 많은 종류의 전략이 있습니다. 안정적인 수익을 창출하고 안정적인 돈을 잃는 것은 모두money printer쉽게 찾아볼 수 있는 것이 아닙니다. 영어가 안좋아서 죄송합니다.

그러나 여전히 불안정한 것들이 있습니다. 예를 들어, 계약 헤지링을 통해 우리는 최대한 많은 손실을 발생하면서 이익을 얻을 수 있습니다.

DEMO 전략

/*backtest
start: 2020-09-30 00:00:00
end: 2020-10-19 00:00:00
period: 1d
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_HuobiDM","currency":"BTC_USD"}]
*/

var step = 20    // Step length of adding position price

function main() {
    var pos1 = []
    var pos2 = []
    var ct = "quarter"                         // For example, quarterly contract
    exchanges[0].SetContractType(ct)
    exchanges[1].SetContractType(ct)
    var diff = 0

    while (true) {
        var r1 = exchanges[0].Go("GetDepth")   // Exchange A
        var r2 = exchanges[1].Go("GetDepth")   // Exchange B
        var depth1 = r1.wait()
        var depth2 = r2.wait()

        if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff) {
            if(pos1.length == 0 && pos2.length == 0) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            } else if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff + step) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            }
        }
        
        if(pos1.length != 0 && pos1[0].Profit < -0.001) {
            var info1 = $.CoverShort(exchanges[0], ct, pos1[0].Amount)
            var info2 = $.CoverLong(exchanges[1], ct, pos2[0].Amount)
            pos1 = _C(exchanges[0].GetPosition)
            pos2 = _C(exchanges[1].GetPosition)
            diff = 0
        }
        LogStatus(_D(), diff)
        Sleep(500)
    }
}

img

전략 논리: 전략은 포지션 변수 pos1과 pos2를 빈 배열로 초기화하기 시작합니다. 전략은 메인 루프에 들어가고, 각 루프의 시작에서 두 거래소의 계약의 깊이 데이터 (오더북 데이터) 를 얻어 가격 차이를 계산합니다. 가격 차이가 계속 확대되고 마지막 가격 차이 더하기 단계 길이을 넘어서면 포지션을 헤지하고 추가합니다. 포지션이 유지되면 첫 번째 거래소의 위치 손실이 특정 값 (예를 들어 -0.001) 을 초과하는 것을 감지하고 포지션을 닫습니다. 이렇게 반복하십시오.

원리는 매우 간단합니다. 즉, 가격 차이가 크면 헤지 해제합니다. 거래 위치의 예상 손실 손실을 기다리는 동안 포지션을 닫습니다. 가격 차이가 계속 확대되면 거래 위치 손실의 예상 손실까지 헤지 포지션을 계속 추가하십시오. 중요한 매개 변수는: 포지션을 닫기 위한 손실 금액, 포지션 가격 차이를 추가하는 단계 길이 및 헤지 금액입니다.

이 전략은 다소 초보자적, 단지 아이디어를 확인하기 위해, 실제 봇은 사용할 수 없습니다. 여전히 많은 문제가 실제 봇을 고려해야 합니다. 예를 들어, 거래되는 계약이 통화 표준인지 U 표준인지, 그리고 A와 B 거래소의 다른 계약의 곱셈이 동일하는지.

이 방법으로, 한 거래소는 돈을 잃게 될 것이고, 손실 부분은 다른 거래소의 이익 부분이 될 것입니다 (가격 차이, 헤지 손실이있을 수 있습니다. 즉 손실은 이익보다 더 많습니다.) 전략은 선물 거래 클래스 라이브러리를 채택합니다.$.OverShort, $.OpenShort, 이것은 템플릿의 인터페이스 함수입니다. 위의 DEMO를 실행하려면 이 클래스 라이브러리를 참조해야 합니다.

위 전략 프로토타입은 단지 가장 간단한 탐구이며 실제 운영에서 고려해야 할 더 많은 세부 사항이있을 수 있습니다. 예를 들어, 포지션의 양은 증대적으로 설계 될 수 있습니다. 이것은 여기에 하나의 예입니다. 유사한 전략은 더 많은 최적화를 할 수 있어야하며 전문가들은 제안을 할 수 있습니다.


관련

더 많은