NautilusTrader
ConceptsInstruments

Crypto Option

CryptoOption represents a put or call option on a crypto underlying. It defines the option kind, strike price, activation time, expiration time, quote currency, settlement currency, and contract sizing.

Examples include BTC and ETH options on crypto derivatives venues.

Fields

FieldRust typePython typeRequired/defaultNotes
instrument_idInstrumentIdInstrumentIdRequiredStored as id in Rust.
raw_symbolSymbolSymbolRequiredNative venue symbol.
underlyingCurrencyCurrencyRequiredCrypto asset the option tracks.
quote_currencyCurrencyCurrencyRequiredCurrency used to quote the premium.
settlement_currencyCurrencyCurrencyRequiredCurrency used to settle PnL and fees.
is_inverseboolboolRequiredTrue when sizing/costing is inverse.
option_kindOptionKindOptionKindRequiredPut or call.
strike_pricePricePriceRequiredOption strike price.
activation_nsUnixNanosintRequiredContract activation timestamp.
expiration_nsUnixNanosintRequiredContract expiration timestamp.
price_precisionu8intRequiredDecimal places allowed for prices.
size_precisionu8intRequiredDecimal places allowed for order sizes.
price_incrementPricePriceRequiredSmallest valid price step.
size_incrementQuantityQuantityRequiredSmallest valid size step.
multiplierQuantityQuantity1Contract multiplier.
lot_sizeQuantityQuantity1Rounded lot or board size.
max_quantityOption<Quantity>Quantity | NoneNoneMaximum order quantity.
min_quantityOption<Quantity>Quantity | NoneNoneMinimum order quantity.
max_notionalOption<Money>Money | NoneNoneMaximum order notional value.
min_notionalOption<Money>Money | NoneNoneMinimum order notional value.
max_priceOption<Price>Price | NoneNoneMaximum valid quote or order price.
min_priceOption<Price>Price | NoneNoneMinimum valid quote or order price.
margin_initOption<Decimal>Decimal | None0Initial margin rate.
margin_maintOption<Decimal>Decimal | None0Maintenance margin rate.
maker_feeOption<Decimal>Decimal | None0Maker fee rate. Negative values rebate.
taker_feeOption<Decimal>Decimal | None0Taker fee rate. Negative values rebate.
tick_scheme_nameN/Astr | NoneNoneRegistered variable tick scheme name.
infoOption<Params>dict | NoneNoneAdapter metadata.
ts_eventUnixNanosintRequiredEvent timestamp in nanoseconds.
ts_initUnixNanosintRequiredInitialization timestamp in nanoseconds.

Note: Python constructors use instrument_id; Rust stores the same value as id.

Behavior

  • CryptoOption has asset class Cryptocurrency and instrument class Option.
  • The option kind and strike price define the payoff shape.
  • The contract can be linear, inverse, or quanto, depending on the currency set.
  • Use OptionContract for non-crypto listed options.

Example

use chrono::{TimeZone, Utc};
use nautilus_core::UnixNanos;
use nautilus_model::{
    enums::OptionKind,
    identifiers::{InstrumentId, Symbol},
    instruments::CryptoOption,
    types::{Currency, Money, Price, Quantity},
};
use rust_decimal_macros::dec;

let activation = Utc.with_ymd_and_hms(2022, 12, 22, 0, 0, 0).unwrap();
let expiration = Utc.with_ymd_and_hms(2023, 1, 13, 8, 0, 0).unwrap();

let btc_option = CryptoOption::new(
    InstrumentId::from("BTC-13JAN23-16000-P.DERIBIT"),
    Symbol::from("BTC-13JAN23-16000-P"),
    Currency::from("BTC"),
    Currency::from("USD"),
    Currency::from("BTC"),
    false,
    OptionKind::Put,
    Price::from("16000.00"),
    UnixNanos::from(activation.timestamp_nanos_opt().unwrap() as u64),
    UnixNanos::from(expiration.timestamp_nanos_opt().unwrap() as u64),
    2,
    1,
    Price::from("0.01"),
    Quantity::from("0.1"),
    Some(Quantity::from("1")),
    Some(Quantity::from("1")),
    Some(Quantity::from("9000")),
    Some(Quantity::from("0.1")),
    None,
    Some(Money::from("10.00 USD")),
    None,
    None,
    Some(dec!(0)),
    Some(dec!(0)),
    Some(dec!(0.0003)),
    Some(dec!(0.0003)),
    None,
    UnixNanos::default(),
    UnixNanos::default(),
);

Adapters

Representative adapters that create or consume CryptoOption instruments include:

  • Bybit for crypto options.
  • Deribit for crypto options.
  • OKX for crypto options.
  • Tardis for crypto option metadata.

On this page