Order flow æ¹æ³è«ãOBI à CVD 4 象é
Order flow 4 象éã®ãœãŒã¹ã»ãµã€ãžã³ã°ã»èªã¿æ¹:æ·±ãããæŽŸçããæ¿æ å ±ãtaker ãã㌠CVDãããŒãªã³ã° P95 æ£èŠåããŸãŒã³åé¡ãHTF ã¬ãžãŒã ã鮮床èŠåã
ã©ã€ãã»ãŠã£ãžã§ãããèŠã: /perpetuals/positioning.
ããŒã¿ãœãŒã¹
4 象éã¯åŸ æ©æ·±ããš taker ãããŒã 4 ã€ã®ç¡æéååŒæãBinanceãBybitãOKXãHyperliquidããã䞡軞ã«ã€ããŠéèšããŸããã©ã³ã¿ã€ã ã¯å š Rust ã§ãhot path ã« Python ããŒã¢ã³ã¯ãããŸããã
- æ·±ãã€ã³ãžã§ã¹ãã
mt-ingestãã€ããªãåååŒæã®å ç©æ·±ããã£ãŒãã 7 è³ç£ãã¹ãŠã«ã€ããŠè³ŒèªããååŒæå¥ããã¯ãTOP_LEVELS_PER_SIDE = 200ã¬ãã«(ãµã€ãããã)ã§ç¶æããåããã¯ãprod:<venue>:<asset>:depthã«å ¬éããŸãããããååŒæå¥ããã¯ã OBI èšç®ãæ¯ããŸãã - Taker ãã㌠/ CVDã
mt-cvdãã€ããªãåååŒæã®çŽå®ã¹ããªãŒã ãã¯ãã¹ååŒæã®çŽå®ããŒã(prod:trades:*)ãšç¬Šå·ä»ãã©ã³ãã³ã° CVD(prod:*:cvd)ã«æ¶è²»ããŸããååŒæå¥ã® taker ãµã€ãã»ã»ãã³ãã£ã¯ã¹ã¯ãã®æ®µéã§æ£èŠåãããŸããBybitãOKXãHyperliquid ã¯æ»æåŽã Binance ãšç°ãªãæ¹æ³ã§ãšã³ã³ãŒããããã¹ãŠ 1 ã€ã®ç¬Šå·èŠçŽã«ããããããŸãã - ã¯ãã¹ååŒæéèšã
mt-aggdãã€ããªãååŒæå¥ããã¯ãšãããŒã 10 Hz ã§çµåããååŒæãã¹ã¿ã³ãããevent_tsã§ååŒæãæŽåãããããŒãžãããã¹ãããã·ã§ãããprod:agg:<asset>:*ã«å ¬éããŸãã - ãªãŒããŒã¬ã€ + ããŒã
mt-microstructureãã€ããªã OBI/CVD ãªãŒããŒã¬ã€(prod:agg:*:micro)ãèšç®ããåããã 1 ããŒãdata/<asset>/microstructure_bars.jsonl(ãã¬ã€ã«ã»ãã¹ããªãŒè¡šé¢)ã«æžããŸãã
ããã¯ãšã³ãã® /ws/market WebSocket 㯠~10 ç§ããšã«ã¹ãããã·ã§ããããè³ŒèªæãšãŠã£ã³ããŠå€æŽæã« trail/normaliser ãã¬ãŒã ãããã·ã¥ããŸãã
æ¿æ å ±(OBI)
OBI ã¯äžå€åšèŸºã®çã垯å ã®åŸ æ©æµåæ§åããæž¬å®ããŸãããŸãååŒæå¥ã«ãåååŒæèªèº«ã®ããã¯äžã§èšç®ãããã¯ãã¹ååŒæãã¬ã³ãã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã垯å€ã®ã¬ãã«ã¯é€å€ãã¹ãã¬ãããåãååŒã«åœ±é¿ããªãããã
mid = (best_bid + best_ask) / 2 // ååŒæå¥ band = [mid * 0.998, mid * 1.002] // ±0.2 % bid_qty = 垯å ã®ããã qty ã®åèš ask_qty = 垯å ã®ã¢ã¹ã¯ qty ã®åèš OBI = (bid_qty - ask_qty) / (bid_qty + ask_qty) ç¯å²: [-1, +1] +1 â ã¢ã¹ã¯ã空ãå šéã¿ããããã« -1 â ãããã空ãå šéã¿ãã¢ã¹ã¯ã« 0 â 垯å ãã©ã³ã¹
èšç®ã¯åž¯å
ã®åãµã€ãäžäœ 200 ã¬ãã«ãåããŸã(TOP_LEVELS_PER_SIDE = 200)ãããããããã X 軞ã¯äžã®ã¯ãã¹ååŒæãã¬ã³ãã§ããã®æ®µéã§ã¯å¹³æ»åãªãããŠã£ãžã§ãã㯠OBI ã©ãã«ã 3 æ¡ã®å°æ°ã§è¡šç€ºãã0.01 ã®åããèŠããããã«ããŸãã
ã¯ãã¹ååŒæ OBI éèš(flow-weighted)
åååŒæã®ååŒæå¥ OBI(äž)ã¯ããã®ååŒæã®çŽè¿ã® taker ãããŒã§éã¿ä»ãããåäžã®ã¯ãã¹ååŒæ OBI ã«çµåãããŸããflow-weighted (FW)ãé忣ã§ã¯ãããŸãããååŒæã®éã¿ã¯å®éã«çŽå®ãåºãŠããå Žæã远ããããéããªããã¯ã¯ã»ãšãã©å¯äžãããæŽ»çºãªããã¯ãã³ã³ã»ã³ãµã¹ãäž»å°ããŸãã
2026-05-26 ã«éèšã¯é忣éã¿ä»ã(IVW)ãã FW ã«åãæ¿ãããŸãããIVW ã§ã¯ Hyperliquid ããã¬ã³ããæ¯é
ããŠããŸãã:nSigFigs ã§éååããã(ç²ã)ããã¯ã¯äººçºçã«äœåæ£ã® OBI ãçã¿ãIVW ã¯èåŸã«ã©ãã ãå°ãããµã€ãºãããªããŠãé«ãéã¿ã§å ±ããŸããFlow-weighting ã¯éã¿ãå®çŸãããæ»æåŽããªã¥ãŒã ã«çµã³ä»ãããããç²ãéååã®ååŒæã¯ãã¯ãããŒãžãããèªã¿ãæ¯é
ã§ããŸããã
环ç©ããªã¥ãŒã ãã«ã¿(CVD)
CVD ã¯ããŒãªã³ã°ã»ãŠã£ã³ããŠå ã®ç¬Šå·ä»ã taker åç®ã 4 ååŒæãã¹ãŠã«ããã£ãŠåèšããŸãã笊å·èŠçŽã¯æ¥çã®ããŒãã»ãªãŒãã£ã³ã°æ £è¡ã«åŸããtaker è²·ãã¯äžã«ãtaker 売ãã¯äžã«ãåååŒæã®æ»æåŽã¯ã€ã³ãžã§ã¹ãã§æ£èŠåãã(BybitãOKXãHyperliquid 㯠Binance ãšç°ãªãæ¹æ³ã§ãšã³ã³ãŒã)ããã¹ãŠã®ããªã³ããåã笊å·ãå¯äžããŸãã
å taker ããªã³ã(ä»»æã®ååŒæ)ã«ã€ããŠ: notional = qty * price // USD æ»æåŽ == è²·ã ã®å Žå: delta = +notional // taker è²·ã ããã§ãªããã°: delta = -notional // taker 売ã (ts, delta) ã 2 æé deque ã«è¿œå cvd_30m_usd = Σ delta, ts â [now - 30m, now] cvd_2h_usd = Σ delta, ts â [now - 2h, now]
2 æé deque ã¯æé·ãã©ã€ãºã³ã30 åãŠã£ã³ããŠã¯æžã蟌ã¿ããšã«åããããã¡ããã¹ã©ã€ã¹ãbars ãã¡ã€ã«ã¯åããã 1 è¡ãšäž¡ãŠã£ã³ããŠãä¿æããåèµ·ååŸã«ãã¬ã€ã«ããã¹ããªãŒããªãã¬ã€ã§ããããã«ããŸãã4 ååŒæã®åç®ã¹ã«ãŒãããã¯ã¢ã¯ãã£ããã£ã«å¿ã㊠~40â200 prints/sã
Y 軞ããŒãã©ã€ã¶ãŒ
çã® 30 å CVD 倧ãã㯠BTC($1M ã¯ã©ã¹ã®åã)ãš ETHã»SOLã»å°èŠæš¡ããŒããã¥ã¢ã«éã§ 2 æ¡ã®å·®ããããŸããç USD ããããããããšå°ããªè³ç£ã¯ãã©ãããªã©ã€ã³ã«æŒã朰ãããŸãããããã£ãŠ Y 軞ã¯è³ç£å¥ã«ããŒãªã³ã° 7 æ¥ |cvd_30m_usd| P95 ã§å²ããçµæã [-1, +1] ã«ã¯ã©ã³ãããŸãã
y_norm = clamp(cvd_30m_usd / p95_30m_usd, -1, +1)
p95_30m_usd: ããŒãªã³ã° 7 æ¥ããŒã»ã³ã¿ã€ã«ãã¹ãããã·ã§ããã»ãšã³ããã€ã³ãã§æŽæ°
fallback: ããŒãªã³ã°ã»ããŒã»ã³ã¿ã€ã«ããŸã å©çšäžå¯ã®ãšã
(ã³ãŒã«ãã»ã¹ã¿ãŒããŸãã¯èããµã³ãã«)2_000_000 USD ã䜿çšãšã³ããã€ã³ã /api/market/cvd-normalizer?asset=⊠ãè³ç£å¥ P95 å€ãæäŸããWebSocket ã® normalizer ãã¬ãŒã ãšããŠãã©ãŒããããããFE ã¯ãã®å€ããã¬ã€ã«ã»ããŒã¿ã®åŸã«å°çãããšããã¬ã€ã«ãäžè²«ããŠåã¹ã±ãŒã«ã§ããŸãã
ãŸãŒã³åé¡(v2)
çã® 4 象éã«ãŒã«(OBI 笊å·ãCVD 笊å·)㯠sub-bp ãã€ãºã§å€å®ãã¡ãã€ããªãããã« 3 å±€ãã€ãã©ã€ã³ã§å ãŸããŠããŸããåå±€ãé æ¬¡çºç«ãã3 å±€ãã¹ãŠãééããä¿¡å·ã®ã¿ã衚瀺ããããŸãŒã³ãšãªããŸãã
å±€ 1ãOBI ã« EMA(CVD ã¯ãã§ã«ã¹ã©ã€ãã£ã³ã°ã»ãŠã£ã³ããŠéèš)
obi_ema(t) = α · obi_raw(t) + (1 - α) · obi_ema(t-1)
α = 1 - exp(-dt / span_seconds)
span_seconds 30m è³ç£å¥:BTC/ETH/SOL/DOGE 120s, BNB 60s, XRP 5s
å±€ 2ã倧ããããããã³ã(Schmitt-trigger äžé)
䞡軞ãšãããããã³ãå
â åè£ = "balanced"(ãã©ãããªåžå Ž:
|obi_ema| < OBI_DB ã〠|cvd| < CVD_DB_PCT à p95_30m_usdãã©ã¡ãã«ãåããªã)ã
ã¡ããã©äžè»žã®ã¿å
â çŸåšãŸãŒã³ãä¿æ(ææ§)ã
䞡軞ãšãå€ â åè£ = (obi_ema, cvd) ã® 4 象éã
OBI_DB è³ç£å¥:BTC 0.12, ETH 0.20, SOL 0.12, BNB 0.12, XRP 0.05, DOGE 0.20,
HYPE 0.10 (uncalibrated default)
CVD_DB_PCT è³ç£å¥ãããŒãªã³ã° |cvd_30m| p95 ã®å²å:
BTC 0.15, ETH 0.05, SOL 0.20, BNB 0.10, XRP 0.20, DOGE 0.20,
HYPE 0.15 (uncalibrated default)
å±€ 3ãæå°ãããŒ(Schmitt-trigger äžé)
æ°ããåè£ã¯çŸåšã«ãªãå㫠⥠MIN_TENURE_S æç¶ããå¿
èŠããããŸããããããã³ããžã®
äžåºŠã®ãã£ããã¯ãã¯ãæçäžã®åè£ãæ¶ããŸãããã¿ã€ããŒã¯é£ç¶ããŒã«ãã®æå€§ 3s
ã®ç¶äºãŸã§åç¶ããŸã(CVD ã¯å¹³æ»åãããŠããªã)ã
MIN_TENURE_S 30m ãã¬ã€ã« 300s(DOGE 30s); 4h 300s; 24h 1800sã4 ã€ã®æ¹åæ§è±¡éããããŠã©ã¡ãã®è»žã«ãåãããªããšãã® balanced ç¶æ :
x >= 0 ã〠y >= 0 â "è²·ãæåªå¢" x < 0 ã〠y < 0 â "売ãæåªå¢" x < 0 ã〠y >= 0 â "éèŠåžåäž" x >= 0 ã〠y < 0 â "æ¿ãæ¯æ" 䞡軞ãšãããããã³ãå â "Balanced"(æç¢ºãªæ¯é ãªã)
åè£ããããŒãæºããéäžã®ãšããFE ã¯å€å®ã®äžã«æç€ºç㪠candidate_pendingãµãã©ã€ã³ãã¬ã³ããªã³ã° (âå£²ãæ Â· 4m 22s æç¶ · è²·ãæåè£ 18s / 5mâ)ãã¯ã©ã·ãã¡ã€ã€ã¯ãã©ãã¯ããã¯ã¹ã§ã¯ãªãå¯èŠã¹ããŒãã»ãã·ã³ã
ãã©ã¡ãŒã¿ã¯è³ç£å¥ 7 æ¥ã°ãªããã»ã¹ã€ãŒã(scripts/replay_classifier.py)ãããã¥ãŒãã³ã°ãéžã°ããå€ã¯ backend/classifier/config.py ã«ååšããåãããã€ãªãã®ããããããçšã« env ãªãŒããŒã©ã€ã(äŸ:MICRO_DEADBAND_DOGE=0.20)å¯èœãç¶æ
(OBI EMAãåè£ã¿ã€ããŒãentered-at)ã¯ã¢ã°ãªã²ãŒã¿ãŒã»ãµã€ã¯ã«éã§ Redis ã«æ°žç¶åããããããããŒã¢ã³åèµ·åã¯ã³ãŒã«ãã»ã¹ã¿ãŒãã§ã¯ãªãåããŸãŒã³ããåéããŸãã
ãã¬ã€ã«ã»ãã¹ããªãŒ
ãã¬ã€ã«ã¯æè¿ N åã® 4 象éäœçœ®ã幎霢å¥ã«ãã§ãŒãããããªã©ã€ã³ã§æããŸããéžæå¯èœãªãŠã£ã³ããŠã¯ 30mã4hã24hãåãŠã£ã³ããŠã¯ bars ãã¡ã€ã«ããããŠã³ãµã³ããªã³ã°ãããã·ãŒã±ã³ã¹ãååŸãã24 æéãªãã¬ã€ã 1440 ã®çåãã¹ããªãŒã ããå¿
èŠããªãããã«ããŸã:
- 30 åã 1 åãã±ããã
- 4 æéã 5 åãã±ããã
- 24 æéã 30 åãã±ããã
FE ã¯ã¬ã³ããªã³ã°ããããã¬ã€ã«ã 60 ç¹ã«å¶éãã24 æéãŠã£ã³ããŠããªãŒããŒãããããªãã§åãŸãããã«ããŸããã©ã€ãã»ã¹ãããã·ã§ããã¯åããããã¡ã«è¿œå ããããã±ããã»ã·ãŒã±ã³ã¹ã®åŸã«çè·¡ãæ®ããŸããè³ç£åæ¿æã«ããŒã«ã«ã»ãããã¡ã¯ãªã»ãããããæ°ãã 4 象éãåã®è³ç£ã®ãã¬ã€ã«ã§æ±æãããªãããã«ããŸãã
HTF ã¬ãžãŒã ã»ã¿ã°
ãŠã£ãžã§ããã»ããããŒã® Trend BULL/BEAR/NEUTRAL ã¿ã°ã¯ scripts/btc_monitor.py(ç¶æããã cron writer)ã® htf_regime() ãã¹ãããã·ã§ãã cron ã® 5 åã±ã€ãã³ã¹ã§èšç®:
300 1 åãã£ã³ãã«ãååŸ(>= 289 æå¹ããŒãå¿ èŠ) pct_4h = (close - close_4h_ago) / close_4h_ago * 100 pct_24h = (close - close_24h_ago) / close_24h_ago * 100 BULL if pct_4h > +0.5 or pct_24h > +1.5 BEAR if pct_4h < -0.5 or pct_24h < -1.5 NEUTRAL ããã§ãªããã°(ãµã³ãã«äžè¶³æã)
ã¿ã°ã¯ HTF ã³ã³ããã¹ãã®ã¿ã§ããããŒã»ãªãŒãã£ã³ã°ã§ã¯ãããŸããã4 象éã®çãŠã£ã³ããŠå€å®(30 å CVD)ãè€æ°æéæ¹åã«å¯Ÿã㊠sanity ãã§ãã¯ã§ããããã«ååšããŸãã
Long/Short æ¯ç
L/S ã¹ã¿ãã㯠Binance ã® globalLongShortAccountRatio(15 åæé)ãã¹ãããã·ã§ãã cron ã ~5 åããšã«ããŒãªã³ã°ã1.0 äžã¯å°å£²ã¢ã«ãŠã³ã net longãäžã¯ net shortãããã¯ã¢ã«ãŠã³ãã®ããžã·ã§ãã³ã°ã§ãããŒã§ã¯ãªãã4 象éå¹³é¢ã§ã¯ãªã OBI ãš CVD ãšãšãã«ãµã€ãã»ããã«ã«äœçœ®ããŸãã
鮮床
鮮床ã¯ä»ãã¡ããã© 2 ã€ã®ããã¯ãšã³ãä¿¡å·ã ãããæ¥ãŸã: ã¢ã°ãªã²ãŒã¿ãŒã®çºè¡ã¿ã€ã ã¹ã¿ã³ã(micro_agg_ts_ms)ãšãRedis ã® depth/CVD ããŒããã©ã€ãç®åºããã venue å¥ã¹ããŒã¿ã¹(micro_venue_status)ããŠã£ãžã§ãããå®å
šãªã©ã€ãã§ã¯ãªããšããŒã¯ãããæ¡ä»¶ã¯ 4 ã€ã§ã:
micro_agg_ts_msãç»é¢ããšã®éŸå€ããå€ããWebSocket ã§æµãããã®ã¬ãŒããŒã§ã¯ 5 ç§ãREST ã§ããŒãªã³ã°ããã¹ã³ã¢ããŒãã§ã¯ 20 ç§ããã®å¹Žéœ¢ãè¶ ãããšã¹ããŒã¿ã¹ pill ãSTALEã«åãæ¿ãããmicro_venue_statusããã軞ã§äžéšã® venue ã®ã¿å¥å šãšç€ºããOBI 㯠depth ã§ãCVD ã¯ãã¬ãŒãã»ããŒãã§å€å®ããããããã venue ã depth ã§ã¯çããŠã㊠tape ã§ã¯æ»ãã§ããããšããããpill ã¯ã«ãã¬ããžãDEGRADED N/MãšããŠè¡šç€ºãããã¹ããŒã¿ã¹ãå šãç¡ã venue ã¯å¥å šã§ã¯ãªãé€å€ãšããŠæ°ããããã- CVD 軞ã§äžå¥å
šãª venue å
šãŠããŸã ãŠã£ã³ããŠãå
å¡«äž(æ°èŠéå§ãŸãã¯åæ¥ç¶ã§ãé害ã§ã¯ãªã)ãpill 㯠unavailable ã®ä»£ããã«
WARMINGã衚瀺ããã - ãã¬ã€ã«ã
partial: trueããŒã¯ããŠã£ã³ããŠãæ¯ãã jsonl ãèŠæ±ããã lookback ããçã(ããŒã¢ã³åèµ·åçŽåŸã«äžè¬ç)ããã£ã³ãã¹ã«ã¢ã³ã㌠pill ã衚瀺ãããã
éç
- ã¯ãã¹ååŒæã®æéã¹ãã¥ãŒã ã¢ã°ãªã²ãŒã¿ãŒã¯ååŒæãã¹ã¿ã³ããã
event_tsã§ååŒæãçµåããŸããã10 Hz ã§ã¯ã¢ã©ã€ã¡ã³ãã»ãŠã£ã³ããŠã¯ ~100 ms ãããããŸãããéãåãã®éãåãäŸ¡æ Œã€ãã³ããååŒæããšã«é£æ¥ããã¹ãããã·ã§ããã«èœã¡ãããšããããåäžãã¬ãŒã ã®ã¯ãã¹ååŒæ OBI ãäžæçã«èªå·±ççŸããããšããããŸãã - ç²ãéååã®ååŒæã Hyperliquid ã¯
nSigFigsã§éååãããããã¯ãå ¬éãããããååŒæå¥ OBI ã¯ç²ãã§ããFlow-weighting(2026-05-26 ã«é忣éã¿ä»ãã眮æ)ã¯ããããã¬ã³ããã©ãã ãåãããããå¶éããŸãããäŸç¶ãšããŠã³ã³ã»ã³ãµã¹ã«å ¥ããŸããHL ã®å¯äžã¯ç²Ÿå¯ã§ã¯ãªãæ¹åæ§ãšããŠèªãã§ãã ããã - ±0.2 % 垯ã¯åºå®ããã OBI 垯ã¯å šè³ç£ã»å šååŒæã§åãå¹ ãã¿ã€ãã»ã¹ãã¬ããã®ã¡ãžã£ãŒ(BTCãETH)ã¯èãããã¯ã®ã¢ã«ããã垯å ã§æ·±ãããã¯ãèŠãŸããããã CVD ãäžæ¬¡å€å®ã§ OBI ãè£å©è»žã§ããçç±ã® 1 ã€ã
- L/S 㯠Binance ã®å°å£²ããžã·ã§ãã³ã°ã æ¯ç㯠Binance ã®ã¢ã«ãŠã³ããæ°ãã¯ãã¹ååŒæéèšã§ã¯ãªãããã¹ãŠã®ã¢ã«ãŠã³ãããµã€ãºã«é¢ä¿ãªãåçéã¿ä»ãããããŒå ¥åã§ã¯ãªããœãããªã³ã³ããã¹ããšããŠäœ¿çšããŠãã ããã
- HTF ã¬ãžãŒã ã¯å šè³ç£ã« BTC ã¹ã¿ã€ã«éŸå€äœ¿çšã 4h ±0.5 % / 24h ±1.5 % éŸå€ã¯ BTC ã«å¯ŸããŠãã¥ãŒãã³ã°ããããé«ãã©è³ç£(DOGEãSOL)ã§ã¯ BULL/BEAR ãçŽæããæ©ãçºç«ãã¿ã°ããã£ãªãã¬ãŒã·ã§ã³ããããã¬ã³ãã»ãã£ã«ã¿ãŒã§ã¯ãªãç²ãã³ã³ããã¹ããšããŠæ±ã£ãŠãã ããã
- 4 象éã¯èšè¿°çã§äºæž¬çã§ã¯ãªãã çŸåšã®æ¿ãš taker å§åãèªã¿åããã®ã§ã次ã®åãã®äºå ±ã§ã¯ãããŸããããŸãŒã³ãä»ãããŒãããå Žæã®ã¹ãããã·ã§ãããšããŠæ±ã£ãŠãã ããã
ããŒãžã§ã³ç®¡ç
æ¹æ³è«ããŒãžã§ã³ v2.0.0 · æŽæ° 2026-07-04ãéèŠãªå€æŽ(ååŒæè¿œå ãå ¬åŒåŸ®èª¿æŽãéŸå€å€æŽ)ã¯ããŒãžã§ã³ãäžããäžã®æ§é åããŒã¿ã® dateModified ãæŽæ°ã