Изготовленный инструмент количественной торговли опционами на цифровую валюту

Автор:FMZ~Lydia, Создано: 2022-12-23 22:12:54, Обновлено: 2023-09-20 10:41:08

Off the shelf quantitative trading tool for digital currency options

Изготовленный инструмент количественной торговли опционами на цифровую валюту

1. Количественная и программная торговля опционами на цифровую валюту

В последнее время многие биржи последовательно открыли торговую функцию цифровых валютных опционов в качестве производного. Подобно традиционным опционам, торговля опционами и торговля фьючерсами могут быть объединены для формирования многих торговых стратегий и методов. Хотя на рынке есть много инструментов количественной торговли с открытым исходным кодом, эти инструменты часто нуждаются в понимании основной структуры, знакомстве с языком программирования для написания структуры или вручную выполняют сложную отладку, конфигурацию и модификацию. Это не очень удобно для начинающих программирования и количественной торговли.

В раннем дизайне архитектуры FMZ Quant (FMZ.COM) учитывала поддержку количественной оценки различных финансовых производных и программной торговли, и быстро получала доступ к торговле опционами. Торговля опционами в основном похожа на торговлю фьючерсами, или даже проще. Кроме того, нет нового интерфейса. Пользователи, знакомые с платформой FMZ, не будут увеличивать другие затраты на обучение. Они могут установить опционный контракт только как фьючерсный контракт для получения рыночной информации, размещения заказов, отмены заказов, запроса позиций и так далее.

2. Доступ к Deribit Exchange напрямую с помощью языка программирования

Давайте возьмем опционный контракт Deribit Exchange в качестве примера.

Используется на языке Go:

package main 

import "net/http"
import "io/ioutil"
import "fmt"
import "encoding/json"



func main() {
    // Get ticker, access interface: https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P

    resp, err := http.Get("https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P")
    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    ret := string(body)
    fmt.Println("This is just string data ticker:", ret)
    fmt.Println("Need to convert to JSON format") 

    type js struct {
        data interface{}
    }

    ticker := new(js)

    json.Unmarshal([]byte(ret), &ticker.data)

    fmt.Println("ticker:", ticker) 
    fmt.Println("index_price, marked price data in ticker:", ticker.data.(map[string]interface{})["result"].(map[string]interface{})["index_price"])
}

3. Использование интерфейса, включенного в платформу FMZ Quant Trading

Мы закончили его, используя платформу FMZ в двух простых предложениях.

function main() {
    exchange.IO("base", "https://test.deribit.com")   # Switch to the demo offered by the exchange
    exchange.SetContractType("BTC-3JAN20-7250-P")     # Set up options contracts
    var ticker = exchange.GetTicker()                 # Get options ticker
    Log(ticker.Info.result.index_price)               # Print the required data and observe
}

Off the shelf quantitative trading tool for digital currency options Off the shelf quantitative trading tool for digital currency options

Как мы видим, очень просто получить необходимые данные всего за несколько строк кода.

Это просто доступ к не подписанному общественному интерфейсу API биржи; доступ к подписанному частному интерфейсу будет более сложным.

Каждый интерфейс должен выполнять много подписей, обработки параметров и т.д.

        strBody := ""
	strQuery := ""
	ts := toString(time.Now().UnixNano() / 1e6)
	nonce := toString(time.Now().UnixNano() / 1e6)
	uri := resource
	if httpMethod == "GET" {
		strQuery = encodeParams(params, false)
		uri = fmt.Sprintf("%s?%s", resource, strQuery)
	} else if httpMethod == "POST" {
		if len(raw) > 0 && len(raw[0]) > 0 {
			strBody = raw[0]
		} else {
			strBody = json_encode(params)
		}
	}

	strRequestDate := fmt.Sprintf("%s\n%s\n%s\n", httpMethod, uri, strBody)
	strToSign := fmt.Sprintf("%s\n%s\n%s", ts, nonce, strRequestDate)
	h := hmac.New(sha256.New, []byte(p.secretKey))
	h.Write([]byte(strToSign))
	strSign := hex.EncodeToString(h.Sum(nil))

	req := Request{
		Method:  httpMethod,
		Uri:     fmt.Sprintf("%s%s", p.apiBase, uri),
		Timeout: p.timeout,
		Body:    strBody,
	}

4. Более сложные требования и функции

Не только это, если вам нужно использовать одновременный, асинхронный доступ к рынку, операции с заказами и библиотеку кода для обработки асинхронных, вам нужно написать более сложную логику асинхронной обработки. Невнимательность также может вызвать проблемы с логическим дизайном, такие как блокировка. Если вам нужно снова использовать графический дисплей, вам нужно научиться использовать много библиотек. Даже количественному трейдеру с программированием нужно некоторое время, чтобы научиться. Однако использовать платформу FMZ Quant намного проще, потому что эти функции были инкапсулированы, а разработанные интерфейсы вызовов очень просты и просты в использовании. Вы можете использовать очень мало кода для реализации функций различных требований.

function main(){
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7250-P")
    while(1){
        var records = exchange.GetRecords()
        Log(records)
        $.PlotRecords(records, "K")
        Sleep(1000)
    }
}

Используя библиотеку шаблонов Plot Library, предоставляемую платформой, легко нарисовать K-линейный график:

Off the shelf quantitative trading tool for digital currency options

Есть еще много функций, которые нужно исследовать и развивать!

5. Постскрипт

Если это будет реализовано непосредственно в языке go (или python и т. д.), как выше, новые ученики могут быть отклонены непосредственно>_< Например, стратегии операции с опционами Deribit см.:https://www.fmz.com/strategy/179475


Содержание

Больше информации