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 #[prost(message, optional, tag="18")]
72 pub ma_cross: ::core::option::Option<MarketMakingMaCross>,
73}
74#[allow(clippy::derive_partial_eq_without_eq)]
76#[derive(Clone, PartialEq, ::prost::Message)]
77pub struct MarketMakingPricing {
78 #[prost(oneof="market_making_pricing::Pricing", tags="1, 2, 3, 4")]
80 pub pricing: ::core::option::Option<market_making_pricing::Pricing>,
81}
82pub mod market_making_pricing {
84 #[allow(clippy::derive_partial_eq_without_eq)]
86#[derive(Clone, PartialEq, ::prost::Oneof)]
87 pub enum Pricing {
88 #[prost(message, tag="1")]
90 PlainFollow(super::PlainFollow),
91 #[prost(message, tag="2")]
93 MeanBidAsk(super::MeanBidAsk),
94 #[prost(message, tag="3")]
96 Nav(super::Nav),
97 #[prost(message, tag="4")]
99 KrxNav(super::KrxNav),
100 }
101}
102#[allow(clippy::derive_partial_eq_without_eq)]
104#[derive(Clone, Copy, PartialEq, ::prost::Message)]
105pub struct PlainFollow {
106}
107#[allow(clippy::derive_partial_eq_without_eq)]
109#[derive(Clone, Copy, PartialEq, ::prost::Message)]
110pub struct MeanBidAsk {
111}
112#[allow(clippy::derive_partial_eq_without_eq)]
114#[derive(Clone, PartialEq, ::prost::Message)]
115pub struct Nav {
116 #[prost(message, optional, tag="1")]
118 pub etf_pricing: ::core::option::Option<super::common::EtfPricing>,
119}
120#[allow(clippy::derive_partial_eq_without_eq)]
122#[derive(Clone, Copy, PartialEq, ::prost::Message)]
123pub struct KrxNav {
124 #[prost(int64, tag="1")]
126 pub prev_index: i64,
127 #[prost(int64, tag="2")]
129 pub prev_future: i64,
130}
131#[allow(clippy::derive_partial_eq_without_eq)]
133#[derive(Clone, Copy, PartialEq, ::prost::Message)]
134pub struct MarketMakingTradeAnalyzer {
135 #[prost(bool, tag="1")]
137 pub enabled: bool,
138 #[prost(double, tag="2")]
140 pub count_decay_ratio: f64,
141 #[prost(uint64, tag="3")]
143 pub decay_interval_secs: u64,
144 #[prost(double, tag="4")]
146 pub total_decay_ratio: f64,
147 #[prost(double, tag="5")]
149 pub net_decay_ratio: f64,
150 #[prost(int64, tag="6")]
152 pub min_book_qty: i64,
153}
154#[allow(clippy::derive_partial_eq_without_eq)]
156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
157pub struct MarketMakingMomentum {
158 #[prost(bool, tag="1")]
160 pub enabled: bool,
161 #[prost(bool, tag="2")]
163 pub is_opposite: bool,
164 #[prost(double, tag="3")]
166 pub max_tick: f64,
167 #[prost(double, tag="4")]
169 pub ratio_threshold: f64,
170 #[prost(double, tag="5")]
172 pub strength_threshold: f64,
173}
174#[allow(clippy::derive_partial_eq_without_eq)]
176#[derive(Clone, Copy, PartialEq, ::prost::Message)]
177pub struct MarketMakingMarketBias {
178 #[prost(bool, tag="1")]
180 pub enabled: bool,
181 #[prost(uint64, tag="2")]
183 pub eval_interval_secs: u64,
184 #[prost(double, tag="3")]
186 pub ratio_threshold: f64,
187 #[prost(double, tag="4")]
189 pub strength_threshold: f64,
190 #[prost(int32, tag="5")]
192 pub bias_huddle: i32,
193 #[prost(int64, tag="6")]
195 pub bias_unit: i64,
196 #[prost(int64, tag="7")]
198 pub max_bias: i64,
199}
200#[allow(clippy::derive_partial_eq_without_eq)]
203#[derive(Clone, Copy, PartialEq, ::prost::Message)]
204pub struct MarketMakingMaCross {
205 #[prost(bool, tag="1")]
206 pub enabled: bool,
207 #[prost(uint64, tag="2")]
209 pub short_window_secs: u64,
210 #[prost(uint64, tag="3")]
212 pub long_window_secs: u64,
213 #[prost(int64, tag="4")]
215 pub skew_unit: i64,
216}
217#[allow(clippy::derive_partial_eq_without_eq)]
219#[derive(Clone, Copy, PartialEq, ::prost::Message)]
220pub struct MarketMakingExposureBalancer {
221 #[prost(bool, tag="1")]
223 pub enabled: bool,
224 #[prost(bool, tag="5")]
226 pub opportunistic_enabled: bool,
227 #[prost(int64, tag="6")]
229 pub trigger_quantity: i64,
230 #[prost(double, tag="7")]
232 pub price_skew_unit: f64,
233 #[prost(int64, tag="8")]
235 pub limit_quantity: i64,
236}
237#[allow(clippy::derive_partial_eq_without_eq)]
239#[derive(Clone, Copy, PartialEq, ::prost::Message)]
240pub struct MarketMakingQuantityLimit {
241 #[prost(int64, tag="1")]
243 pub max_bid_quantity: i64,
244 #[prost(int64, tag="2")]
246 pub max_ask_quantity: i64,
247}
248#[allow(clippy::derive_partial_eq_without_eq)]
254#[derive(Clone, PartialEq, ::prost::Message)]
255pub struct ListMarketMakingRequest {
256 #[prost(uint32, optional, tag="1")]
258 pub page_size: ::core::option::Option<u32>,
259 #[prost(string, optional, tag="2")]
261 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
262}
263#[allow(clippy::derive_partial_eq_without_eq)]
264#[derive(Clone, PartialEq, ::prost::Message)]
265pub struct ListMarketMakingResponse {
266 #[prost(message, repeated, tag="1")]
268 pub entries: ::prost::alloc::vec::Vec<MarketMaking>,
269 #[prost(string, tag="2")]
271 pub next_page_token: ::prost::alloc::string::String,
272}
273#[allow(clippy::derive_partial_eq_without_eq)]
275#[derive(Clone, PartialEq, ::prost::Message)]
276pub struct GetMarketMakingRequest {
277 #[prost(string, tag="1")]
279 pub symbol: ::prost::alloc::string::String,
280}
281#[allow(clippy::derive_partial_eq_without_eq)]
283#[derive(Clone, PartialEq, ::prost::Message)]
284pub struct GetMarketMakingStatusRequest {
285 #[prost(string, tag="1")]
287 pub symbol: ::prost::alloc::string::String,
288}
289#[allow(clippy::derive_partial_eq_without_eq)]
291#[derive(Clone, PartialEq, ::prost::Message)]
292pub struct StartMarketMakingRequest {
293 #[prost(string, tag="1")]
295 pub symbol: ::prost::alloc::string::String,
296 #[prost(message, optional, tag="2")]
298 pub config: ::core::option::Option<MarketMakingConfiguration>,
299}
300#[allow(clippy::derive_partial_eq_without_eq)]
301#[derive(Clone, PartialEq, ::prost::Message)]
302pub struct StartMarketMakingResponse {
303 #[prost(enumeration="MarketMakingState", tag="1")]
305 pub state: i32,
306 #[prost(string, tag="2")]
308 pub message: ::prost::alloc::string::String,
309}
310#[allow(clippy::derive_partial_eq_without_eq)]
312#[derive(Clone, PartialEq, ::prost::Message)]
313pub struct StopMarketMakingRequest {
314 #[prost(string, tag="1")]
316 pub symbol: ::prost::alloc::string::String,
317}
318#[allow(clippy::derive_partial_eq_without_eq)]
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct StopMarketMakingResponse {
321 #[prost(string, tag="1")]
323 pub message: ::prost::alloc::string::String,
324}
325#[allow(clippy::derive_partial_eq_without_eq)]
327#[derive(Clone, PartialEq, ::prost::Message)]
328pub struct ResetMarketMakingRequest {
329 #[prost(string, tag="1")]
331 pub symbol: ::prost::alloc::string::String,
332}
333#[allow(clippy::derive_partial_eq_without_eq)]
334#[derive(Clone, PartialEq, ::prost::Message)]
335pub struct ResetMarketMakingResponse {
336 #[prost(int32, tag="1")]
338 pub reset_count: i32,
339 #[prost(string, tag="2")]
341 pub message: ::prost::alloc::string::String,
342}
343#[allow(clippy::derive_partial_eq_without_eq)]
347#[derive(Clone, PartialEq, ::prost::Message)]
348pub struct UpdateMarketMakingConfigRequest {
349 #[prost(string, tag="1")]
351 pub symbol: ::prost::alloc::string::String,
352 #[prost(message, optional, tag="2")]
355 pub config: ::core::option::Option<MarketMakingConfiguration>,
356}
357#[allow(clippy::derive_partial_eq_without_eq)]
359#[derive(Clone, PartialEq, ::prost::Message)]
360pub struct StreamMarketMakingStatusRequest {
361 #[prost(string, tag="1")]
363 pub symbol: ::prost::alloc::string::String,
364}
365#[allow(clippy::derive_partial_eq_without_eq)]
367#[derive(Clone, PartialEq, ::prost::Message)]
368pub struct UpdateMarketMakingRequest {
369 #[prost(string, tag="1")]
371 pub symbol: ::prost::alloc::string::String,
372 #[prost(message, optional, tag="2")]
374 pub config: ::core::option::Option<MarketMakingConfiguration>,
375}
376#[allow(clippy::derive_partial_eq_without_eq)]
378#[derive(Clone, PartialEq, ::prost::Message)]
379pub struct GetMarketMakingOrderbookRequest {
380 #[prost(string, tag="1")]
382 pub symbol: ::prost::alloc::string::String,
383}
384#[allow(clippy::derive_partial_eq_without_eq)]
386#[derive(Clone, PartialEq, ::prost::Message)]
387pub struct MarketMakingOrderbookData {
388 #[prost(string, repeated, tag="1")]
390 pub bid_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
391 #[prost(string, repeated, tag="2")]
393 pub ask_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
394 #[prost(int64, repeated, tag="3")]
396 pub bid_quantities: ::prost::alloc::vec::Vec<i64>,
397 #[prost(int64, repeated, tag="4")]
399 pub ask_quantities: ::prost::alloc::vec::Vec<i64>,
400}
401#[allow(clippy::derive_partial_eq_without_eq)]
407#[derive(Clone, PartialEq, ::prost::Message)]
408pub struct MomentumState {
409 #[prost(string, tag="1")]
411 pub direction: ::prost::alloc::string::String,
412 #[prost(int64, tag="2")]
414 pub bid_adjustment: i64,
415 #[prost(int64, tag="3")]
417 pub ask_adjustment: i64,
418 #[prost(double, tag="4")]
420 pub raw_ticks: f64,
421}
422#[allow(clippy::derive_partial_eq_without_eq)]
424#[derive(Clone, Copy, PartialEq, ::prost::Message)]
425pub struct TradeAnalyzerState {
426 #[prost(double, tag="1")]
428 pub ratio: f64,
429 #[prost(double, tag="2")]
431 pub strength: f64,
432 #[prost(int64, tag="3")]
434 pub net_amount: i64,
435 #[prost(int64, tag="4")]
437 pub total_amount: i64,
438 #[prost(double, tag="5")]
440 pub avg_bid_qty: f64,
441 #[prost(double, tag="6")]
443 pub avg_ask_qty: f64,
444 #[prost(int64, optional, tag="7")]
446 pub last_trade_at_us: ::core::option::Option<i64>,
447 #[prost(int64, tag="8")]
449 pub trade_count: i64,
450}
451#[allow(clippy::derive_partial_eq_without_eq)]
453#[derive(Clone, Copy, PartialEq, ::prost::Message)]
454pub struct MarketBiasState {
455 #[prost(int64, tag="1")]
457 pub accumulated_bias: i64,
458 #[prost(int32, tag="2")]
460 pub last_score: i32,
461 #[prost(int64, tag="3")]
463 pub eval_count: i64,
464}
465#[allow(clippy::derive_partial_eq_without_eq)]
467#[derive(Clone, PartialEq, ::prost::Message)]
468pub struct MaCrossState {
469 #[prost(double, tag="1")]
471 pub short_ma: f64,
472 #[prost(double, tag="2")]
473 pub long_ma: f64,
474 #[prost(string, tag="3")]
476 pub trend: ::prost::alloc::string::String,
477 #[prost(int64, tag="4")]
479 pub skew: i64,
480 #[prost(uint64, tag="5")]
482 pub samples: u64,
483 #[prost(uint64, tag="6")]
485 pub transitions: u64,
486}
487#[allow(clippy::derive_partial_eq_without_eq)]
489#[derive(Clone, Copy, PartialEq, ::prost::Message)]
490pub struct ExposureBalancerState {
491 #[prost(int64, tag="1")]
493 pub net_exposure: i64,
494 #[prost(double, tag="3")]
496 pub bid_scale: f64,
497 #[prost(double, tag="4")]
499 pub ask_scale: f64,
500 #[prost(double, tag="5")]
502 pub price_shift: f64,
503}
504#[allow(clippy::derive_partial_eq_without_eq)]
508#[derive(Clone, PartialEq, ::prost::Message)]
509pub struct MmStateUpdate {
510 #[prost(string, tag="1")]
512 pub symbol: ::prost::alloc::string::String,
513 #[prost(enumeration="MarketMakingState", optional, tag="2")]
515 pub state: ::core::option::Option<i32>,
516 #[prost(message, optional, tag="3")]
518 pub momentum: ::core::option::Option<MomentumState>,
519 #[prost(message, optional, tag="4")]
521 pub trade_analyzer: ::core::option::Option<TradeAnalyzerState>,
522 #[prost(message, optional, tag="5")]
524 pub exposure_balancer: ::core::option::Option<ExposureBalancerState>,
525 #[prost(message, optional, tag="6")]
527 pub market_bias: ::core::option::Option<MarketBiasState>,
528 #[prost(string, optional, tag="7")]
530 pub ask_quote: ::core::option::Option<::prost::alloc::string::String>,
531 #[prost(string, optional, tag="8")]
533 pub bid_quote: ::core::option::Option<::prost::alloc::string::String>,
534 #[prost(string, optional, tag="9")]
536 pub bid_offset: ::core::option::Option<::prost::alloc::string::String>,
537 #[prost(string, optional, tag="10")]
539 pub ask_offset: ::core::option::Option<::prost::alloc::string::String>,
540 #[prost(message, optional, tag="11")]
542 pub decomposition: ::core::option::Option<SpreadDecomposition>,
543 #[prost(string, optional, tag="12")]
545 pub f2m_shift: ::core::option::Option<::prost::alloc::string::String>,
546 #[prost(message, optional, tag="13")]
548 pub ma_cross: ::core::option::Option<MaCrossState>,
549}
550#[allow(clippy::derive_partial_eq_without_eq)]
552#[derive(Clone, PartialEq, ::prost::Message)]
553pub struct StreamMmFillsRequest {
554 #[prost(string, tag="1")]
556 pub symbol: ::prost::alloc::string::String,
557 #[prost(string, tag="2")]
560 pub fund_code: ::prost::alloc::string::String,
561}
562#[allow(clippy::derive_partial_eq_without_eq)]
564#[derive(Clone, Copy, PartialEq, ::prost::Message)]
565pub struct MmFillSummary {
566 #[prost(int64, tag="1")]
568 pub buy_quantity: i64,
569 #[prost(double, tag="2")]
570 pub buy_avg_price: f64,
571 #[prost(int64, tag="3")]
573 pub sell_quantity: i64,
574 #[prost(double, tag="4")]
575 pub sell_avg_price: f64,
576 #[prost(int64, tag="7")]
578 pub realized_pnl: i64,
579 #[prost(int64, tag="8")]
581 pub unrealized_pnl: i64,
582}
583#[allow(clippy::derive_partial_eq_without_eq)]
585#[derive(Clone, PartialEq, ::prost::Message)]
586pub struct ListMmPnlHistoryRequest {
587 #[prost(string, tag="1")]
589 pub symbol: ::prost::alloc::string::String,
590 #[prost(string, optional, tag="2")]
592 pub fund_code: ::core::option::Option<::prost::alloc::string::String>,
593 #[prost(int64, tag="3")]
595 pub start_time: i64,
596 #[prost(int64, tag="4")]
598 pub end_time: i64,
599 #[prost(uint32, tag="5")]
601 pub bucket_seconds: u32,
602}
603#[allow(clippy::derive_partial_eq_without_eq)]
605#[derive(Clone, Copy, PartialEq, ::prost::Message)]
606pub struct MmPnlPoint {
607 #[prost(int64, tag="1")]
609 pub time: i64,
610 #[prost(int64, tag="2")]
612 pub realized_pnl: i64,
613 #[prost(int64, tag="3")]
615 pub unrealized_pnl: i64,
616 #[prost(int64, tag="4")]
618 pub total_pnl: i64,
619}
620#[allow(clippy::derive_partial_eq_without_eq)]
621#[derive(Clone, PartialEq, ::prost::Message)]
622pub struct ListMmPnlHistoryResponse {
623 #[prost(message, repeated, tag="1")]
625 pub points: ::prost::alloc::vec::Vec<MmPnlPoint>,
626}
627#[allow(clippy::derive_partial_eq_without_eq)]
629#[derive(Clone, Copy, PartialEq, ::prost::Message)]
630pub struct SpreadDecomposition {
631 #[prost(int64, tag="1")]
633 pub base_bid: i64,
634 #[prost(int64, tag="2")]
636 pub base_ask: i64,
637 #[prost(int64, tag="3")]
639 pub momentum_shift: i64,
640 #[prost(int64, tag="4")]
642 pub exposure_shift: i64,
643 #[prost(int64, tag="5")]
645 pub market_bias_shift: i64,
646 #[prost(int64, tag="6")]
648 pub final_bid: i64,
649 #[prost(int64, tag="7")]
651 pub final_ask: i64,
652 #[prost(int64, tag="8")]
654 pub ma_cross_shift: i64,
655}
656#[allow(clippy::derive_partial_eq_without_eq)]
662#[derive(Clone, PartialEq, ::prost::Message)]
663pub struct StreamMmStateUpdateRequest {
664 #[prost(string, tag="1")]
666 pub symbol: ::prost::alloc::string::String,
667}
668#[allow(clippy::derive_partial_eq_without_eq)]
670#[derive(Clone, PartialEq, ::prost::Message)]
671pub struct FitToMarketRequest {
672 #[prost(string, tag="1")]
674 pub symbol: ::prost::alloc::string::String,
675}
676#[allow(clippy::derive_partial_eq_without_eq)]
677#[derive(Clone, PartialEq, ::prost::Message)]
678pub struct FitToMarketResponse {
679 #[prost(string, tag="1")]
681 pub message: ::prost::alloc::string::String,
682}
683#[allow(clippy::derive_partial_eq_without_eq)]
685#[derive(Clone, PartialEq, ::prost::Message)]
686pub struct ClearFitToMarketRequest {
687 #[prost(string, tag="1")]
689 pub symbol: ::prost::alloc::string::String,
690}
691#[allow(clippy::derive_partial_eq_without_eq)]
692#[derive(Clone, PartialEq, ::prost::Message)]
693pub struct ClearFitToMarketResponse {
694 #[prost(string, tag="1")]
696 pub message: ::prost::alloc::string::String,
697}
698#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
704#[repr(i32)]
705pub enum MarketMakingState {
706 Unspecified = 0,
707 Idle = 1,
709 Running = 2,
711}
712impl MarketMakingState {
713 pub fn as_str_name(&self) -> &'static str {
718 match self {
719 MarketMakingState::Unspecified => "MARKET_MAKING_STATE_UNSPECIFIED",
720 MarketMakingState::Idle => "MARKET_MAKING_STATE_IDLE",
721 MarketMakingState::Running => "MARKET_MAKING_STATE_RUNNING",
722 }
723 }
724 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
726 match value {
727 "MARKET_MAKING_STATE_UNSPECIFIED" => Some(Self::Unspecified),
728 "MARKET_MAKING_STATE_IDLE" => Some(Self::Idle),
729 "MARKET_MAKING_STATE_RUNNING" => Some(Self::Running),
730 _ => None,
731 }
732 }
733}
734include!("kdo.v1.mm.tonic.rs");
735include!("kdo.v1.mm.serde.rs");
736