À l'heure actuelle, il existe de nombreux échanges à terme de devises numériques. Cependant, en tant que dérivé à terme, il y a peu d'échanges sur le marché pour le trading d'options de devises numériques. Deribit et BitMEX prennent en charge le trading d'options. Dans le domaine du trading quantitatif, le trading d'options a également une variété de stratégies, telles que les stratégies d'options mentionnées dans certains matériaux recherchés:
Le type |
---|
Stratégie de direction: |
– |
Stratégie de volatilité: |
Stratégie de couverture: |
– |
Cité parlien
Pour préparer une stratégie de trading d'options, vous devez d'abord poser une base solide et être familier avec les opérations de base telles que la passation d'un ordre, l'obtention d'un ticker, l'annulation d'un ordre et l'obtention de positions. La rédaction de la stratégie utilise toujours la plate-forme de trading FMZ Quant, bien que la plate-forme de trading FMZ Quant supporte actuellement le trading de devises, le trading de contrats et le trading à effet de levier dans le domaine du trading quantitatif de devises numériques. Il n'y a pas beaucoup d'informations sur le trading d'options.
Document de l'API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentBot de simulation:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Vous pouvez enregistrer un compte sur le site Web du bot de simulation, ouvrir la clé API et obtenir la clé API.
Il y a quatre concepts de base à comprendre sur le trading d'options:
- Date d'exercice: les parties longues et courtes de l'option terminent la livraison du contrat d'option à cette date. - Prix d'exercice: à la date d'exercice, les parties longues et courtes de l'option terminent la livraison du contrat d'option au prix d'exercice. -Prémium: c'est-à-dire le prix des options. Comme les options au comptant et les contrats à terme, il est coté à un prix d'offre et à un prix d'achat. Il convient de noter que, comme la liquidité des options est généralement inférieure à celle des contrats à terme et au comptant, la différence de prix entre l'offre et la demande peut être grande, il convient donc de prêter beaucoup d'attention ici! Après la transaction, le prix de transaction est le coût des positions longues de l'option, au moment où les positions longues obtiennent le droit (le droit d'exercer l'option); L'option courte, en tant que partie bénéficiaire de la prime, ajoute une obligation. Une fois que l'option longue demande d'exercer ses droits, l'option courte doit coopérer. - Des options de vente: La soi-disant option d'achat signifie que les positions longues de l'option ont le droit de demander aux positions courtes d'option d'acheter le Bitcoin donné à un certain prix d'exercice à une certaine date d'exercice, et les positions courtes ont l'obligation de coopérer avec les positions longues; La soi-disant option de vente signifie que la partie longue de l'option a le droit de demander à la partie courte de vendre le Bitcoin donné à un certain prix d'exercice à une certaine date d'exercice, et la partie courte a l'obligation de coopérer avec la partie longue.
Après avoir lu le document API de Deribit Exchange, nous pouvons voir que l'interface de ticker de Deribit pour accéder aux tickers de futures ou d'options est simplement une question de passer dans différentsinstrument_name
paramètres (instrument_name est définie par la fonction SetContractType), donc essentiellement, vous pouvez suivre l'interfaceGetTicker
pour obtenir le ticker des options.
Bien sûr, la plateforme de trading FMZ Quant encapsule le vrai bot de Deribit Exchange par défaut.
exchange.IO("base", "https://test.deribit.com")
Ensuite, nous avons mis en place le contrat d'optionBTC-27DEC19-7000-P
Actuellement.
Cette option de vente a une date d'exercice de: 27DEC19 et un prix d'exercice de: 7000.
exchange.SetContractType("BTC-27DEC19-7000-P")
Puis obtenir, écrivons-le ensemble et laisser le code exécuter pour tester obtenir le ticker pour ce contrat d'option.
function main () {
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7000-P")
var ticker = exchange.GetTicker()
Log(ticker)
}
Il est facile de tester en utilisant l'outil de débogage:
On peut voir que le prix est compatible avec celui du robot de simulation.
D'autres interfaces ticker sont appelées de la même manière, ce qui ne sera pas répété ici.
Le trading d'options n'est pas très actif. Parfois, il n'y a pas d'ordre d'achat ou de vente. À ce moment-là, la plateforme de trading FMZ Quant détectera la valeur de 0 en bas et signalera une erreur. Vous pouvez utiliserSetErrorFilter("Invalid ticker")
pour ignorer cette erreur, et utiliser la fonctionGetRawJSON
Voici un exemple pour réaliser des fonctions similaires:
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
}
Quand on est appelés, on écrit:Log($.GetTicker(exchange))
L'opération de placement d'un ordre est très simple, par rapport au trading à terme, il n'y a que deux directions d'achat et de vente.
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))
}
La commande qui vient d'être passée apparaît aussi sur le robot de simulation.
Je veux dire...exchange.GetOrder(id)
peut consulter les informations de commande.
C' est la même chose.CancelOrder
Cette fonction est utilisée pour l'annulation d'ordre, tout comme l'annulation d'ordre pour les contrats à terme.
Obtenir des actifs disponibles compte est exactement le même que le commerce à terme, appelez simplement leGetAccount
fonctionner directement.
Simuler l'affichage sur la page d'échange:
Exécutez le code pour obtenir.
On ne peut pas utiliser le capoté.GetPosition
fonction directement pour les positions, parce que la transaction Deribit par défaut est une transaction à terme, pas une transaction d'options, nous ne pouvons utiliser cette fonction pour obtenir des positions à terme.
Donc cela va devoir être notre propre fonction encapsulée pour obtenir la position des options.
Interface de fonction pour l'obtention de positions dans le document API:
$.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
}
AppelezLog($.GetPosition(exchange))
pour imprimer les informations de position.
Ainsi, les opérations de base peuvent être mises en œuvre, et le reste peut être étudié pour des stratégies de négociation d'options.