
Vor Kurzem hat die Inventor Quantitative Trading Platform ihr Backtesting-System aktualisiert, um das Backtesting von digitalen Währungsoptionen zu unterstützen.DeribitEinige Optionsdaten von der Börse. Daher verfügen wir über bessere Tools, um den Optionshandel zu erlernen und Strategien zu validieren.
Im Backtesting-System definiertDeribitDie Optionen sind im europäischen Stil und ein Kontrakt ist 1 BTC wert. Der Optionsvertragscode lautet:BTC-7AUG20-12750-C。
| Gegenstand | Ausübungsdatum | Ausübungspreis | (Call/Put) Optionen |
|---|---|---|---|
| BTC | 7AUG20 | 12750 | C |
| Bitcoin | Ausübungsdatum: 7. August 2020 | Ausübungspreis 12750 | Call-Option |
| BTC | 7AUG20 | 12750 | P |
| Bitcoin | Ausübungsdatum: 7. August 2020 | Ausübungspreis 12750 | Put-Option |
Die Vorgänge zum Aufsetzen von Verträgen und Erhalten von Positionen sind dieselben wie bei digitalen Währungs-Futures.
So richten Sie den Vertrag ein:exchange.SetContractType("BTC-7AUG20-12750-C")
Positionen abrufen:var pos = exchange.GetPosition()
Der Preis eines Optionskontrakts ist die Prämie eines Optionskontrakts, und der Optionskäufer muss die Prämie an den Optionsverkäufer zahlen. Der Käufer erhält das Recht, die Option auszuüben, und der Verkäufer hat die Pflicht, die Option auszuüben. Ein Optionskontrakt kann gehandelt werden (z. B. durch Schließen einer Position, Begleichen einer Verpflichtung), bevor er ausgeübt wird.
Call-Optionen verkaufen und Spot kaufen.
/*backtest
start: 2020-07-27 00:00:00
end: 2020-08-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Deribit","currency":"BTC_USD"},{"eid":"OKEX","currency":"BTC_USDT","balance":100000}]
*/
function main() {
exchanges[0].SetContractType('BTC-7AUG20-12750-C');
var initSpotAcc = _C(exchanges[1].GetAccount)
var isFirst = true
while(true) {
var optionTicker = exchanges[0].GetTicker()
var spotTicker = exchanges[1].GetTicker()
if(isFirst) {
exchanges[0].SetDirection("sell")
exchanges[0].Sell(optionTicker.Buy, 1)
exchanges[1].Buy(spotTicker.Sell, 1)
isFirst = false
}
var optionPos = _C(exchanges[0].GetPosition)
var nowSpotAcc = _C(exchanges[1].GetAccount)
var diffStocks = (nowSpotAcc.Stocks - initSpotAcc.Stocks)
var diffBalance = (nowSpotAcc.Balance - initSpotAcc.Balance)
var spotProfit = diffBalance + diffStocks * spotTicker.Last
var optionProfit = optionPos[0].Profit * spotTicker.Last
LogProfit(spotProfit + optionProfit)
$.PlotLine("现货", spotProfit)
$.PlotLine("期权", optionProfit)
Sleep(500)
}
}

Optionen können einen gewissen Grad an Absicherungsschutz für per Spot gekaufte Vermögenswerte bieten. Es wird im Allgemeinen verwendet, wenn Sie hinsichtlich des Spots optimistisch sind und bereit sind, den Spot zu halten. Das Risiko liegt im Rückgang der Spotpreise. Zwar können Optionen gewisse Spotverluste bis zu einem gewissen Grad ausgleichen, doch wenn die Verluste die Optionsprämie übersteigen, entsteht ein Nettoverlust.
Darüber hinaus ist die Liquidität des Marktes für digitale Währungsoptionen im Allgemeinen gering und manchmal ist es schwierig, Gegenparteien zu finden. Auch dies muss berücksichtigt werden.
In ähnlicher Weise können wir Spot durch Futures ersetzen. Der Code lautet wie folgt:
/*backtest
start: 2020-07-27 00:00:00
end: 2020-08-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Deribit","currency":"BTC_USD"},{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
*/
function main() {
exchanges[0].SetContractType('BTC-7AUG20-12750-C');
exchanges[1].SetContractType("quarter")
var isFirst = true
while(true) {
var optionTicker = exchanges[0].GetTicker()
var futuresTicker = exchanges[1].GetTicker()
if(isFirst) {
exchanges[0].SetDirection("sell")
exchanges[0].Sell(optionTicker.Buy, 1)
exchanges[1].SetDirection("buy")
exchanges[1].Buy(futuresTicker.Sell, _N(1 * futuresTicker.Sell / 100, 0))
isFirst = false
}
var optionPos = _C(exchanges[0].GetPosition)
var futuresPos = _C(exchanges[1].GetPosition)
var futuresProfit = futuresPos[0].Profit
var optionProfit = optionPos[0].Profit
LogProfit(futuresProfit + optionProfit)
$.PlotLine("期货", futuresProfit)
$.PlotLine("期权", optionProfit)
Sleep(500)
}
}
Das Backtesting ist in der Abbildung dargestellt:

Futures können den Kapitaleinsatz im Vergleich zu Spot reduzieren, das Risiko ist jedoch etwas höher als bei Spot.
Darüber hinaus gibt es zahlreiche weitere Kombinationen für den Optionshandel:
Interessierte können dies im Backtesting-System studieren.