Die Ressourcen sind geladen. Beförderung...

Reform der Deribit-Futures-API zur Anpassung an den quantitativen Handel mit Optionen

Schriftsteller:FMZ~Lydia, Erstellt: 2022-12-28 10:02:51, Aktualisiert: 2024-12-16 11:28:56

img

Reform der Deribit-Futures-API zur Anpassung an den quantitativen Handel mit Optionen

Derzeit gibt es viele digitale Währungs-Futures-Börsen. Als Futures-Derivat gibt es jedoch nur wenige Börsen auf dem Markt für den Handel mit digitalen Währungsoptionen. Deribit und BitMEX unterstützen den Optionshandel. Im Bereich des quantitativen Handels hat der Optionshandel auch eine Vielzahl von Strategien, wie die in einigen gesuchten Materialien genannten Optionsstrategien:

Typ
Richtungsstrategie:
Volatilitätsstrategie:
Absicherungsstrategie:

Zitiert vonVerbindung

Um eine Optionshandelsstrategie vorzubereiten, müssen Sie zuerst eine solide Grundlage schaffen und mit grundlegenden Operationen wie dem Platzieren einer Bestellung, dem Erhalten eines Tickers, der Stornierung einer Bestellung und dem Erhalt von Positionen vertraut sein. Das Schreiben der Strategie verwendet immer noch die FMZ Quant Trading-Plattform, obwohl die FMZ Quant Trading-Plattform derzeit den Devisenhandel, den Kontrakthandel und den Hebelhandel im Bereich des quantitativen Handels mit digitaler Währung unterstützt. Es gibt nicht viele Informationen über den Optionshandel. Nehmen wir die Deribit Quant-Börse als Beispiel, um vorzustellen, wie man die FMZ Quant Trading-Plattform nutzt, um sich mit dem Handel mit digitalen Währungsoptionen vertraut zu machen.

Derbit-bezogene Materialien

API-Dokumenthttps://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentSimulationsbot:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Sie können ein Konto auf der Simulations-Bot-Website registrieren, den API KEY öffnen und den API KEY erhalten.

img

Es gibt vier grundlegende Konzepte zum Verständnis des Optionshandels:

- Ausübungsdatum: Die Long- und Short-Parteien der Option schließen den Optionsvertrag an diesem Datum ab. - Ausübungspreis: Am Ausübungstag schließen die Long- und Short-Parteien der Option den Optionsvertrag zum Ausübungspreis ab. -Premium: das heißt, der Preis der Optionen. Wie bei Spot und Futures wird er zu einem Gebots- und einem Gebotspreis notiert. Es ist erwähnenswert, dass, da die Liquidität von Optionen im Allgemeinen niedriger ist als die von Futures und Spot, die Preisdifferenz zwischen Bid und Ask groß sein kann, daher sollte hier viel Aufmerksamkeit geschenkt werden! Nach der Transaktion ist der Transaktionspreis die Kosten der Long-Positionen der Option, zu welchem Zeitpunkt die Long-Positionen das Recht erhalten (das Recht, die Option auszuüben); Die Short-Option, als Partei, die die Prämie erhält, fügt eine Verpflichtung hinzu. Sobald die Long-Option ihre Rechte ausüben möchte, muss die Short-Option kooperieren. - Aufruf-Put-Optionen: Die sogenannte Call-Option bedeutet, dass die Long-Positionen der Option das Recht haben, die Short-Positionen der Option zu einem bestimmten Ausubungspreis an einem bestimmten Ausubungstermin zu bitten, und die Short-Positionen die Verpflichtung haben, mit den Long-Positionen zusammenzuarbeiten. Die sogenannte Put-Option bedeutet, dass die Long-Seite der Option das Recht hat, die Short-Seite zu bitten, die Bitcoin an einem bestimmten Ausubungspreis an einem bestimmten Ausubungstermin zu verkaufen, und die Short-Seite die Verpflichtung hat, mit der Long-Seite zusammenzuarbeiten.

Erwerb von Ticker

Nach dem Lesen der API-Dokument von Deribit Exchange können wir sehen, dass die Tickerschnittstelle von Deribit für den Zugriff auf Futures oder Optionen Tickers ist einfach eine Frage derinstrument_nameParameter (instrument_name wird von der Funktion SetContractType festgelegt), so dass Sie im Grunde folgen können die Die SchnittstelleGetTickerUm den Tick der Optionen zu bekommen.

Natürlich verkapselt die FMZ Quant Trading Plattform standardmäßig den echten Bot der Deribit Exchange. Zuerst müssen wir mit dem folgenden Code auf den Simulationsbot wechseln:

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

Dann stellen wir den Optionsvertrag auf.BTC-27DEC19-7000-PIch bin gerade dabei. Dies ist eine Put-Option mit einem Ausübungstermin von: 27DEC19 und einem Ausübungspreis von: 7000.

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

Dann bekommen, lassen Sie uns zusammen schreiben und lassen Sie den Code laufen, um zu testen, ob Sie den Ticker für diesen Optionsvertrag bekommen.

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

Es ist leicht zu testen, indem Sie das Debugging-Tool verwenden:

img

Man sieht, dass der Preis mit dem des Simulations-Bots übereinstimmt.

img

Andere Tickerschnittstellen werden auf die gleiche Weise aufgerufen, was hier nicht wiederholt wird. Der Handel mit Optionen ist nicht sehr aktiv. Manchmal gibt es keine Bestellung zum Kaufen oder Verkaufen. Zu diesem Zeitpunkt wird die FMZ Quant Trading Plattform den Wert von 0 am unteren Rand erkennen und einen Fehler melden. Sie könnenSetErrorFilter("Invalid ticker")um diesen Fehler zu ignorieren und die Funktion zu verwendenGetRawJSONHier schreibe ich ein Beispiel, um ähnliche Funktionen zu erreichen:

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
}

Wir schreiben, wenn wir angerufen werden:Log($.GetTicker(exchange))

Bestellen

Die Operation der Auftragserteilung ist sehr einfach, im Vergleich zum Futures-Handel gibt es nur zwei Richtungen des Kaufs und Verkaufs.

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))
}

img

Die Bestellung, die gerade gestellt wurde, erscheint auch auf dem Simulationsbot.

img

Und...exchange.GetOrder(id)Sie können sich die Bestellinformationen ansehen.

Stornierung von Aufträgen

Das gleiche.CancelOrderDiese Funktion wird für die Stornierung von Aufträgen verwendet, genau wie die Stornierung von Aufträgen für den Futures-Handel.

img

Verfügbare Kontowerte erhalten

Das Erhalten des Kontos verfügbare Vermögenswerte ist genau das gleiche wie Futures-Handel, rufen Sie einfach dieGetAccountSie funktioniert direkt.

Simulieren Sie die Anzeige auf der Austauschseite:

img

Führen Sie den Code aus.

img

Positionsinformationen erhalten

Wir können das eingekapselte nicht benutzen.GetPositionFunktion direkt für Positionen, weil die Standard-Deribit-Transaktion ist eine Futures-Transaktion, nicht eine Options-Transaktion, können wir nur diese Funktion verwenden, um Futures-Positionen zu erhalten. Das muss also unsere eigene verkapselte Funktion sein, um die Optionsposition zu erhalten.

Funktionsoberfläche zur Erfassung von Positionen im API-Dokument:

img

$.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
}

Rufen Sie an.Log($.GetPosition(exchange))Um die Positionsinformationen zu drucken.

img

So können die grundlegenden Operationen umgesetzt und der Rest für Optionshandelsstrategien untersucht werden.


Verwandt

Mehr