Die Ressourcen sind geladen. Beförderung...

Überwältigungsstrategien für die Quantifizierung von Blockchain-Assets

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Erstellt: 2019-11-04 11:44:15, aktualisiert: 2023-10-17 21:25:35

img

Überwältigungsstrategien für die Quantifizierung von Blockchain-Assets

In der Hedgingstrategie gibt es verschiedene Arten von Hedging. Heute werden wir über Cross-Market-Hedging, Cross-Term-Hedging usw. sprechen. Heute werden wir über Cross-Variety-Hedging sprechen, genauer gesagt, über Cross-Currency-Hedging-Strategien in Blockchain-Asset-Quantifizierungsgeschäften.

Zum Beispiel: A ist für: LTC_USDT Das B-Paar ist: ETH_USDT

NachA交易对的价格/B交易对的价格Dieser Preis-Proportionswert, die Differenzierung der Optionen. Je größer dieser Prozentsatz ist, desto mehr müssen wir A verkaufen und B kaufen. Je größer dieser Prozentsatz ist, desto größer müssen wir A kaufen und B verkaufen. Jedes gleich hohe USDT-Hedging ist eine Strategie, um mit dem relativen Preis für LTC/ETH zu handeln.

Mit der Quantitative Trading Plattform der Erfinder ist es einfach, ein Strategieprototyp zu schreiben: Die Strategiecode muss zitiert werden, wenn sie ausgeführt wirdimgundimg"Drahtlinie-Klassenbuch":https://www.fmz.com/strategy/27293"Klassebuch für digitale Währungen": Dies ist die neue Strategie, die jeder Benutzer mit sich bringt, wenn er eine neue Strategie erstellt.

/*backtest
start: 2019-05-01 00:00:00
end: 2019-11-04 00:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"LTC_USDT","balance":100000,"stocks":30},{"eid":"OKEX","currency":"ETH_USDT","balance":100000,"stocks":30}]
*/

/*
A exchanges[0] : EOS_USDT   
B exchanges[1] : ETH_USDT
*/

var Interval = 500

// 参数
var numPoint = 100        // 节点数
var distance = 0.08       // 比例间距
var amountPoint = 100     // 节点金额,单位USDT
var arrHedgeList = []

function main () {
    var isFirst = true
    while(true) {
        var rA = exchanges[0].Go("GetTicker")
        var rB = exchanges[1].Go("GetTicker")

        var tickerA = rA.wait()
        var tickerB = rB.wait()

        if (tickerA && tickerB) {
            var priceRatioSell = tickerB.Buy / tickerA.Sell     // B sell , A buy
            var priceRatioBuy = tickerB.Sell / tickerA.Buy      // B buy , A sell
            
            if (isFirst) {
                for (var i = 0 ; i < numPoint ; i++) {
                    var point = {
                        priceRatio : priceRatioSell + (i + 1) * distance,
                        coverRatio : priceRatioSell + i * distance,
                        amount : (0.08 * i + 1) * amountPoint,
                        isHold : false,
                    }
                    arrHedgeList.push(point)
                }
                isFirst = false
            }

            for (var j = 0 ; j < arrHedgeList.length; j++) {
                if (priceRatioSell > arrHedgeList[j].priceRatio && arrHedgeList[j].isHold == false) {
                    // B sell , A buy
                    Log("对冲,价格比", priceRatioSell, "#FF0000")
                    $.Buy(exchanges[0], arrHedgeList[j].amount / tickerA.Sell)
                    $.Sell(exchanges[1], arrHedgeList[j].amount / tickerB.Buy)
                    arrHedgeList[j].isHold = true
                    LogStatus(_D(), exchanges[0].GetAccount(), "\n", exchanges[1].GetAccount())
                    $.PlotLine("ratio", (priceRatioSell + priceRatioBuy) / 2)
                    break 
                }

                if (priceRatioBuy < arrHedgeList[j].coverRatio && arrHedgeList[j].isHold == true) {    
                    // B buy , A sell
                    Log("对冲,价格比", priceRatioBuy, "#32CD32")
                    $.Sell(exchanges[0], arrHedgeList[j].amount / tickerA.Buy)
                    $.Buy(exchanges[1], arrHedgeList[j].amount / tickerB.Sell)
                    arrHedgeList[j].isHold = false
                    LogStatus(_D(), exchanges[0].GetAccount(), "\n", exchanges[1].GetAccount())
                    $.PlotLine("ratio", (priceRatioSell + priceRatioBuy) / 2)
                    break
                }
            }
        }
        Sleep(Interval)
    }
}

Die Strategie kann durch Retesting überprüft werden, um den ersten Schritt zu überprüfen.

Mit dem Standard-Rückmessungseinstellung:

img

img

Wie man sieht, ist es sehr einfach, mit nur ein paar Dutzend Zeilen Code eine eigene Strategie zu entwickeln, und bei den Erfindern ist es sehr einfach, ein Ideenprototyp zu realisieren. Wie aus dem obigen Diagramm zu sehen ist, ist dieser Preisanteil die meiste Zeit in der Erschütterung, aber es wird eine bestimmte Trendrichtung auftreten. Die Optimierungsrichtung kann für die Positionskontrolle beim Hedging sein oder eine bestimmte Trenderkennung einbeziehen.

Bei der Positionskontrolle kann der Hedgingbetrag für jeden Hedgingknoten zunehmen, z. B. in Code:

if (isFirst) {
    for (var i = 0 ; i < numPoint ; i++) {
        var point = {
            priceRatio : priceRatioSell + (i + 1) * distance,
            coverRatio : priceRatioSell + i * distance,
            amount : (0.08 * i + 1) * amountPoint,          // 每次递增amountPoint的8%
            isHold : false,
        }
        arrHedgeList.push(point)
    }
    isFirst = false
}

Dies ermöglicht es, relativ schwerere Positionen in Positionen mit einem höheren Preisanteil zu konzentrieren und zu vermeiden, dass bei niedrigeren Preisanteilen zu große Positionen eingenommen werden. Natürlich sind solche Cross-Variety-Hedges riskant, da sie bei einem anhaltenden Anstieg des Preises einer Währung gegenüber der anderen einen Aufschwung erzeugen, weshalb Cross-Variety-Hedges eine stärkere Korrelation der beiden Varietäten benötigen.

Diese Strategie ist nur eine erste DEMO und kann weiterentwickelt und optimiert werden.


Verwandt

Mehr