
Il existe déjà de nombreuses bourses de contrats à terme sur devises numériques, mais en ce qui concerne les produits dérivés à terme et les options sur devises numériques, il n’y a pas beaucoup de bourses sur le marché. Les bourses qui prennent en charge le trading d’options incluent Deribit et BitMEX. Dans le domaine du trading quantitatif, il existe également de nombreuses stratégies de trading d’options, telles que les stratégies d’options mentionnées dans certains documents recherchés :
| taper | |||||
|---|---|---|---|---|---|
| Stratégie directionnelle : | Acheter une option d’achat | Vendre une option de vente | Spread d’appel haussier | Bull Put Spread | |
| – | Acheter une option de vente | Vendre une option d’achat | Spread d’option d’achat à l’ours | Bear Put Spread | |
| Stratégies de volatilité : | Vendre Straddle | Vendre un straddle large | Acheter Straddle | Achetez Wide Straddle | |
| Stratégies de couverture : | Appel couvert | Put couvert | Appels de protection | Mise de protection | |
| – | Limite double longue | Position courte double limite | – | – |
Cité deconnecter
Pour rédiger une stratégie de trading d’options, vous devez d’abord établir des bases solides et vous familiariser avec les opérations de base telles que la passation d’ordres, l’obtention d’informations sur le marché, l’annulation d’ordres et l’obtention de positions. La rédaction de stratégies utilise toujours la plateforme de trading quantitatif Inventor, bien que cette dernière prenne actuellement principalement en charge le trading de devise à devise, le trading de contrats et le trading à effet de levier dans le domaine du trading quantitatif de devises numériques. Il n’existe pas beaucoup d’informations sur le trading d’options. Ci-dessous, nous prendrons l’exemple de la bourse « Deribit » pour vous présenter comment utiliser la plateforme de trading quantitatif Inventor pour jouer au trading d’options sur devises numériques.
Documentation de l’API : https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument Disque de simulation : https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Vous pouvez enregistrer un compte sur le site Web de la plateforme de simulation, activer la CLÉ API et obtenir la CLÉ API. La configuration sur la plateforme de trading quantitatif Inventor est la même que la configuration d’un compte réel.

Il y a 4 concepts de base que vous devez comprendre pour le trading d’options :

Selon la documentation API de Deribit Exchange, l’interface de marché de Deribit transmet uniquement les données permettant d’accéder aux informations du marché à terme ou des options.instrument_nameLes paramètres sont différents (instrument_name est défini par la fonction SetContractType), vous pouvez donc utiliser l’interface pour obtenir des informations sur le marché.GetTickerObtenez des devis pour les options.
Bien entendu, le package par défaut de la plateforme de trading quantitative Inventor est le marché réel de Deribit Exchange. Nous devons d’abord passer au marché de simulation et utiliser le code suivant :
exchange.IO("base", "https://test.deribit.com")
Ensuite, nous mettons actuellement en place un contrat d’optionBTC-27DEC19-7000-P:
Il s’agit d’une option de vente avec date d’exercice : 27DEC19 et prix d’exercice : 7000
exchange.SetContractType("BTC-27DEC19-7000-P")
Alors, récupérez-le. Nous l’écrivons ensemble, exécutons le code et testons pour obtenir les informations de marché de 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)
}
L’utilisation d’outils de débogage peut être très pratique pour tester :
Vous pouvez voir que le prix est cohérent avec celui du disque de simulation.

Les méthodes d’appel des autres interfaces de marché sont les mêmes et ne seront pas répétées ici. Il convient de noter que :
Le trading d’options n’est pas très actif. Parfois, il n’y aura pas d’ordres d’achat ou de vente. À ce moment-là, la couche inférieure de la plateforme de trading quantitatif Inventor détectera une valeur de 0 et signalera une erreur. Vous pouvez utiliserSetErrorFilter("Invalid ticker")Ignorez cette erreur et utilisezGetRawJSONLa fonction récupère les informations originales du marché et encapsule les données. J’écris ici 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
}
Lors de l’appel, écrivez :Log($.GetTicker(exchange))
Le placement d’ordres est très simple. Par rapport aux transactions à terme, il n’y a que deux directions : acheter et vendre. Utiliser égalementSell,BuyOrdre des fonctions.
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))
}

L’ordre qui vient d’être passé apparaît également sur le tableau de trading simulé.

etexchange.GetOrder(id)Vous pouvez interroger les informations de la commande.
La même méthode est utilisée pour l’annulation de commande.CancelOrderFonction, tout comme l’annulation d’un ordre dans le trading à terme.

L’obtention des actifs disponibles sur un compte est exactement la même que dans le trading à terme. Appelez directementGetAccountFonction.
Affichage sur la page d’échange simulée

Exécutez le code pour obtenir :

Pour conserver des positions, vous ne pouvez pas utiliser directement le packageGetPositionfonction, car par défaut les transactions Deribit sont des transactions à terme, pas des transactions d’options, et seule cette fonction peut être utilisée pour obtenir des positions à terme.
Nous devons donc encapsuler nous-mêmes la fonction d’obtention de positions d’options.
L’interface de fonction pour obtenir des positions dans la documentation de l’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
}
AppelLog($.GetPosition(exchange))Vous pouvez imprimer les informations de position.

De cette façon, les opérations de base peuvent être réalisées, et le reste consiste à étudier les stratégies de trading d’options.