1#[allow(clippy::derive_partial_eq_without_eq)]
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct MarketMaking {
11 #[prost(string, tag="1")]
13 pub symbol: ::prost::alloc::string::String,
14 #[prost(enumeration="MarketMakingState", tag="2")]
16 pub state: i32,
17 #[prost(message, optional, tag="3")]
19 pub config: ::core::option::Option<MarketMakingConfiguration>,
20 #[prost(string, tag="4")]
22 pub fund_code: ::prost::alloc::string::String,
23 #[prost(int64, tag="5")]
25 pub tick_size: i64,
26}
27#[allow(clippy::derive_partial_eq_without_eq)]
29#[derive(Clone, PartialEq, ::prost::Message)]
30pub struct MarketMakingConfiguration {
31 #[prost(bool, tag="1")]
33 pub enabled: bool,
34 #[prost(message, optional, tag="2")]
36 pub pricing: ::core::option::Option<MarketMakingPricing>,
37 #[prost(message, optional, tag="3")]
39 pub trade_analyzer: ::core::option::Option<MarketMakingTradeAnalyzer>,
40 #[prost(message, optional, tag="4")]
42 pub market_bias: ::core::option::Option<MarketMakingMarketBias>,
43 #[prost(message, optional, tag="5")]
45 pub momentum: ::core::option::Option<MarketMakingMomentum>,
46 #[prost(message, optional, tag="6")]
48 pub exposure_balancer: ::core::option::Option<MarketMakingExposureBalancer>,
49 #[prost(int64, tag="9")]
51 pub bid_quantity: i64,
52 #[prost(int64, tag="10")]
54 pub ask_quantity: i64,
55 #[prost(int64, tag="13")]
57 pub bid_offset: i64,
58 #[prost(int64, tag="14")]
60 pub ask_offset: i64,
61 #[prost(int64, optional, tag="15")]
63 pub basis: ::core::option::Option<i64>,
64 #[prost(int32, tag="16")]
66 pub base_half_ticks: i32,
67 #[prost(message, optional, tag="17")]
69 pub quantity_limit: ::core::option::Option<MarketMakingQuantityLimit>,
70}
71#[allow(clippy::derive_partial_eq_without_eq)]
73#[derive(Clone, PartialEq, ::prost::Message)]
74pub struct MarketMakingPricing {
75 #[prost(oneof="market_making_pricing::Pricing", tags="1, 2, 3, 4")]
77 pub pricing: ::core::option::Option<market_making_pricing::Pricing>,
78}
79pub mod market_making_pricing {
81 #[allow(clippy::derive_partial_eq_without_eq)]
83#[derive(Clone, PartialEq, ::prost::Oneof)]
84 pub enum Pricing {
85 #[prost(message, tag="1")]
87 PlainFollow(super::PlainFollow),
88 #[prost(message, tag="2")]
90 MeanBidAsk(super::MeanBidAsk),
91 #[prost(message, tag="3")]
93 Nav(super::Nav),
94 #[prost(message, tag="4")]
96 KrxNav(super::KrxNav),
97 }
98}
99#[allow(clippy::derive_partial_eq_without_eq)]
101#[derive(Clone, Copy, PartialEq, ::prost::Message)]
102pub struct PlainFollow {
103}
104#[allow(clippy::derive_partial_eq_without_eq)]
106#[derive(Clone, Copy, PartialEq, ::prost::Message)]
107pub struct MeanBidAsk {
108}
109#[allow(clippy::derive_partial_eq_without_eq)]
111#[derive(Clone, PartialEq, ::prost::Message)]
112pub struct Nav {
113 #[prost(message, optional, tag="1")]
115 pub etf_pricing: ::core::option::Option<super::common::EtfPricing>,
116}
117#[allow(clippy::derive_partial_eq_without_eq)]
119#[derive(Clone, Copy, PartialEq, ::prost::Message)]
120pub struct KrxNav {
121 #[prost(int64, tag="1")]
123 pub prev_index: i64,
124 #[prost(int64, tag="2")]
126 pub prev_future: i64,
127}
128#[allow(clippy::derive_partial_eq_without_eq)]
130#[derive(Clone, Copy, PartialEq, ::prost::Message)]
131pub struct MarketMakingTradeAnalyzer {
132 #[prost(bool, tag="1")]
134 pub enabled: bool,
135 #[prost(double, tag="2")]
137 pub count_decay_ratio: f64,
138 #[prost(uint64, tag="3")]
140 pub decay_interval_secs: u64,
141 #[prost(double, tag="4")]
143 pub total_decay_ratio: f64,
144 #[prost(double, tag="5")]
146 pub net_decay_ratio: f64,
147 #[prost(int64, tag="6")]
149 pub min_book_qty: i64,
150}
151#[allow(clippy::derive_partial_eq_without_eq)]
153#[derive(Clone, Copy, PartialEq, ::prost::Message)]
154pub struct MarketMakingMomentum {
155 #[prost(bool, tag="1")]
157 pub enabled: bool,
158 #[prost(bool, tag="2")]
160 pub is_opposite: bool,
161 #[prost(double, tag="3")]
163 pub max_tick: f64,
164 #[prost(double, tag="4")]
166 pub ratio_threshold: f64,
167 #[prost(double, tag="5")]
169 pub strength_threshold: f64,
170}
171#[allow(clippy::derive_partial_eq_without_eq)]
173#[derive(Clone, Copy, PartialEq, ::prost::Message)]
174pub struct MarketMakingMarketBias {
175 #[prost(bool, tag="1")]
177 pub enabled: bool,
178 #[prost(uint64, tag="2")]
180 pub eval_interval_secs: u64,
181 #[prost(double, tag="3")]
183 pub ratio_threshold: f64,
184 #[prost(double, tag="4")]
186 pub strength_threshold: f64,
187 #[prost(int32, tag="5")]
189 pub bias_huddle: i32,
190 #[prost(int64, tag="6")]
192 pub bias_unit: i64,
193 #[prost(int64, tag="7")]
195 pub max_bias: i64,
196}
197#[allow(clippy::derive_partial_eq_without_eq)]
199#[derive(Clone, Copy, PartialEq, ::prost::Message)]
200pub struct MarketMakingExposureBalancer {
201 #[prost(bool, tag="1")]
203 pub enabled: bool,
204 #[prost(int32, tag="2")]
206 pub trigger_multiple: i32,
207 #[prost(int32, tag="3")]
209 pub price_skew_ticks: i32,
210 #[prost(int32, tag="4")]
212 pub limit_multiple: i32,
213 #[prost(bool, tag="5")]
215 pub opportunistic_enabled: bool,
216}
217#[allow(clippy::derive_partial_eq_without_eq)]
219#[derive(Clone, Copy, PartialEq, ::prost::Message)]
220pub struct MarketMakingQuantityLimit {
221 #[prost(int64, tag="1")]
223 pub max_bid_quantity: i64,
224 #[prost(int64, tag="2")]
226 pub max_ask_quantity: i64,
227}
228#[allow(clippy::derive_partial_eq_without_eq)]
234#[derive(Clone, PartialEq, ::prost::Message)]
235pub struct ListMarketMakingRequest {
236 #[prost(uint32, optional, tag="1")]
238 pub page_size: ::core::option::Option<u32>,
239 #[prost(string, optional, tag="2")]
241 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
242}
243#[allow(clippy::derive_partial_eq_without_eq)]
244#[derive(Clone, PartialEq, ::prost::Message)]
245pub struct ListMarketMakingResponse {
246 #[prost(message, repeated, tag="1")]
248 pub entries: ::prost::alloc::vec::Vec<MarketMaking>,
249 #[prost(string, tag="2")]
251 pub next_page_token: ::prost::alloc::string::String,
252}
253#[allow(clippy::derive_partial_eq_without_eq)]
255#[derive(Clone, PartialEq, ::prost::Message)]
256pub struct GetMarketMakingRequest {
257 #[prost(string, tag="1")]
259 pub symbol: ::prost::alloc::string::String,
260}
261#[allow(clippy::derive_partial_eq_without_eq)]
263#[derive(Clone, PartialEq, ::prost::Message)]
264pub struct GetMarketMakingStatusRequest {
265 #[prost(string, tag="1")]
267 pub symbol: ::prost::alloc::string::String,
268}
269#[allow(clippy::derive_partial_eq_without_eq)]
271#[derive(Clone, PartialEq, ::prost::Message)]
272pub struct StartMarketMakingRequest {
273 #[prost(string, tag="1")]
275 pub symbol: ::prost::alloc::string::String,
276 #[prost(message, optional, tag="2")]
278 pub config: ::core::option::Option<MarketMakingConfiguration>,
279}
280#[allow(clippy::derive_partial_eq_without_eq)]
281#[derive(Clone, PartialEq, ::prost::Message)]
282pub struct StartMarketMakingResponse {
283 #[prost(enumeration="MarketMakingState", tag="1")]
285 pub state: i32,
286 #[prost(string, tag="2")]
288 pub message: ::prost::alloc::string::String,
289}
290#[allow(clippy::derive_partial_eq_without_eq)]
292#[derive(Clone, PartialEq, ::prost::Message)]
293pub struct StopMarketMakingRequest {
294 #[prost(string, tag="1")]
296 pub symbol: ::prost::alloc::string::String,
297}
298#[allow(clippy::derive_partial_eq_without_eq)]
299#[derive(Clone, PartialEq, ::prost::Message)]
300pub struct StopMarketMakingResponse {
301 #[prost(string, tag="1")]
303 pub message: ::prost::alloc::string::String,
304}
305#[allow(clippy::derive_partial_eq_without_eq)]
307#[derive(Clone, PartialEq, ::prost::Message)]
308pub struct ResetMarketMakingRequest {
309 #[prost(string, tag="1")]
311 pub symbol: ::prost::alloc::string::String,
312}
313#[allow(clippy::derive_partial_eq_without_eq)]
314#[derive(Clone, PartialEq, ::prost::Message)]
315pub struct ResetMarketMakingResponse {
316 #[prost(int32, tag="1")]
318 pub reset_count: i32,
319 #[prost(string, tag="2")]
321 pub message: ::prost::alloc::string::String,
322}
323#[allow(clippy::derive_partial_eq_without_eq)]
327#[derive(Clone, PartialEq, ::prost::Message)]
328pub struct UpdateMarketMakingConfigRequest {
329 #[prost(string, tag="1")]
331 pub symbol: ::prost::alloc::string::String,
332 #[prost(message, optional, tag="2")]
335 pub config: ::core::option::Option<MarketMakingConfiguration>,
336}
337#[allow(clippy::derive_partial_eq_without_eq)]
339#[derive(Clone, PartialEq, ::prost::Message)]
340pub struct StreamMarketMakingStatusRequest {
341 #[prost(string, tag="1")]
343 pub symbol: ::prost::alloc::string::String,
344}
345#[allow(clippy::derive_partial_eq_without_eq)]
347#[derive(Clone, PartialEq, ::prost::Message)]
348pub struct UpdateMarketMakingRequest {
349 #[prost(string, tag="1")]
351 pub symbol: ::prost::alloc::string::String,
352 #[prost(message, optional, tag="2")]
354 pub config: ::core::option::Option<MarketMakingConfiguration>,
355}
356#[allow(clippy::derive_partial_eq_without_eq)]
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct GetMarketMakingOrderbookRequest {
360 #[prost(string, tag="1")]
362 pub symbol: ::prost::alloc::string::String,
363}
364#[allow(clippy::derive_partial_eq_without_eq)]
366#[derive(Clone, PartialEq, ::prost::Message)]
367pub struct MarketMakingOrderbookData {
368 #[prost(string, repeated, tag="1")]
370 pub bid_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
371 #[prost(string, repeated, tag="2")]
373 pub ask_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
374 #[prost(int64, repeated, tag="3")]
376 pub bid_quantities: ::prost::alloc::vec::Vec<i64>,
377 #[prost(int64, repeated, tag="4")]
379 pub ask_quantities: ::prost::alloc::vec::Vec<i64>,
380}
381#[allow(clippy::derive_partial_eq_without_eq)]
387#[derive(Clone, PartialEq, ::prost::Message)]
388pub struct MomentumState {
389 #[prost(string, tag="1")]
391 pub direction: ::prost::alloc::string::String,
392 #[prost(int64, tag="2")]
394 pub bid_adjustment: i64,
395 #[prost(int64, tag="3")]
397 pub ask_adjustment: i64,
398 #[prost(double, tag="4")]
400 pub raw_ticks: f64,
401}
402#[allow(clippy::derive_partial_eq_without_eq)]
404#[derive(Clone, Copy, PartialEq, ::prost::Message)]
405pub struct TradeAnalyzerState {
406 #[prost(double, tag="1")]
408 pub ratio: f64,
409 #[prost(double, tag="2")]
411 pub strength: f64,
412 #[prost(int64, tag="3")]
414 pub net_amount: i64,
415 #[prost(int64, tag="4")]
417 pub total_amount: i64,
418 #[prost(double, tag="5")]
420 pub avg_bid_qty: f64,
421 #[prost(double, tag="6")]
423 pub avg_ask_qty: f64,
424 #[prost(int64, optional, tag="7")]
426 pub last_trade_at_us: ::core::option::Option<i64>,
427 #[prost(int64, tag="8")]
429 pub trade_count: i64,
430}
431#[allow(clippy::derive_partial_eq_without_eq)]
433#[derive(Clone, Copy, PartialEq, ::prost::Message)]
434pub struct MarketBiasState {
435 #[prost(int64, tag="1")]
437 pub accumulated_bias: i64,
438 #[prost(int32, tag="2")]
440 pub last_score: i32,
441 #[prost(int64, tag="3")]
443 pub eval_count: i64,
444}
445#[allow(clippy::derive_partial_eq_without_eq)]
447#[derive(Clone, Copy, PartialEq, ::prost::Message)]
448pub struct ExposureBalancerState {
449 #[prost(int64, tag="1")]
451 pub net_exposure: i64,
452 #[prost(int32, tag="2")]
454 pub price_shift_ticks: i32,
455 #[prost(double, tag="3")]
457 pub bid_scale: f64,
458 #[prost(double, tag="4")]
460 pub ask_scale: f64,
461}
462#[allow(clippy::derive_partial_eq_without_eq)]
466#[derive(Clone, PartialEq, ::prost::Message)]
467pub struct MmStateUpdate {
468 #[prost(string, tag="1")]
470 pub symbol: ::prost::alloc::string::String,
471 #[prost(enumeration="MarketMakingState", optional, tag="2")]
473 pub state: ::core::option::Option<i32>,
474 #[prost(message, optional, tag="3")]
476 pub momentum: ::core::option::Option<MomentumState>,
477 #[prost(message, optional, tag="4")]
479 pub trade_analyzer: ::core::option::Option<TradeAnalyzerState>,
480 #[prost(message, optional, tag="5")]
482 pub exposure_balancer: ::core::option::Option<ExposureBalancerState>,
483 #[prost(message, optional, tag="6")]
485 pub market_bias: ::core::option::Option<MarketBiasState>,
486 #[prost(string, optional, tag="7")]
488 pub ask_quote: ::core::option::Option<::prost::alloc::string::String>,
489 #[prost(string, optional, tag="8")]
491 pub bid_quote: ::core::option::Option<::prost::alloc::string::String>,
492 #[prost(string, optional, tag="9")]
494 pub bid_offset: ::core::option::Option<::prost::alloc::string::String>,
495 #[prost(string, optional, tag="10")]
497 pub ask_offset: ::core::option::Option<::prost::alloc::string::String>,
498 #[prost(message, optional, tag="11")]
500 pub decomposition: ::core::option::Option<SpreadDecomposition>,
501 #[prost(string, optional, tag="12")]
503 pub f2m_shift: ::core::option::Option<::prost::alloc::string::String>,
504}
505#[allow(clippy::derive_partial_eq_without_eq)]
507#[derive(Clone, Copy, PartialEq, ::prost::Message)]
508pub struct SpreadDecomposition {
509 #[prost(int64, tag="1")]
511 pub base_bid: i64,
512 #[prost(int64, tag="2")]
514 pub base_ask: i64,
515 #[prost(int64, tag="3")]
517 pub momentum_shift: i64,
518 #[prost(int64, tag="4")]
520 pub exposure_shift: i64,
521 #[prost(int64, tag="5")]
523 pub market_bias_shift: i64,
524 #[prost(int64, tag="6")]
526 pub final_bid: i64,
527 #[prost(int64, tag="7")]
529 pub final_ask: i64,
530}
531#[allow(clippy::derive_partial_eq_without_eq)]
537#[derive(Clone, PartialEq, ::prost::Message)]
538pub struct StreamMmStateUpdateRequest {
539 #[prost(string, tag="1")]
541 pub symbol: ::prost::alloc::string::String,
542}
543#[allow(clippy::derive_partial_eq_without_eq)]
545#[derive(Clone, PartialEq, ::prost::Message)]
546pub struct FitToMarketRequest {
547 #[prost(string, tag="1")]
549 pub symbol: ::prost::alloc::string::String,
550}
551#[allow(clippy::derive_partial_eq_without_eq)]
552#[derive(Clone, PartialEq, ::prost::Message)]
553pub struct FitToMarketResponse {
554 #[prost(string, tag="1")]
556 pub message: ::prost::alloc::string::String,
557}
558#[allow(clippy::derive_partial_eq_without_eq)]
560#[derive(Clone, PartialEq, ::prost::Message)]
561pub struct ClearFitToMarketRequest {
562 #[prost(string, tag="1")]
564 pub symbol: ::prost::alloc::string::String,
565}
566#[allow(clippy::derive_partial_eq_without_eq)]
567#[derive(Clone, PartialEq, ::prost::Message)]
568pub struct ClearFitToMarketResponse {
569 #[prost(string, tag="1")]
571 pub message: ::prost::alloc::string::String,
572}
573#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
579#[repr(i32)]
580pub enum MarketMakingState {
581 Unspecified = 0,
582 Idle = 1,
584 Running = 2,
586}
587impl MarketMakingState {
588 pub fn as_str_name(&self) -> &'static str {
593 match self {
594 MarketMakingState::Unspecified => "MARKET_MAKING_STATE_UNSPECIFIED",
595 MarketMakingState::Idle => "MARKET_MAKING_STATE_IDLE",
596 MarketMakingState::Running => "MARKET_MAKING_STATE_RUNNING",
597 }
598 }
599 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
601 match value {
602 "MARKET_MAKING_STATE_UNSPECIFIED" => Some(Self::Unspecified),
603 "MARKET_MAKING_STATE_IDLE" => Some(Self::Idle),
604 "MARKET_MAKING_STATE_RUNNING" => Some(Self::Running),
605 _ => None,
606 }
607 }
608}
609include!("kdo.v1.mm.tonic.rs");
610include!("kdo.v1.mm.serde.rs");
611