Strategi hedging lintas mata uang dalam perdagangan aset kuantitatif blockchain

Penulis:Mimpi kecil, Dibuat: 2019-11-04 11:44:15, Diperbarui: 2023-10-17 21:25:35

img

Strategi hedging lintas mata uang dalam perdagangan aset kuantitatif blockchain

Dalam strategi hedging, ada berbagai jenis hedging. Hedging lintas pasar, hedging jangka panjang, dll. Hari ini kita akan membahas hedging lintas varietas, tepatnya strategi hedging lintas mata uang dalam perdagangan aset kuantitatif blockchain. Barang yang ditandai dalam perdagangan hedging biasanya sama, sedangkan hedging lintas mata uang adalah barang yang dibeli dan dijual dengan tanda yang berbeda. Dalam hedging varietas yang sama, kita dapat menggunakan perbedaan harga sebagai harga jual dalam perdagangan hedging, dan dengan hedging lintas varietas yang paling sederhana, harga ini pasti bergeser berulang kali.

Misalnya: A adalah: LTC_USDT Pasangan B adalah: ETH_USDT

BerdasarkanA交易对的价格/B交易对的价格Nilai rasio harga ini, posisi terbuka yang terdistribusi. Semakin besar rasio ini, semakin banyak kita akan menjual A, membeli B. Kebalikan rasio yang berubah adalah membeli A, menjual B. Setiap kali jumlah USDT yang sama dijaga, sebenarnya adalah strategi untuk melakukan perdagangan jaringan dengan harga relatif kuat dan lemah LTC/ETH. Strategi ini tidak rumit.

Dengan menggunakan inventor Quantum Trading Platform, Anda dapat dengan mudah menulis prototipe strategi: Kode strategi harus dikutip saat dijalankanimgdanimg"Draw Line Class Library" (Kumpulan Kelas Garis Gambar):https://www.fmz.com/strategy/27293"Kelas Perdagangan Tangan Mata Uang Digital": Ini adalah template yang dibawa oleh setiap pengguna saat mereka membuat strategi baru.

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

Anda dapat melakukan tes ulang untuk memverifikasi ide-ide strategis di awal langkah.

Menggunakan pengaturan retargeting default:

img

img

Seperti yang dapat dilihat, dengan hanya menggunakan beberapa lusin baris kode untuk menyusun strategi ide sendiri, prototipe ide adalah hal yang sangat mudah untuk diwujudkan. Dari grafik di atas terlihat bahwa rasio harga ini sebagian besar berada dalam goncangan, tetapi akan muncul arah tren tertentu, arah optimasi dapat menjadi untuk pengendalian posisi saat hedging atau bergabung dengan pengenalan tren tertentu.

Dalam hal pengendalian posisi, Anda dapat meningkatkan jumlah hedging untuk setiap node, misalnya dalam kode:

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
}

Hal ini memungkinkan posisi yang relatif lebih berat untuk berkonsentrasi pada posisi dengan rasio harga yang lebih tinggi, dan menghindari posisi yang terlalu besar ketika rasio harga lebih rendah. Tentu saja, penyelamatan cross-varietas ini berisiko, dan jika satu mata uang terus naik dibandingkan dengan mata uang lain, maka akan menimbulkan kerugian, sehingga penyelamatan cross-varietas membutuhkan korelasi dua varietas yang lebih kuat.

Strategi ini hanya demo awal, dan dapat terus diubah dan dioptimalkan.


Berkaitan

Lebih banyak