Strategi lindung nilai lintas mata uang dalam perdagangan kuantitatif aset blockchain

Penulis:Lydia, Dibuat: 2022-12-27 10:11:48, Diperbarui: 2023-09-20 10:02:24

img

Strategi lindung nilai lintas mata uang dalam perdagangan kuantitatif aset blockchain

Dalam strategi lindung nilai, ada berbagai jenis lindung nilai: lindung nilai lintas pasar, lindung nilai lintas periode, dll. Hari ini kita akan berbicara tentang lindung nilai lintas mata uang, yang tepatnya adalah strategi lindung nilai lintas mata uang dalam perdagangan kuantitatif aset blockchain. Secara umum, subjek transaksi lindung nilai adalah sama, sedangkan lindung nilai lintas mata uang melibatkan pembelian dan penjualan subjek yang berbeda. Saat lindung nilai varietas yang sama, kita dapat menggunakan perbedaan harga sebagai harga beli dan jual dalam transaksi lindung nilai. Untuk lindung nilai lintas pasar yang paling sederhana dari varietas yang sama, perbedaan harga berfluktuasi berulang kali dalam kisaran tertentu.

Misalnya: Pasangan perdagangan A: LTC_USDT Pasangan perdagangan B: ETH_USDT

Mendistribusikan posisi pembukaan sesuai dengan nilai rasio harga dariPrice of Trading pair A/Price of Trading pair B. Semakin besar proporsi, semakin banyak kita akan menjual A dan membeli B. Jika proporsi menurun, beli A dan jual B. Jumlah USDT setara dari setiap lindung nilai sebenarnya adalah strategi untuk perdagangan grid berdasarkan harga relatif LTC/ETH. Ide strategi tidak rumit. Namun, harus dicatat bahwa portofolio lindung nilai semacam ini sebenarnya menggunakan ETH sebagai mata uang harga jangkar untuk harga LTC. Harga jangkar kemungkinan akan keluar dari tren sepihak. Meskipun sebagian besar waktu mungkin merupakan tren volatile, risiko ini perlu dipertimbangkan dan dicatat.

Sangat mudah untuk menulis prototipe strategi dengan menggunakan platform FMZ Quant Trading: Ketika kode strategi berjalan, itu perlu referensiimgdanimgPlot library:https://www.fmz.com/strategy/27293Library perdagangan spot mata uang digital: Ini dilengkapi dengan bilah template ketika setiap pengguna 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

// parameters
var numPoint = 100        // Number of nodes
var distance = 0.08       // Proportional distance
var amountPoint = 100     // Node amount in 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("Hedging, price ratio", 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("hedge, price ratio", 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)
    }
}

Melalui backtesting, kita dapat awalnya memverifikasi ide strategi

Gunakan pengaturan backtesting default:

img img

Hal ini dapat dilihat bahwa hanya beberapa lusin baris kode yang digunakan untuk membangun strategi ide Anda sendiri. Sangat mudah untuk menerapkan prototipe ide di platform FMZ Quant Trading. Menurut gambar di atas, proporsi harga ini berfluktuasi sebagian besar waktu, tetapi akan ada tren tertentu. Arah optimasi dapat menjadi kontrol posisi selama lindung nilai atau menambahkan identifikasi tren tertentu. Dalam hal kontrol posisi, Anda dapat meningkatkan jumlah lindung nilai dari setiap node lindung nilai.

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,          // 8% of amountPoint per increment
            isHold : false,
        }
        arrHedgeList.push(point)
    }
    isFirst = false
}

Dengan cara ini, posisi yang relatif berat dapat terkonsentrasi pada posisi dengan proporsi harga yang tinggi, sehingga menghindari posisi besar yang ditempati ketika proporsi harga rendah. Tentu saja, lindung nilai lintas mata uang seperti itu sangat berisiko. Jika harga satu mata uang terus meningkat relatif terhadap harga mata uang lain, kerugian mengambang akan terjadi. Oleh karena itu, lindung nilai lintas mata uang membutuhkan korelasi yang lebih kuat antara kedua mata uang.

Strategi ini hanya DEMO awal, yang dapat ditingkatkan dan dioptimalkan lebih lanjut.


Berkaitan

Lebih banyak