avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Dibuat di: 2019-10-29 14:57:54, diperbarui pada: 2024-12-16 11:24:47
comments   0
hits   2741

Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Sudah banyak bursa berjangka mata uang digital, tetapi sebagai derivatif berjangka, perdagangan opsi mata uang digital, tidak banyak bursa di pasar. Bursa yang mendukung perdagangan opsi termasuk Deribit dan BitMEX. Dalam bidang perdagangan kuantitatif, terdapat pula banyak strategi untuk perdagangan opsi, seperti strategi opsi yang disebutkan dalam beberapa materi pencarian:

jenis
Strategi arah: Membeli opsi panggilan Menjual opsi jual Penyebaran Panggilan Bull Spread Taruhan Bull
Beli Opsi Jual Menjual opsi panggilan Panggilan Beruang Menyebar Spread Taruhan Beruang
Strategi volatilitas: Jual Straddle Jual Straddle Lebar Beli Straddle Beli Wide Straddle
Strategi lindung nilai: Panggilan Tertutup Tutupi Put Panggilan Perlindungan Pelindung
Batas Ganda Panjang Batas ganda posisi pendek

Dikutip darimenghubungkan

Untuk menulis strategi perdagangan opsi, Anda masih perlu meletakkan dasar yang kuat terlebih dahulu dan memahami operasi dasar seperti menempatkan pesanan, memperoleh informasi pasar, membatalkan pesanan, dan memperoleh posisi. Penulisan strategi masih menggunakan Inventor Quantitative Trading Platform, meskipun Inventor Quantitative Trading Platform saat ini terutama mendukung perdagangan mata uang ke mata uang, perdagangan kontrak, dan perdagangan leverage di bidang perdagangan kuantitatif mata uang digital. Tidak banyak informasi yang terkait dengan perdagangan opsi. Di bawah ini, kami akan mengambil bursa “Deribit” sebagai contoh untuk memperkenalkan cara menggunakan Platform Perdagangan Kuantitatif Inventor untuk memainkan perdagangan opsi mata uang digital.

Informasi terkait Deribit

Dokumentasi API: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument Disk simulasi: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Anda dapat mendaftarkan akun di situs web platform simulasi, mengaktifkan API KEY, dan memperoleh API KEY. Konfigurasi pada Inventor Quantitative Trading Platform sama dengan konfigurasi pada akun riil. Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Ada 4 konsep dasar yang perlu Anda pahami untuk perdagangan opsi: Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

  • Tanggal pelaksanaan: Tanggal di mana pihak panjang dan pendek opsi menyelesaikan penyerahan kontrak opsi.
  • Harga pelaksanaan: Pada tanggal pelaksanaan, pihak panjang dan pendek opsi menyelesaikan penyerahan kontrak opsi pada harga pelaksanaan.
  • Premium: Ini adalah harga opsi. Seperti spot futures, kuotasi mencakup harga beli dan harga jual. Perlu dicatat bahwa karena likuiditas opsi secara umum lebih buruk daripada futures dan spot, spread bid-ask mungkin besar, jadi perhatian khusus harus diberikan di sini! Setelah transaksi selesai, harga transaksi adalah biaya opsi beli. Pada saat ini, posisi beli memperoleh hak (hak untuk melaksanakan opsi); dan posisi jual opsi, sebagai pihak yang menerima premi. , memiliki kewajiban tambahan. Setelah posisi long meminta untuk menggunakan hak, posisi short harus bekerja sama.
  • Opsi beli dan opsi jual: Opsi beli adalah hak yang dimiliki oleh pemegang opsi beli untuk meminta pemegang opsi beli untuk membeli sejumlah Bitcoin pada harga pelaksanaan tertentu pada tanggal pelaksanaan tertentu, dan pemegang opsi beli memiliki kewajiban untuk bekerja sama dengan pemegang opsi beli. pemegang. Opsi jual adalah hak yang dimiliki pemegang opsi beli untuk meminta pemegang opsi jual untuk membeli sejumlah Bitcoin pada harga pelaksanaan tertentu pada tanggal pelaksanaan tertentu. Pada tanggal pelaksanaan tertentu, penjual opsi jual diharuskan untuk menjual bitcoin yang diberikan pada harga pelaksanaan tertentu, dan penjual pendek berkewajiban untuk bekerja sama dengan penjual panjang.

Informasi Pasar

Menurut dokumentasi API Deribit Exchange, antarmuka pasar Deribit hanya meneruskan data untuk mengakses informasi pasar berjangka atau opsi.instrument_nameParameternya berbeda (instrument_name ditetapkan oleh fungsi SetContractType), jadi pada dasarnya Anda dapat menggunakan antarmuka untuk mendapatkan informasi pasar.GetTickerDapatkan penawaran untuk pilihan.

Tentu saja, paket bawaan Inventor Quantitative Trading Platform adalah pasar riil Deribit Exchange. Pertama-tama kita harus beralih ke pasar simulasi dan menggunakan kode berikut:

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

Kemudian saat ini kami menyiapkan kontrak opsiBTC-27DEC19-7000-P: Ini adalah opsi jual dengan tanggal pelaksanaan 27DES19 dan harga pelaksanaan 7000.

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

Kemudian dapatkan. Kami menulisnya bersama, menjalankan kode, dan menguji untuk mendapatkan informasi pasar dari kontrak opsi ini.

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

Menggunakan alat debugging bisa sangat mudah untuk menguji: Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi Anda dapat melihat bahwa harganya konsisten dengan harga pada disk simulasi. Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Metode pemanggilan antarmuka pasar lainnya sama dan tidak akan diulang di sini. Perlu dicatat bahwa: Perdagangan opsi tidak terlalu aktif. Terkadang tidak akan ada pesanan beli atau pesanan jual. Pada saat ini, lapisan bawah Platform Perdagangan Kuantitatif Inventor akan mendeteksi nilai 0 dan melaporkan kesalahan. Anda dapat menggunakanSetErrorFilter("Invalid ticker")Abaikan kesalahan ini dan gunakanGetRawJSONFungsi ini memperoleh informasi asli pasar dan merangkum datanya. Berikut ini saya tuliskan contoh untuk mencapai fungsi serupa:

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
}

Ketika memanggil tulis:Log($.GetTicker(exchange))

Tempatkan pesanan

Operasi penempatan order sangat sederhana. Dibandingkan dengan perdagangan berjangka, hanya ada dua arah: beli dan jual. Juga gunakanSell,BuyUrutan fungsi.

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

Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Pesanan yang baru saja ditempatkan juga muncul di papan perdagangan simulasi. Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Danexchange.GetOrder(id)Anda dapat menanyakan informasi pesanan.

Batalkan Pesanan

Metode yang sama digunakan untuk pembatalan pesanan.CancelOrderFungsinya, sama seperti membatalkan pesanan dalam perdagangan berjangka. Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Dapatkan aset yang tersedia di akun

Mendapatkan aset yang tersedia di akun sama persis seperti dalam perdagangan berjangka. Langsung hubungiGetAccountFungsi.

Tampilan pada halaman pertukaran simulasi Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Jalankan kode untuk mendapatkan: Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Dapatkan informasi posisi

Untuk menahan posisi, Anda tidak dapat langsung menggunakan paketGetPositionberfungsi, karena secara default transaksi Deribit adalah transaksi berjangka, bukan transaksi opsi, dan hanya fungsi ini yang dapat digunakan untuk memperoleh posisi berjangka. Oleh karena itu, kita harus merangkum fungsi perolehan posisi opsi sendiri.

Antarmuka fungsi untuk mendapatkan posisi dalam dokumentasi API: Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

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

PanggilanLog($.GetPosition(exchange))Anda dapat mencetak informasi posisi. Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi

Dengan cara ini, operasi dasar dapat dicapai, dan sisanya adalah mempelajari strategi perdagangan opsi.