Utofauti wa data ya kitabu cha oda ya MBO na MBP
Elewa tofauti kati ya mtiririko wa data ya MBO na MBP katika masoko ya fedha. Jifunze jinsi kila mfumo unavyoathiri gharama za trafiki na uchanganuzi wa kina wa soko.
Data ya kitabu cha oda ya MBO dhidi ya MBP ni tofauti kubwa inayojificha nyuma ya lebo ndogo. Wauzaji wawili wanaweza kukuuzia kitu kinachoitwa "Level 2": MBP (market by price) hutuma jumla ya ukubwa uliopo katika kila ngazi ya bei, wakati MBO (market by order) hutuma kila oda binafsi kama tukio lenye kitambulisho (ID) chake. Moja ni muhtasari wa kitabu; nyingine ni leja ambayo kitabu hicho hujengwa kwayo, na inahitaji trafiki kubwa zaidi ya data ili kuifikisha.
Yaliyomo kwenye data ya kitabu cha oda ya MBP na MBO
MBP, market by price, ni kina cha soko kilichojumlishwa. Kila sasisho hutaja upande, ngazi ya bei, jumla ya ukubwa unaoonekana hapo, na wakati mwingine idadi ya oda zilizopo nyuma yake. Bidhaa inayouzwa kama MBP-10 hukupa ngazi kumi bora za bei kila upande, ngazi katika jukwaa la biashara na chati ya kina.
MBO, market by order, ni mtiririko wa matukio. Kila ujumbe hutaja oda moja: ID yake, upande, bei, ukubwa unaoonekana, na kile kilichotokea kwake. Hakuna kitu kinachojumlishwa mapema. Ikiwa oda arobaini zipo kwenye bei moja, jumbe arobaini tofauti huziweka hapo, na unashikilia zote arobaini kwenye kumbukumbu ili kujua jumla ya ngazi hiyo.
Mwongozo wetu wa data ya soko ya Level 1 dhidi ya Level 2 unaelezea maana ya lebo za ngazi ya rejareja kwa broker. MBO na MBP ndio majina sahihi ya yaliyomo ndani ya kisanduku wakati muuzaji anaposema "Level 2", na jina la schema ndilo la kuulizia.
Vitendo vya ujumbe vinavyobebwa na feed ya MBO
Feed ya MBO ni mfumo wa vitendo vinavyotumika kwa ID za oda. Vitendo vinne hubeba sehemu kubwa ya trafiki:
- Add: oda mpya inaingia kwenye kitabu kwa bei fulani ikiwa na ID mpya.
- Modify: ID iliyopo inabadilisha bei au ukubwa. Kuongeza ukubwa au kubadilisha bei hupeleka oda hiyo nyuma ya foleni katika ngazi mpya; kupunguza ukubwa kwa kawaida hudumisha nafasi yake.
- Cancel: ID inaondoka kwenye kitabu, kwa sehemu au kikamilifu.
- Trade au fill: oda ya fujo (aggressive order) inatekelezwa dhidi ya ID moja au zaidi zilizopo, ikipunguza au kuondoa oda hizo.
MBP haibebi msamiati huo. Sasisho la MBP ni taarifa kuhusu ngazi: bei hii sasa ina ukubwa huu. Ikiwa ukubwa uliondoka kupitia kufutwa (cancel) au kutekelezwa (fill), sasisho linaonekana sawa. Paneli hapa chini inaonyesha kikomo hicho kwenye kitabu chembamba zaidi, sehemu ya juu ya kitabu iliyojumlishwa, ngazi moja ya bei kila upande na MBP-1 katika utaratibu huu wa kuita.
SQL halisi nyuma ya kila namba
WITH
ordered AS
(
SELECT
row_number() OVER (ORDER BY sip_timestamp, sequence_number) AS msg_index,
bid_price,
bid_size,
lagInFrame(bid_price) OVER (ORDER BY sip_timestamp, sequence_number) AS prev_bid_price,
lagInFrame(bid_size) OVER (ORDER BY sip_timestamp, sequence_number) AS prev_bid_size
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
AND bid_price > 0
),
classified AS
(
SELECT multiIf(
bid_price != prev_bid_price, 'best bid price changed',
bid_size > prev_bid_size, 'size joined at the best bid',
bid_size < prev_bid_size, 'size left the best bid',
'bid untouched, ask side updated') AS message_type
FROM ordered
WHERE msg_index > 1
)
SELECT
message_type,
count() AS message_count,
round(100 * count() / sum(count()) OVER (), 1) AS share_pct
FROM classified
GROUP BY message_type
ORDER BY indexOf(['best bid price changed', 'size joined at the best bid', 'size left the best bid', 'bid untouched, ask side updated'], message_type)Katika nusu saa hiyo, 17.6% ya jumbe ilihamisha bid bora kwenda bei tofauti, 17.4% iliongeza ukubwa kwenye bid isiyobadilika, 12% iliondoa ukubwa kwenye bid isiyobadilika, na 53% iliacha bid kama ilivyo wakati upande mwingine ukihama. Kila kundi ni taarifa ya jumla kuhusu ngazi ya bei. Hakuna inayotaja oda, na hakuna hesabu inayoweza kupata ID iliyopotea.
Kile kila schema inaweza na haiwezi kujibu
MBP-10 hujibu maswali yaliyoulizwa kama "kulikuwa na ukubwa kiasi gani": umbo la ngazi, kutokuwa na usawa kwa kitabu, ukwasi uliopo karibu na bei ya kati, na chati ya kina yenyewe. Ngazi zilizojumlishwa ni kila kitu ambacho hayo yanahitaji.
MBO hujibu maswali yaliyoulizwa kama "nini kilitokea kwa oda hii": ukubwa kiasi gani ulikuwepo mbele yako ulipoingia, oda huishi muda gani kabla ya kufutwa, na uwezekano wa oda tulivu (passive order) kutekelezwa kabla ya bei kuhama. Kiasi hicho hakipo katika mfumo uliojumlishwa, na kujumlisha oda kuwa jumla ya ngazi huharibu mfuatano uliotengeneza oda hizo.
Nafasi katika foleni (queue position) ni mfano bora zaidi, na ina maana tu chini ya kipaumbele cha bei-muda dhidi ya ulinganishaji wa pro-rata, ambapo mpangilio wa kuwasili huamua nani anatekeleza kwanza. Kinachofanya iwe muhimu ni ukubwa wa print: ngazi hujazwa na utekelezaji mwingi mdogo, si mmoja mkubwa.
SQL halisi nyuma ya kila namba
SELECT
multiIf(size < 100, '1 to 99 shares',
size < 200, '100 to 199 shares',
size < 500, '200 to 499 shares',
size < 1000, '500 to 999 shares',
'1000 or more shares') AS trade_size_bucket,
count() AS trade_count,
round(100 * count() / sum(count()) OVER (), 1) AS share_pct,
round(avg(size)) AS avg_shares
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
AND size > 0
GROUP BY trade_size_bucket
ORDER BY min(size)Print chini ya hisa mia moja, odd lot, zilifanya 92.3% ya biashara katika dirisha hilo, na kundi kubwa zaidi lililopo, 1000 or more shares, lilifanya 0.1%. Feed prints ukubwa huo kwa ngazi inayoonyesha hisa elfu nne na oda iliyojiunga na foleni mwisho inaweza kukaa kupitia utekelezaji kadhaa bila kufanya biashara. MBP inakuonyesha elfu nne. MBO inakuonyesha mstari.
Hakuna schema inayoonyesha ukubwa uliofichwa. Iceberg order huonyesha ncha ndogo na hujirefusha na ID mpya kila ncha inapojazwa, hivyo akiba haionekani kamwe kwenye ujumbe wowote.
Kujenga upya kitabu kutoka MBO ni mashine ya hali (state machine)
Feed ya MBP inakupa jibu. Feed ya MBO inakupa pembejeo na inatarajia uwe sahihi kabisa:
- Anza kutoka kwenye snapshot, au kutoka kwenye kitabu tupu pamoja na ujumbe wa kufuta wa soko.
- Tumia kila add, modify, cancel na fill katika mfuatano sahihi, uliopangwa kwa ID ya oda.
- Dumisha index ya pili kwa ngazi ya bei, kwa sababu ndiyo mkakati wako unayosoma.
- Fuatilia namba za mfuatano, na ulandanishe upya (re-sync) kutoka kwenye snapshot mpya wakati wowote mmoja unapokosekana.
Hali ya kushindwa ni ya kimya. Ukipoteza cancel moja, oda ya mzimu inakaa kwenye kitabu chako kwa muda wote wa kikao, ikivimbisha ngazi hiyo, bila kutoa kosa lolote. MBP hupungua kwa upole zaidi: kila sasisho husema upya jumla ya ngazi, hivyo thamani iliyoharibika hufutwa na kuandikwa upya ndani ya jumbe chache.
MBO pia huishi kwenye feed za moja kwa moja za soko, kitabu kimoja kwa kila soko, ambayo inamaanisha kuendesha na kuunganisha kadhaa kati ya hizo. Tape iliyojumlishwa ni muhtasari kwa ujenzi, mgawanyiko uliofunikwa katika SIP dhidi ya feed za moja kwa moja za soko.
Gharama ya maelezo ya ziada katika bandwidth
Idadi ya jumbe ni njia ya uaminifu ya kupima tofauti ya bei. Paneli hapa chini inahesabu jumbe zilizojumlishwa za sehemu ya juu ya kitabu dhidi ya prints halisi katika nusu saa hiyo hiyo iliyopangwa kwa majina matano ya kawaida.
SQL halisi nyuma ya kila namba
WITH
quote_load AS
(
SELECT ticker, count() AS quote_messages
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'MSFT', 'KO')
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
GROUP BY ticker
),
trade_load AS
(
SELECT ticker, count() AS trades
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'MSFT', 'KO')
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
GROUP BY ticker
)
SELECT
q.ticker AS ticker,
round(q.quote_messages / 1000, 1) AS quote_messages_thousands,
round(t.trades / 1000, 2) AS trades_thousands,
round(q.quote_messages / t.trades, 1) AS quotes_per_trade_ratio
FROM quote_load AS q
INNER JOIN trade_load AS t ON t.ticker = q.ticker
ORDER BY quotes_per_trade_ratio DESCSPY ilibeba trafiki nzito zaidi ya quote kwa kila print, 9.6 jumbe kwa kila biashara na 510 elfu jumbe katika dakika thelathini. Tofauti kati ya majina hayo matano ni kubwa: chini ya paneli, MSFT iliendesha 0.7 jumbe za quote kwa kila print, chini ya ujumbe mmoja kwa kila biashara. Kumbuka kile safu hiyo inahesabu: ngazi moja ya bei kila upande, kwenye feed ambayo tayari imekusanya kila soko kuwa bid na offer moja bora. Bidhaa ya kina ya ngazi kumi huzidisha hilo, na feed ya kila oda huzidisha tena, kwa sababu kila oda nyuma ya kila ngazi kwenye kila soko hutengeneza add yake, modify zake, na cancel zake, iwe inafanya biashara au la. Hesabu hiyo hiyo inaonekana kwa kiwango kikubwa katika ukubwa wa feed ya quote ya chaguzi.
Ni feed ipi ya kitabu cha oda ambayo mkakati unahitaji?
Kazi nyingi huendeshwa kwenye MBP-10. Chati za kina, vipengele vya kutokuwa na usawa, kipimo cha ukwasi-kwa-bei, mifano ya gharama ya utekelezaji, na karibu kila swali la utafiti kuhusu kiasi gani cha ukubwa kilikuwa wapi vinaweza kujibiwa kutoka kwa ngazi zilizojumlishwa, kwa sehemu ndogo ya kiasi cha ujumbe.
MBO ni hitaji wakati jibu linategemea oda maalum: nafasi katika foleni, muda wa kuishi wa oda, tabia ya kufuta, uwezekano wa utekelezaji tulivu kwenye mguso. Mkakati unaoishi au kufa kwa kama uko hisa mia mbili au elfu ishirini ndani ya mstari hauwezi kufika hapo kutoka kwa data iliyojumlishwa, na hulipia hilo katika ada za leseni, bandwidth, uhifadhi, na uhandisi wa kuweka kitabu kilichojengwa upya kuwa sahihi siku nzima.
Jinsi paneli hizi zilivyojengwa
- Feed iliyo nyuma ya kila paneli ni sehemu ya juu ya kitabu iliyojumlishwa, ngazi moja ya bei kila upande, pamoja na tape ya biashara. Sio feed ya kina na sio feed ya kila oda, kwa hivyo paneli hizi zinaonyesha hoja ya kiasi cha ujumbe badala ya kuchukua sampuli ya MBO yenyewe.
- Madirisha yamefungwa kwenye tarehe ya zamani iliyopangwa, 10:00 hadi 10:30 a.m. ET mnamo Juni 16, 2026, iliyohifadhiwa kama 14:00 hadi 14:30 UTC. Madirisha yaliyofungwa huweka namba kuwa thabiti katika uundaji upya.
- Paneli ya uainishaji huweka lebo kila ujumbe dhidi ya ule uliotangulia katika mfuatano. Haiwezi kutenganisha cancel kutoka kwa fill, kizuizi kamili ambacho chapisho hili kinaelezea.
FAQ
Kuna tofauti gani kati ya data ya soko ya MBO na MBP?
MBP, market by price, hujumlisha ukubwa unaoonekana katika kila ngazi ya bei na kutuma sasisho moja kwa kila ngazi. MBO, market by order, hutuma kila oda binafsi na ID yake, pamoja na matukio ya add, modify, cancel na fill yanayotokea kwake.
Je, data ya Level 2 ni sawa na data ya MBO?
Kwa kawaida siyo. "Level 2" kwa broker wa rejareja karibu kila mara inamaanisha kina kilichojumlishwa, kwa hivyo MBP yenye ngazi tano hadi ishirini za bei. Wauzaji wachache huuza feed ya kila oda chini ya jina la ngazi hiyo hiyo, kwa hivyo jina la schema, si jina la ngazi, ndilo linaloamua kile kinachofika kwenye waya.
Feed ya MBO ni kubwa kiasi gani kuliko feed ya MBP?
Ni kwa maagizo ya ukubwa (orders of magnitude), ikitofautiana kulingana na soko na alama. Sehemu ya juu ya kitabu iliyojumlishwa pekee iliendesha kwa 9.6 jumbe kwa kila print kwa jina lenye shughuli nyingi zaidi kwenye paneli hapo juu. Feed ya kila oda huongeza kila add, modify na cancel nyuma ya kila ngazi kwenye kila soko, ikijumuisha idadi kubwa ya oda ambazo hazifanyi biashara kamwe.
Je, unaweza kujenga upya kitabu cha MBP kutoka kwa data ya MBO?
Ndiyo, na huo ndio mtiririko wa kawaida: tumia kila tukio la oda kwenye kitabu kilichopangwa kwa ID ya oda, kisha chapisha jumla ya ngazi. Kinyume chake hakiwezekani: mara oda zinapojumlishwa kuwa jumla ya ngazi, ID binafsi na mpangilio wao wa kuwasili hupotea.
Kila paneli hapa inasafirishwa na SQL kamili iliyo chini yake. Ili kuhesabu jumbe zile zile kwenye alama au kikao tofauti, uliza swali kwa Kiingereza rahisi kwenye terminal ya Strasmore.