Überlegungen zur Vermögensbewegung durch eine Kontraktsicherungsstrategie

Schriftsteller:Lydia., Erstellt: 2022-12-19 16:36:12, Aktualisiert: 2023-09-20 10:38:30

img

Überlegungen zur Vermögensbewegung durch eine Kontraktsicherungsstrategie

In letzter Zeit gab es viele Nachrichten über den digitalen Währungsmarkt und den Austausch. Für eine Weile waren alle Währungsfreunde in Panik, besorgt über die Sicherheit ihrer Blockchain-Vermögenswerte. Es gibt auch viele kleine Anzeigen von 10% und 20% Rabatt für untätige Second-Hand-Währungen in verschiedenen Währungsmarktgruppen. Es gibt viele Arten von Strategien, um sich zu bemühen, Geld stetig zu verlieren, während man stetig Geld verdient. Viele Benutzer schikanierten auch Wenn es einen stabilen Geldmacher gibt, warum willst du einen stabilen Geldverlierer? Es ist wahr, daß sowohl ein stabiler Gewinn als auch ein stabiles Geldverlustmoney printer, die nicht leicht zu finden ist. Verzeihen Sie mein schlechtes Englisch.

Es gibt jedoch noch einige instabile, zum Beispiel durch die Sicherung von Verträgen, können wir Gewinne erzielen, während wir möglichst viele Verluste machen.

DEMO-Strategie

/*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

Strategie Logik: Die Strategie beginnt mit der Initialisierung der Positionsvariablen pos1 und pos2 als leere Arrays. Die Strategie tritt in die Hauptschleife ein. Zu Beginn jeder Schleife werden die Tiefendaten (Orderbuchdaten) der Verträge der beiden Börsen zur Berechnung der Preisdifferenz erhalten. Wenn sich die Preisdifferenz weiter ausweitet und über die letzte Preisdifferenz plus eine Schrittlänge hinausgeht, setzen Sie die Absicherung und das Hinzufügen von Positionen fort. Wenn die Position gehalten wird, wird festgestellt, dass der Positionsverlust des ersten Austauschs einen bestimmten Wert übersteigt (z. B. -0,001), dann schließen Sie die Position. Wiederholen Sie auf diese Weise.

Das Prinzip ist sehr einfach, das heißt, wenn die Preisunterschiede groß ist, dann de-Hedge. Wenn Sie auf den Verlust des erwarteten Verlusts der Wechselposition warten, schließen Sie die Position. Wenn die Preisunterschiede weiter wächst, fügen Sie weiterhin Positionen zur Absicherung hinzu, bis der erwartete Verlust der Wechselposition vermieden wird. Die wichtigen Parameter sind: der Verlustbetrag, um die Position zu schließen, die Schrittlänge der Hinzufügung der Positionspreisunterschiede und der Absicherungsbetrag.

Die Strategie ist eher rudimentär, nur um die Idee zu überprüfen, ist der echte Bot nicht verfügbar. Es gibt noch viele Fragen, die für einen echten Bot zu berücksichtigen sind, zum Beispiel, ob der zu handelende Vertrag Währungsstandard oder U-Standard ist und ob die Multiplikatoren verschiedener Verträge an Börsen A und B gleich sind.

Auf diese Weise wird eine Börse Geld verlieren, und der Verlustteil wird zum Gewinnteil einer anderen Börse (Preisunterschied, es kann einen Absicherungsverlust geben, dh der Verlust ist größer als der Gewinn).$.OverShort, $.OpenShort, das sind die Schnittstellenfunktionen der Vorlage. Um die obige DEMO auszuführen, müssen Sie auf diese Klassenbibliothek verweisen.

Der obige Strategieprototyp ist nur die einfachste Erforschung, und es kann mehr Details geben, die im tatsächlichen Betrieb zu berücksichtigen sind, zum Beispiel kann die Anzahl der Positionen inkrementell gestaltet werden. Dies ist nur ein Beispiel hier. Ähnliche Strategien sollten in der Lage sein, mehr zu optimieren, und Experten sind herzlich eingeladen, Vorschläge zu machen.


Verwandt

Mehr