Persistence

class BarDataWrangler

Bases: object

bar_type
price_precision
process_record_batch_bytes(data)
size_precision
class DataBackendSession

Bases: object

Provides a DataFusion session and registers DataFusion queries.

The session is used to register data sources and make queries on them. A query returns a Chunk of Arrow records. It is decoded and converted into a Vec of data by types that implement [DecodeDataFromRecordBatch].

add_custom_file(type_name, table_name, file_path, sql_query=None)

Registers a Parquet file for a custom data type identified by type_name.

The custom data type must have been registered via ensure_custom_data_registered::<T>() before calling this method.

add_file(data_type, table_name, file_path, sql_query=None)

Registers a Parquet file and adds a batch stream for decoding.

The caller must specify T to indicate the kind of data expected. table_name is the logical name for queries; file_path is the Parquet path; sql_query defaults to SELECT * FROM {table_name} ORDER BY ts_init if None.

When custom_type_name is Some, it is merged into each batch’s schema metadata before decoding (as type_name). Use this for custom data when Parquet/DataFusion does not preserve schema metadata so the decoder can look up the type in the registry.

The file data must be ordered by the ts_init in ascending order for this to work correctly.

# Errors

Returns an error if parquet registration, SQL planning, stream execution, or data decoding setup fails.

register_object_store_from_uri(uri, storage_options=None)

Register an object store with the session context from a URI with optional storage options.

# Errors

Returns an error if the object store URI cannot be normalized or the backend cannot be created.

to_query_result()
class DataQueryResult

Bases: object

to_list()

Collects the remaining query records as native Python objects.

# Errors

Returns an error if a query stream fails or a record batch cannot be decoded.

class MacroYieldCurveData

Bases: object

YieldCurveData-equivalent custom data type using the macro with Vec<f64> fields.

Tests Vec<f64> / ListFloat64 support. Exposed to Python for roundtrip tests.

curve_name
classmethod decode_record_batch_py(metadata, py_batch)

Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).

encode_record_batch_py(items)

Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.

classmethod from_json(data)

Class method for JSON deserialization. Used by register_custom_data_class.

interest_rates
tenors
to_json()

Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.

ts_event
ts_init
class NautilusDataType

Bases: object

Bar = NautilusDataType.Bar
InstrumentStatus = NautilusDataType.InstrumentStatus
MarkPriceUpdate = NautilusDataType.MarkPriceUpdate
OptionGreeks = NautilusDataType.OptionGreeks
OrderBookDelta = NautilusDataType.OrderBookDelta
OrderBookDepth10 = NautilusDataType.OrderBookDepth10
QuoteTick = NautilusDataType.QuoteTick
TradeTick = NautilusDataType.TradeTick
class OrderBookDeltaDataWrangler

Bases: object

instrument_id
price_precision
process_record_batch_bytes(data)
size_precision
class OrderBookDepth10DataWrangler

Bases: object

instrument_id
price_precision
process_record_batch_bytes(data)
size_precision
class ParquetDataCatalog

Bases: object

A catalog for writing data to Parquet files.

consolidate_catalog(start=None, end=None, ensure_contiguous_files=None, deduplicate=None)

Consolidate all data files in the catalog within the specified time range.

# Parameters

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • ensure_contiguous_files: Optional flag to ensure files are contiguous

  • deduplicate: Optional flag to deduplicate rows when combining files

consolidate_catalog_by_period(period_nanos=None, start=None, end=None, ensure_contiguous_files=None)

Consolidate all data files in the catalog by splitting them into fixed time periods.

This method identifies all leaf directories in the catalog that contain parquet files and consolidates them by period. A leaf directory is one that contains files but no subdirectories. This is a convenience method that effectively calls consolidate_data_by_period for all data types and instrument IDs in the catalog.

# Parameters

  • period_nanos: Optional period duration for consolidation in nanoseconds. Default is 1 day (86400000000000). Examples: 3600000000000 (1 hour), 604800000000000 (7 days), 1800000000000 (30 minutes)

  • start: Optional start timestamp for the consolidation range (nanoseconds since Unix epoch)

  • end: Optional end timestamp for the consolidation range (nanoseconds since Unix epoch)

  • ensure_contiguous_files: Optional flag to control file naming strategy

consolidate_data(type_name, instrument_id=None, start=None, end=None, ensure_contiguous_files=None, deduplicate=None)

Consolidate data files for a specific data type within the specified time range.

# Parameters

  • type_name: The data type name to consolidate

  • instrument_id: Optional instrument ID filter

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • ensure_contiguous_files: Optional flag to ensure files are contiguous

  • deduplicate: Optional flag to deduplicate rows when combining files

consolidate_data_by_period(type_name, identifier=None, period_nanos=None, start=None, end=None, ensure_contiguous_files=None)

Consolidate data files by splitting them into fixed time periods.

This method queries data by period and writes consolidated files immediately, using efficient period-based consolidation logic. When start/end boundaries intersect existing files, the function automatically splits those files to preserve all data.

# Parameters

  • type_name: The data type directory name (e.g., “quotes”, “trades”, “bars”)

  • identifier: Optional instrument ID to consolidate. If None, consolidates all instruments

  • period_nanos: Optional period duration for consolidation in nanoseconds. Default is 1 day (86400000000000). Examples: 3600000000000 (1 hour), 604800000000000 (7 days), 1800000000000 (30 minutes)

  • start: Optional start timestamp for consolidation range (nanoseconds since Unix epoch)

  • end: Optional end timestamp for consolidation range (nanoseconds since Unix epoch)

  • ensure_contiguous_files: Optional flag to control file naming strategy

convert_stream_to_data(instance_id, data_cls, subdirectory=None, identifiers=None, use_ts_event_for_ts_init=False)

Convert stream data from feather files to parquet files.

This method reads data from feather files generated during a backtest or live run and writes it to the catalog in parquet format. It’s useful for converting temporary stream data into a more permanent and queryable format.

# Parameters

  • instance_id: The ID of the backtest or live run instance

  • data_cls: The data class name (e.g., “quotes”, “trades”, “bars”)

  • subdirectory: Optional subdirectory containing the feather files. Either “backtest” or “live” (default: “backtest”)

  • identifiers: Optional list of identifiers to filter by (instrument IDs or bar types)

  • use_ts_event_for_ts_init: If true, replaces the ts_init column with ts_event column values before deserializing

# Returns

Returns nothing on success.

# Examples

```python # Convert backtest stream data to parquet catalog.convert_stream_to_data(

“instance-123”, “quotes”, subdirectory=”backtest”

)

# Convert live run data with identifier filtering catalog.convert_stream_to_data(

“instance-456”, “trades”, subdirectory=”live”, identifiers=[“EUR/USD.SIM”]

)

delete_catalog_range(start=None, end=None)

Delete data within a specified time range across the entire catalog.

This method identifies all leaf directories in the catalog that contain parquet files and deletes data within the specified time range from each directory. A leaf directory is one that contains files but no subdirectories. This is a convenience method that effectively calls delete_data_range for all data types and instrument IDs in the catalog.

# Parameters

  • start: Optional start timestamp for the deletion range (nanoseconds since Unix epoch)

  • end: Optional end timestamp for the deletion range (nanoseconds since Unix epoch)

# Notes

  • This operation permanently removes data and cannot be undone

  • The deletion process handles file intersections intelligently by splitting files when they partially overlap with the deletion range

  • Files completely within the deletion range are removed entirely

  • Files partially overlapping the deletion range are split to preserve data outside the range

  • This method is useful for bulk data cleanup operations across the entire catalog

  • Empty directories are not automatically removed after deletion

delete_data_range(type_name, instrument_id=None, start=None, end=None)

Delete data within a specified time range for a specific data type and instrument.

This method identifies all parquet files that intersect with the specified time range and handles them appropriately: - Files completely within the range are deleted - Files partially overlapping the range are split to preserve data outside the range - The original intersecting files are removed after processing

# Parameters

  • type_name: The data type directory name (e.g., “quotes”, “trades”, “bars”)

  • instrument_id: Optional instrument ID to delete data for. If None, deletes data across all instruments

  • start: Optional start timestamp for the deletion range (nanoseconds since Unix epoch)

  • end: Optional end timestamp for the deletion range (nanoseconds since Unix epoch)

# Notes

  • This operation permanently removes data and cannot be undone

  • Files that partially overlap the deletion range are split to preserve data outside the range

  • The method ensures data integrity by using atomic operations where possible

  • Empty directories are not automatically removed after deletion

extend_file_name(data_cls, instrument_id=None, *, start, end)

Extend file names in the catalog with additional timestamp information.

# Parameters

  • data_cls: The data class name

  • instrument_id: Optional instrument ID filter

  • start: Start timestamp (nanoseconds since Unix epoch)

  • end: End timestamp (nanoseconds since Unix epoch)

get_intervals(data_cls, instrument_id=None)

Get time intervals covered by data for a specific data class and instrument.

# Parameters

  • data_cls: The data class name

  • instrument_id: Optional instrument ID filter

# Returns

Returns a list of (start, end) timestamp tuples representing covered intervals.

get_missing_intervals_for_request(start, end, data_cls, instrument_id=None)

Get missing time intervals for a data request.

# Parameters

  • start: Start timestamp (nanoseconds since Unix epoch)

  • end: End timestamp (nanoseconds since Unix epoch)

  • data_cls: The data class name

  • instrument_id: Optional instrument ID filter

# Returns

Returns a list of (start, end) timestamp tuples representing missing intervals.

instruments(instrument_ids=None, start=None, end=None)

Query instruments from the catalog.

# Parameters

  • instrument_ids: Optional list of instrument IDs to filter by. If None, returns all instruments.

  • start: Optional inclusive lower bound for ts_init filtering.

  • end: Optional inclusive upper bound for ts_init filtering.

# Returns

Returns a list of instrument objects (e.g. CurrencyPair, Equity).

list_backtest_runs()

List all backtest run IDs available in the catalog.

# Returns

Returns a list of backtest run IDs (as directory stems) in the catalog.

list_backtests()

List all backtest run instances available in the catalog.

list_data_types()

List all data types available in the catalog.

# Returns

Returns a list of data type names (as directory stems) in the catalog.

list_instruments(data_type)

List all instrument IDs available in the catalog for a given data type.

list_live_runs()

List all live run IDs available in the catalog.

# Returns

Returns a list of live run IDs (as directory stems) in the catalog.

list_parquet_files(data_type, instrument_id)

List all Parquet files in the catalog for a given data type and instrument.

query(data_type, identifiers=None, start=None, end=None, where_clause=None, files=None, optimize_file_loading=True)

Query Parquet files for data matching the given criteria.

query_bars(identifiers=None, start=None, end=None, where_clause=None)

Query bar data from Parquet files.

# Parameters

  • identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported (e.g., “EUR/USD.SIM” will match all bar types for that instrument).

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • where_clause: Optional SQL WHERE clause for additional filtering

# Returns

Returns a vector of Bar objects matching the query criteria.

query_custom_data(type_name, identifiers=None, start=None, end=None, where_clause=None)

Query custom data from Parquet files.

query_files(data_cls, identifiers=None, start=None, end=None)

Query files in the catalog matching the specified criteria.

# Parameters

  • data_cls: The data class name to query

  • identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

# Returns

Returns a list of file paths matching the criteria.

query_first_timestamp(data_cls, instrument_id=None)

Query the first timestamp for a specific data class and instrument.

# Parameters

  • data_cls: The data class name

  • instrument_id: Optional instrument ID filter

# Returns

Returns the first timestamp as nanoseconds since Unix epoch, or None if no data exists.

query_index_price_updates(instrument_ids=None, start=None, end=None, where_clause=None)

Query index price update data from Parquet files.

# Parameters

  • instrument_ids: Optional list of instrument IDs to filter by

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • where_clause: Optional SQL WHERE clause for additional filtering

# Returns

Returns a vector of IndexPriceUpdate objects matching the query criteria.

query_last_timestamp(data_cls, instrument_id=None)

Query the last timestamp for a specific data class and instrument.

# Parameters

  • data_cls: The data class name

  • instrument_id: Optional instrument ID filter

# Returns

Returns the last timestamp as nanoseconds since Unix epoch, or None if no data exists.

query_mark_price_updates(instrument_ids=None, start=None, end=None, where_clause=None)

Query mark price update data from Parquet files.

# Parameters

  • instrument_ids: Optional list of instrument IDs to filter by

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • where_clause: Optional SQL WHERE clause for additional filtering

# Returns

Returns a vector of MarkPriceUpdate objects matching the query criteria.

query_option_greeks(instrument_ids=None, start=None, end=None, where_clause=None)

Query option greeks data from Parquet files.

query_order_book_deltas(identifiers=None, start=None, end=None, where_clause=None)

Query order book delta data from Parquet files.

# Parameters

  • identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • where_clause: Optional SQL WHERE clause for additional filtering

# Returns

Returns a vector of OrderBookDelta objects matching the query criteria.

query_order_book_depths(instrument_ids=None, start=None, end=None, where_clause=None)

Query order book depth data from Parquet files.

# Parameters

  • instrument_ids: Optional list of instrument IDs to filter by

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • where_clause: Optional SQL WHERE clause for additional filtering

# Returns

Returns a vector of OrderBookDepth10 objects matching the query criteria.

query_quote_ticks(identifiers=None, start=None, end=None, where_clause=None)

Query quote tick data from Parquet files.

# Parameters

  • identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • where_clause: Optional SQL WHERE clause for additional filtering

# Returns

Returns a vector of QuoteTick objects matching the query criteria.

query_trade_ticks(identifiers=None, start=None, end=None, where_clause=None)

Query trade tick data from Parquet files.

# Parameters

  • identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.

  • start: Optional start timestamp (nanoseconds since Unix epoch)

  • end: Optional end timestamp (nanoseconds since Unix epoch)

  • where_clause: Optional SQL WHERE clause for additional filtering

# Returns

Returns a vector of TradeTick objects matching the query criteria.

read_backtest(instance_id)

Read data from a backtest run instance.

# Parameters

  • instance_id: The ID of the backtest run instance

# Returns

Returns a list of data objects from the backtest run, sorted by timestamp.

read_live_run(instance_id)

Read data from a live run instance.

# Parameters

  • instance_id: The ID of the live run instance

# Returns

Returns a list of data objects from the live run, sorted by timestamp.

reset_all_file_names()

Reset all catalog file names to their canonical form.

reset_data_file_names(data_cls, instrument_id=None)

Reset data file names for a specific data class to their canonical form.

# Parameters

  • data_cls: The data class name

  • instrument_id: Optional instrument ID filter

write_bars(data, start=None, end=None, skip_disjoint_check=False)

Write bar data to Parquet files.

# Parameters

  • data: Vector of bars to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

write_custom_data(data, start=None, end=None, skip_disjoint_check=False)

Write custom data to Parquet files.

Requires CustomData wrappers. Callers must wrap raw custom objects in CustomData(data_type=DataType(cls, metadata=…), data=…) before writing.

write_index_price_updates(data, start=None, end=None, skip_disjoint_check=False)

Write index price update data to Parquet files.

# Parameters

  • data: Vector of index price updates to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

write_instruments(data)

Write instruments to Parquet files in the catalog.

Instruments are stored under data/instruments/{instrument_id}/ using timestamp-ranged parquet file names, allowing multiple historical versions of the same instrument to be written across separate calls.

# Parameters

  • data: A Python list of instrument objects (e.g. CurrencyPair, Equity).

# Returns

Returns a list of written file paths.

write_mark_price_updates(data, start=None, end=None, skip_disjoint_check=False)

Write mark price update data to Parquet files.

# Parameters

  • data: Vector of mark price updates to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

write_option_greeks(data, start=None, end=None, skip_disjoint_check=False)

Write option greeks data to Parquet files.

# Parameters

  • data: Vector of option greeks to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

write_order_book_deltas(data, start=None, end=None, skip_disjoint_check=False)

Write order book delta data to Parquet files.

# Parameters

  • data: Vector of order book deltas to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

write_order_book_depths(data, start=None, end=None, skip_disjoint_check=False)

Write order book depth data to Parquet files.

# Parameters

  • data: Vector of order book depths to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

write_quote_ticks(data, start=None, end=None, skip_disjoint_check=False)

Write quote tick data to Parquet files.

# Parameters

  • data: Vector of quote ticks to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

write_trade_ticks(data, start=None, end=None, skip_disjoint_check=False)

Write trade tick data to Parquet files.

# Parameters

  • data: Vector of trade ticks to write

  • start: Optional start timestamp override (nanoseconds since Unix epoch)

  • end: Optional end timestamp override (nanoseconds since Unix epoch)

# Returns

Returns the path of the created file as a string.

class QuoteTickDataWrangler

Bases: object

instrument_id
price_precision
process_record_batch_bytes(data)
size_precision
class RustTestCustomData

Bases: object

A simple Rust custom data type for roundtrip testing.

Used in persistence integration tests (test_catalog.rs) and Python roundtrip tests. Tests call ensure_custom_data_registered::<RustTestCustomData>() before using the catalog.

classmethod decode_record_batch_py(metadata, py_batch)

Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).

encode_record_batch_py(items)

Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.

flag
classmethod from_json(data)

Class method for JSON deserialization. Used by register_custom_data_class.

instrument_id
to_json()

Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.

ts_event
ts_init
value
class RustTestParamsCustomData

Bases: object

Rust custom data type that exercises Params field support in the macro.

classmethod decode_record_batch_py(metadata, py_batch)

Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).

encode_record_batch_py(items)

Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.

classmethod from_json(data)

Class method for JSON deserialization. Used by register_custom_data_class.

name
params
to_json()

Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.

ts_event
ts_init
class RustTestPriceMapCustomData

Bases: object

Rust custom data type that exercises typed map field support in the macro.

classmethod decode_record_batch_py(metadata, py_batch)

Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).

encode_record_batch_py(items)

Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.

classmethod from_json(data)

Class method for JSON deserialization. Used by register_custom_data_class.

name
prices
to_json()

Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.

ts_event
ts_init
class RustTestTypedMapCustomData

Bases: object

Rust custom data type that exercises typed JSON map values across PyO3-supported types.

account_ids
bar_types
booleans
currencies
classmethod decode_record_batch_py(metadata, py_batch)

Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).

encode_record_batch_py(items)

Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.

floats_32
floats_64
classmethod from_json(data)

Class method for JSON deserialization. Used by register_custom_data_class.

hash_prices_by_instrument
instrument_ids
integers_i32
integers_i64
integers_u32
integers_u64
monies
monies_by_currency
name
prices
prices_by_bar_type
prices_by_instrument
quantities
quantities_by_account
strings
to_json()

Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.

ts_event
ts_init
class StreamingFeatherWriter

Bases: object

Python binding for the Rust FeatherWriter.

This provides a streaming writer of Nautilus objects into feather files with rotation capabilities, matching the interface of Python’s StreamingFeatherWriter.

close()

Closes all writers by flushing and removing them.

After calling this, no further writes should be performed.

flush()

Flushes all active buffers by writing any remaining buffered bytes to the object store.

This is called automatically based on flush_interval_ms if configured, but can also be called manually by the client.

get_current_file_info()

Returns information about the current files being written.

Returns a dictionary mapping writer keys to (size, path) tuples.

get_next_rotation_time(type_str, instrument_id=None)

Returns the next rotation time for a writer, or None if not set.

is_closed

Returns whether the writer has been closed (no active writers).

subscribe()

Subscribes to all messages on the message bus (pattern “*”).

This matches the behavior of Python’s StreamingFeatherWriter when subscribed via trader.subscribe(“*”, writer.write).

unsubscribe()

Unsubscribes from the message bus.

write(data)

Writes a data object to the stream.

# Parameters

  • data: The data object to write (must be a Nautilus data type from pyo3).

class TradeTickDataWrangler

Bases: object

instrument_id
price_precision
process_record_batch_bytes(data)
size_precision