#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketMaking {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(enumeration="MarketMakingState", tag="2")]
pub state: i32,
#[prost(message, optional, tag="3")]
pub config: ::core::option::Option<MarketMakingConfiguration>,
#[prost(string, tag="4")]
pub fund_code: ::prost::alloc::string::String,
#[prost(int64, tag="5")]
pub tick_size: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketMakingConfiguration {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(message, optional, tag="2")]
pub pricing: ::core::option::Option<MarketMakingPricing>,
#[prost(message, optional, tag="3")]
pub trade_analyzer: ::core::option::Option<MarketMakingTradeAnalyzer>,
#[prost(message, optional, tag="4")]
pub market_bias: ::core::option::Option<MarketMakingMarketBias>,
#[prost(message, optional, tag="5")]
pub momentum: ::core::option::Option<MarketMakingMomentum>,
#[prost(message, optional, tag="6")]
pub exposure_balancer: ::core::option::Option<MarketMakingExposureBalancer>,
#[prost(int64, tag="9")]
pub bid_quantity: i64,
#[prost(int64, tag="10")]
pub ask_quantity: i64,
#[prost(int64, tag="13")]
pub bid_offset: i64,
#[prost(int64, tag="14")]
pub ask_offset: i64,
#[prost(int64, optional, tag="15")]
pub basis: ::core::option::Option<i64>,
#[prost(int32, tag="16")]
pub base_half_ticks: i32,
#[prost(message, optional, tag="17")]
pub quantity_limit: ::core::option::Option<MarketMakingQuantityLimit>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketMakingPricing {
#[prost(oneof="market_making_pricing::Pricing", tags="1, 2, 3, 4")]
pub pricing: ::core::option::Option<market_making_pricing::Pricing>,
}
pub mod market_making_pricing {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Pricing {
#[prost(message, tag="1")]
PlainFollow(super::PlainFollow),
#[prost(message, tag="2")]
MeanBidAsk(super::MeanBidAsk),
#[prost(message, tag="3")]
Nav(super::Nav),
#[prost(message, tag="4")]
KrxNav(super::KrxNav),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PlainFollow {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MeanBidAsk {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Nav {
#[prost(message, optional, tag="1")]
pub etf_pricing: ::core::option::Option<super::common::EtfPricing>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KrxNav {
#[prost(int64, tag="1")]
pub prev_index: i64,
#[prost(int64, tag="2")]
pub prev_future: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketMakingTradeAnalyzer {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(double, tag="2")]
pub count_decay_ratio: f64,
#[prost(uint64, tag="3")]
pub decay_interval_secs: u64,
#[prost(double, tag="4")]
pub total_decay_ratio: f64,
#[prost(double, tag="5")]
pub net_decay_ratio: f64,
#[prost(int64, tag="6")]
pub min_book_qty: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketMakingMomentum {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(bool, tag="2")]
pub is_opposite: bool,
#[prost(double, tag="3")]
pub max_tick: f64,
#[prost(double, tag="4")]
pub ratio_threshold: f64,
#[prost(double, tag="5")]
pub strength_threshold: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketMakingMarketBias {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(uint64, tag="2")]
pub eval_interval_secs: u64,
#[prost(double, tag="3")]
pub ratio_threshold: f64,
#[prost(double, tag="4")]
pub strength_threshold: f64,
#[prost(int32, tag="5")]
pub bias_huddle: i32,
#[prost(int64, tag="6")]
pub bias_unit: i64,
#[prost(int64, tag="7")]
pub max_bias: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketMakingExposureBalancer {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(bool, tag="5")]
pub opportunistic_enabled: bool,
#[prost(int64, tag="6")]
pub trigger_quantity: i64,
#[prost(double, tag="7")]
pub price_skew_unit: f64,
#[prost(int64, tag="8")]
pub limit_quantity: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketMakingQuantityLimit {
#[prost(int64, tag="1")]
pub max_bid_quantity: i64,
#[prost(int64, tag="2")]
pub max_ask_quantity: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMarketMakingRequest {
#[prost(uint32, optional, tag="1")]
pub page_size: ::core::option::Option<u32>,
#[prost(string, optional, tag="2")]
pub page_token: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMarketMakingResponse {
#[prost(message, repeated, tag="1")]
pub entries: ::prost::alloc::vec::Vec<MarketMaking>,
#[prost(string, tag="2")]
pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetMarketMakingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetMarketMakingStatusRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartMarketMakingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub config: ::core::option::Option<MarketMakingConfiguration>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartMarketMakingResponse {
#[prost(enumeration="MarketMakingState", tag="1")]
pub state: i32,
#[prost(string, tag="2")]
pub message: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopMarketMakingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopMarketMakingResponse {
#[prost(string, tag="1")]
pub message: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResetMarketMakingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResetMarketMakingResponse {
#[prost(int32, tag="1")]
pub reset_count: i32,
#[prost(string, tag="2")]
pub message: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateMarketMakingConfigRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub config: ::core::option::Option<MarketMakingConfiguration>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamMarketMakingStatusRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateMarketMakingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub config: ::core::option::Option<MarketMakingConfiguration>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetMarketMakingOrderbookRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketMakingOrderbookData {
#[prost(string, repeated, tag="1")]
pub bid_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="2")]
pub ask_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(int64, repeated, tag="3")]
pub bid_quantities: ::prost::alloc::vec::Vec<i64>,
#[prost(int64, repeated, tag="4")]
pub ask_quantities: ::prost::alloc::vec::Vec<i64>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MomentumState {
#[prost(string, tag="1")]
pub direction: ::prost::alloc::string::String,
#[prost(int64, tag="2")]
pub bid_adjustment: i64,
#[prost(int64, tag="3")]
pub ask_adjustment: i64,
#[prost(double, tag="4")]
pub raw_ticks: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TradeAnalyzerState {
#[prost(double, tag="1")]
pub ratio: f64,
#[prost(double, tag="2")]
pub strength: f64,
#[prost(int64, tag="3")]
pub net_amount: i64,
#[prost(int64, tag="4")]
pub total_amount: i64,
#[prost(double, tag="5")]
pub avg_bid_qty: f64,
#[prost(double, tag="6")]
pub avg_ask_qty: f64,
#[prost(int64, optional, tag="7")]
pub last_trade_at_us: ::core::option::Option<i64>,
#[prost(int64, tag="8")]
pub trade_count: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketBiasState {
#[prost(int64, tag="1")]
pub accumulated_bias: i64,
#[prost(int32, tag="2")]
pub last_score: i32,
#[prost(int64, tag="3")]
pub eval_count: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ExposureBalancerState {
#[prost(int64, tag="1")]
pub net_exposure: i64,
#[prost(double, tag="3")]
pub bid_scale: f64,
#[prost(double, tag="4")]
pub ask_scale: f64,
#[prost(double, tag="5")]
pub price_shift: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MmStateUpdate {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(enumeration="MarketMakingState", optional, tag="2")]
pub state: ::core::option::Option<i32>,
#[prost(message, optional, tag="3")]
pub momentum: ::core::option::Option<MomentumState>,
#[prost(message, optional, tag="4")]
pub trade_analyzer: ::core::option::Option<TradeAnalyzerState>,
#[prost(message, optional, tag="5")]
pub exposure_balancer: ::core::option::Option<ExposureBalancerState>,
#[prost(message, optional, tag="6")]
pub market_bias: ::core::option::Option<MarketBiasState>,
#[prost(string, optional, tag="7")]
pub ask_quote: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="8")]
pub bid_quote: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="9")]
pub bid_offset: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag="10")]
pub ask_offset: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag="11")]
pub decomposition: ::core::option::Option<SpreadDecomposition>,
#[prost(string, optional, tag="12")]
pub f2m_shift: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamMmFillsRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub fund_code: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmFillSummary {
#[prost(int64, tag="1")]
pub buy_quantity: i64,
#[prost(double, tag="2")]
pub buy_avg_price: f64,
#[prost(int64, tag="3")]
pub sell_quantity: i64,
#[prost(double, tag="4")]
pub sell_avg_price: f64,
#[prost(int64, tag="7")]
pub realized_pnl: i64,
#[prost(int64, tag="8")]
pub unrealized_pnl: i64,
#[prost(double, tag="9")]
pub valuation_price: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SpreadDecomposition {
#[prost(int64, tag="1")]
pub base_bid: i64,
#[prost(int64, tag="2")]
pub base_ask: i64,
#[prost(int64, tag="3")]
pub momentum_shift: i64,
#[prost(int64, tag="4")]
pub exposure_shift: i64,
#[prost(int64, tag="5")]
pub market_bias_shift: i64,
#[prost(int64, tag="6")]
pub final_bid: i64,
#[prost(int64, tag="7")]
pub final_ask: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamMmStateUpdateRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FitToMarketRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FitToMarketResponse {
#[prost(string, tag="1")]
pub message: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClearFitToMarketRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClearFitToMarketResponse {
#[prost(string, tag="1")]
pub message: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MarketMakingState {
Unspecified = 0,
Idle = 1,
Running = 2,
}
impl MarketMakingState {
pub fn as_str_name(&self) -> &'static str {
match self {
MarketMakingState::Unspecified => "MARKET_MAKING_STATE_UNSPECIFIED",
MarketMakingState::Idle => "MARKET_MAKING_STATE_IDLE",
MarketMakingState::Running => "MARKET_MAKING_STATE_RUNNING",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"MARKET_MAKING_STATE_UNSPECIFIED" => Some(Self::Unspecified),
"MARKET_MAKING_STATE_IDLE" => Some(Self::Idle),
"MARKET_MAKING_STATE_RUNNING" => Some(Self::Running),
_ => None,
}
}
}
include!("kdo.v1.mm.tonic.rs");
include!("kdo.v1.mm.serde.rs");