nautilus_model/python/
mod.rs1#![allow(clippy::missing_errors_doc)] use pyo3::prelude::*;
21
22pub mod account;
23pub mod common;
24pub mod data;
25pub mod enums;
26pub mod events;
27pub mod identifiers;
28pub mod instruments;
29pub mod macros;
30pub mod orderbook;
31pub mod orders;
32pub mod position;
33pub mod types;
34
35#[pymodule]
41pub fn model(_: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
42 m.add("HIGH_PRECISION", crate::types::fixed::HIGH_PRECISION_MODE)?;
44 m.add("FIXED_SCALAR", crate::types::fixed::FIXED_SCALAR)?;
45 m.add("FIXED_PRECISION", crate::types::fixed::FIXED_PRECISION)?;
46 m.add("PRECISION_BYTES", crate::types::fixed::PRECISION_BYTES)?;
47 m.add_class::<crate::types::currency::Currency>()?;
48 m.add_class::<crate::types::money::Money>()?;
49 m.add_class::<crate::types::price::Price>()?;
50 m.add_class::<crate::types::quantity::Quantity>()?;
51 m.add_class::<crate::types::balance::AccountBalance>()?;
52 m.add_class::<crate::types::balance::MarginBalance>()?;
53 m.add_function(wrap_pyfunction!(data::drop_cvec_pycapsule, m)?)?;
55 m.add_class::<crate::data::DataType>()?;
56 m.add_class::<crate::data::bar::BarSpecification>()?;
57 m.add_class::<crate::data::bar::BarType>()?;
58 m.add_class::<crate::data::bar::Bar>()?;
59 m.add_class::<crate::data::bet::Bet>()?;
60 m.add_class::<crate::data::bet::BetPosition>()?;
61 m.add_class::<crate::data::order::BookOrder>()?;
62 m.add_class::<crate::data::prices::MarkPriceUpdate>()?;
63 m.add_class::<crate::data::prices::IndexPriceUpdate>()?;
64 m.add_class::<crate::data::delta::OrderBookDelta>()?;
65 m.add_class::<crate::data::deltas::OrderBookDeltas>()?;
66 m.add_class::<crate::data::depth::OrderBookDepth10>()?;
67 m.add_class::<crate::data::greeks::BlackScholesGreeksResult>()?;
68 m.add_class::<crate::data::greeks::ImplyVolAndGreeksResult>()?;
69 m.add_class::<crate::data::quote::QuoteTick>()?;
70 m.add_class::<crate::data::status::InstrumentStatus>()?;
71 m.add_class::<crate::data::trade::TradeTick>()?;
72 m.add_class::<crate::data::close::InstrumentClose>()?;
73 m.add_function(wrap_pyfunction!(
74 crate::python::data::greeks::py_black_scholes_greeks,
75 m
76 )?)?;
77 m.add_function(wrap_pyfunction!(
78 crate::python::data::greeks::py_imply_vol,
79 m
80 )?)?;
81 m.add_function(wrap_pyfunction!(
82 crate::python::data::greeks::py_imply_vol_and_greeks,
83 m
84 )?)?;
85 m.add_class::<crate::enums::AccountType>()?;
87 m.add_class::<crate::enums::AggregationSource>()?;
88 m.add_class::<crate::enums::AggressorSide>()?;
89 m.add_class::<crate::enums::AssetClass>()?;
90 m.add_class::<crate::enums::InstrumentClass>()?;
91 m.add_class::<crate::enums::BarAggregation>()?;
92 m.add_class::<crate::enums::BetSide>()?;
93 m.add_class::<crate::enums::BookAction>()?;
94 m.add_class::<crate::enums::BookType>()?;
95 m.add_class::<crate::enums::ContingencyType>()?;
96 m.add_class::<crate::enums::CurrencyType>()?;
97 m.add_class::<crate::enums::InstrumentCloseType>()?;
98 m.add_class::<crate::enums::LiquiditySide>()?;
99 m.add_class::<crate::enums::MarketStatus>()?;
100 m.add_class::<crate::enums::MarketStatusAction>()?;
101 m.add_class::<crate::enums::OmsType>()?;
102 m.add_class::<crate::enums::OptionKind>()?;
103 m.add_class::<crate::enums::OrderSide>()?;
104 m.add_class::<crate::enums::OrderStatus>()?;
105 m.add_class::<crate::enums::OrderType>()?;
106 m.add_class::<crate::enums::PositionSide>()?;
107 m.add_class::<crate::enums::PriceType>()?;
108 m.add_class::<crate::enums::TimeInForce>()?;
109 m.add_class::<crate::enums::TradingState>()?;
110 m.add_class::<crate::enums::TrailingOffsetType>()?;
111 m.add_class::<crate::enums::TriggerType>()?;
112 m.add_class::<crate::identifiers::AccountId>()?;
114 m.add_class::<crate::identifiers::ClientId>()?;
115 m.add_class::<crate::identifiers::ClientOrderId>()?;
116 m.add_class::<crate::identifiers::ComponentId>()?;
117 m.add_class::<crate::identifiers::ExecAlgorithmId>()?;
118 m.add_class::<crate::identifiers::InstrumentId>()?;
119 m.add_class::<crate::identifiers::OrderListId>()?;
120 m.add_class::<crate::identifiers::PositionId>()?;
121 m.add_class::<crate::identifiers::StrategyId>()?;
122 m.add_class::<crate::identifiers::Symbol>()?;
123 m.add_class::<crate::identifiers::TradeId>()?;
124 m.add_class::<crate::identifiers::TraderId>()?;
125 m.add_class::<crate::identifiers::Venue>()?;
126 m.add_class::<crate::identifiers::VenueOrderId>()?;
127 m.add_class::<crate::orders::LimitOrder>()?;
129 m.add_class::<crate::orders::LimitIfTouchedOrder>()?;
130 m.add_class::<crate::orders::MarketOrder>()?;
131 m.add_class::<crate::orders::MarketToLimitOrder>()?;
132 m.add_class::<crate::orders::StopLimitOrder>()?;
133 m.add_class::<crate::orders::StopMarketOrder>()?;
134 m.add_class::<crate::orders::TrailingStopLimitOrder>()?;
135 m.add_class::<crate::orders::TrailingStopMarketOrder>()?;
136 m.add_class::<crate::position::Position>()?;
138 m.add_class::<crate::instruments::BettingInstrument>()?;
140 m.add_class::<crate::instruments::BinaryOption>()?;
141 m.add_class::<crate::instruments::CryptoFuture>()?;
142 m.add_class::<crate::instruments::CryptoOption>()?;
143 m.add_class::<crate::instruments::CryptoPerpetual>()?;
144 m.add_class::<crate::instruments::CurrencyPair>()?;
145 m.add_class::<crate::instruments::Equity>()?;
146 m.add_class::<crate::instruments::FuturesContract>()?;
147 m.add_class::<crate::instruments::FuturesSpread>()?;
148 m.add_class::<crate::instruments::OptionContract>()?;
149 m.add_class::<crate::instruments::OptionSpread>()?;
150 m.add_class::<crate::instruments::SyntheticInstrument>()?;
151 m.add_class::<crate::orderbook::book::OrderBook>()?;
153 m.add_class::<crate::orderbook::level::BookLevel>()?;
154 m.add_function(wrap_pyfunction!(
155 crate::python::orderbook::book::py_update_book_with_quote_tick,
156 m
157 )?)?;
158 m.add_function(wrap_pyfunction!(
159 crate::python::orderbook::book::py_update_book_with_trade_tick,
160 m
161 )?)?;
162 m.add_class::<crate::orderbook::own::OwnOrderBook>()?;
163 m.add_class::<crate::orderbook::own::OwnBookOrder>()?;
164 m.add_class::<crate::events::AccountState>()?;
166 m.add_class::<crate::events::OrderDenied>()?;
167 m.add_class::<crate::events::OrderFilled>()?;
168 m.add_class::<crate::events::OrderInitialized>()?;
169 m.add_class::<crate::events::OrderRejected>()?;
170 m.add_class::<crate::events::OrderTriggered>()?;
171 m.add_class::<crate::events::OrderSubmitted>()?;
172 m.add_class::<crate::events::OrderEmulated>()?;
173 m.add_class::<crate::events::OrderReleased>()?;
174 m.add_class::<crate::events::OrderUpdated>()?;
175 m.add_class::<crate::events::OrderPendingUpdate>()?;
176 m.add_class::<crate::events::OrderPendingCancel>()?;
177 m.add_class::<crate::events::OrderModifyRejected>()?;
178 m.add_class::<crate::events::OrderAccepted>()?;
179 m.add_class::<crate::events::OrderCancelRejected>()?;
180 m.add_class::<crate::events::OrderCanceled>()?;
181 m.add_class::<crate::events::OrderExpired>()?;
182 m.add_class::<crate::events::OrderSnapshot>()?;
183 m.add_class::<crate::events::PositionSnapshot>()?;
184 m.add_class::<crate::accounts::CashAccount>()?;
186 m.add_class::<crate::accounts::MarginAccount>()?;
187 m.add_function(wrap_pyfunction!(
188 crate::python::account::transformer::cash_account_from_account_events,
189 m
190 )?)?;
191 m.add_function(wrap_pyfunction!(
192 crate::python::account::transformer::margin_account_from_account_events,
193 m
194 )?)?;
195 m.add_function(wrap_pyfunction!(
196 crate::python::data::bet::py_calc_bets_pnl,
197 m
198 )?)?;
199 m.add_function(wrap_pyfunction!(
200 crate::python::data::bet::py_probability_to_bet,
201 m
202 )?)?;
203 m.add_function(wrap_pyfunction!(
204 crate::python::data::bet::py_inverse_probability_to_bet,
205 m
206 )?)?;
207 Ok(())
208}