Back to Nautilus Trader

Tokenized Asset

docs/concepts/instruments/tokenized_asset.md

1.228.06.0 KB
Original Source

Tokenized Asset

TokenizedAsset represents a spot-like token that tracks another asset on a crypto venue. Use it for tokenized equities, tokenized funds, or similar instruments where the trading venue exposes a token but the economic reference is an external asset.

Examples include tokenized stock or ETF symbols on crypto venues.

Fields

FieldRust typePython typeRequired/defaultNotes
instrument_idInstrumentIdInstrumentIdRequiredStored as id in Rust.
raw_symbolSymbolSymbolRequiredNative venue symbol.
asset_classAssetClassAssetClassRequiredEconomic asset classification.
base_currencyCurrencyCurrencyRequiredTokenized asset or base token.
quote_currencyCurrencyCurrencyRequiredCurrency used to price the token.
price_precisionu8intRequiredDecimal places allowed for prices.
size_precisionu8intRequiredDecimal places allowed for order sizes.
price_incrementPricePriceRequiredSmallest valid price step.
size_incrementQuantityQuantityRequiredSmallest valid size step.
ts_eventUnixNanosintRequiredEvent timestamp in nanoseconds.
ts_initUnixNanosintRequiredInitialization timestamp in nanoseconds.
isinOption<Ustr>str | NoneNoneInternational Securities ID when known.
multiplierQuantityQuantity1Contract multiplier.
lot_sizeOption<Quantity>Quantity | NoneNoneRounded 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.
infoOption<Params>dict | NoneNoneAdapter metadata.

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

Behavior

  • TokenizedAsset has instrument class Spot.
  • It is never inverse, and its cost currency is the quote currency.
  • It can carry an isin when the token references a listed security.
  • It has no activation timestamp, expiry, strike, or option kind.

Example

rust
use nautilus_core::UnixNanos;
use nautilus_model::{
    enums::AssetClass,
    identifiers::{InstrumentId, Symbol},
    instruments::TokenizedAsset,
    types::{Currency, Price, Quantity},
};
use rust_decimal_macros::dec;

let aaplx = TokenizedAsset::new(
    InstrumentId::from("AAPLx/USD.KRAKEN"),
    Symbol::from("AAPLxUSD"),
    AssetClass::Equity,
    Currency::get_or_create_crypto("AAPLx"),
    Currency::from("USD"),
    None,
    2,
    4,
    Price::from("0.01"),
    Quantity::from("0.0001"),
    None,
    None,
    None,
    Some(Quantity::from("0.0001")),
    None,
    None,
    None,
    None,
    None,
    None,
    Some(dec!(-0.0002)),
    Some(dec!(0.001)),
    None,
    UnixNanos::default(),
    UnixNanos::default(),
);
python
from decimal import Decimal

from nautilus_trader.model.currencies import USD
from nautilus_trader.model.enums import AssetClass
from nautilus_trader.model.identifiers import InstrumentId
from nautilus_trader.model.identifiers import Symbol
from nautilus_trader.model.instruments import TokenizedAsset
from nautilus_trader.model.objects import Currency
from nautilus_trader.model.objects import Price
from nautilus_trader.model.objects import Quantity

aaplx = TokenizedAsset(
    instrument_id=InstrumentId.from_str("AAPLx/USD.KRAKEN"),
    raw_symbol=Symbol("AAPLxUSD"),
    asset_class=AssetClass.EQUITY,
    base_currency=Currency.from_str("AAPLx"),
    quote_currency=USD,
    price_precision=2,
    size_precision=4,
    price_increment=Price.from_str("0.01"),
    size_increment=Quantity.from_str("0.0001"),
    min_quantity=Quantity.from_str("0.0001"),
    maker_fee=Decimal("-0.0002"),
    taker_fee=Decimal("0.001"),
    ts_event=0,
    ts_init=0,
)

Adapters

Representative adapters that create or consume TokenizedAsset instruments include:

  • Kraken for tokenized assets where the venue exposes them.