Vorläufige Studie zum Backtest der Strategie für Optionen auf digitale Währungen
Vor kurzem hat FMZ Platform das Backtesting-System aktualisiert, um das Backtesting von digitalen Währungsoptionen zu unterstützen. Diesmal unterstützt es einige Optionsdaten der Börse Deribit. Also haben wir bessere Tools für Optionshandel Lernen und Strategieverifizierung.
Die im Backtest-System definierte Deribit-Option ist europäischer Art und hat einen Wert von 1 BTC. Der Optionsvertragskode lautet: BTC-7AUG20-12750-C.
Gegenstand | Datum der Ausübung | Ausübungspreis | (Call/Put) Option |
---|---|---|---|
BTC | 7AUG20 | 12750 | C |
Bitcoins | Ausübung am 7. August 2020 | Ausübungspreis 12750 | Aufrufoptionen |
BTC | 7AUG20 | 12750 | P |
Bitcoins | Ausübung am 7. August 2020 | Ausübungspreis 12750 | Option setzen |
Bei den Transaktionen wie dem Festlegen von Verträgen und dem Erhalt von Positionen handelt es sich um die gleichen wie bei den Futures auf digitale Währungen.
Satzvertrag: exchange.SetContractType ((
Der Preis eines Optionsvertrags ist die Prämie eines Optionsvertrags, und der Optionskäufer muss die Optionsprämie an den Optionsverkäufer zahlen. Der Käufer hat das Recht zu üben, und der Verkäufer hat die Verpflichtung zu üben. Bevor der Optionsvertrag ausgeübt wird, kann er gehandelt werden (wie Liquidation, Abwicklung von Verpflichtungen).
Verkaufe eine Call-Option und kaufe einen Spot.
/*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("Spots", spotProfit)
$.PlotLine("Options", optionProfit)
Sleep(500)
}
}
Optionen bieten einen gewissen Grad an Sicherungsschutz für die im Spot erworbenen Vermögenswerte. Im Allgemeinen verwendet, wenn man optimistisch über den Spot ist und bereit ist, den Spot zu halten. Das Risiko liegt im Fall der Spotpreise. Obwohl Optionen bis zu einem gewissen Grad einen bestimmten Spotverlust ausgleichen können, wird nach dem Verlust die Optionsprämie überschritten, ein Nettoverlust erzielt.
Darüber hinaus ist die Liquidität des Marktes für digitale Währungsoptionen durchschnittlich und manchmal wird keine Gegenpartei gefunden.
Ebenso 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("Futures", futuresProfit)
$.PlotLine("Options", optionProfit)
Sleep(500)
}
}
Futures können das besetzte Kapital verringern als Spot, aber das Risiko ist höher als das von Spot.
Darüber hinaus gibt es viele andere Optionshandelskombinationen:
bull call spread
Bear Put Spread
Wer interessiert ist, kann es im Backtest-System studieren.