mylittleindicators 0.1.8

Multi-stream financial indicators library — 556 bar indicators + 21 event primitives across 35 categories. Consumes 27 stream kinds from digdigdig3 exchange connectors: OHLCV bars, ticks, orderbook (snapshot/delta/L3), funding/predicted funding/funding settlement, mark price, index price, open interest, liquidations, ticker, agg trades, long/short ratio, option greeks, volatility index, historical volatility, basis (derived), composite index, settlement events, block trades, insurance fund, risk limit, market warning, and three kline-family variants. Live-verified on 12 exchanges (89% pass-rate on a 150s BTC slice).
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
//! High-performance mapping factory for all bar indicators (NO allocations, NO logic, just static mapping)
//! Usage: BAR_INDICATOR_MAP.get("sma") -> Some(BarIndicatorId::Sma

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, strum::EnumIter)]
pub enum BarIndicatorId {

    // Average (23 indicators) - Legacy Ama/Wma/Hma replaced by optimized O(1) versions
    Alma,  // ALMA
    Ama,  // AMA (O(1) ring window ER - was Amaring)
    AvFrama,  // AV_FRAMA
    AvVidya,  // AV_VIDYA
    Dema,  // DEMA
    Ehlersfa,  // EHLERSFA
    Ehlersz,  // EHLERSZ
    Ema,  // EMA
    Framaadv,  // FRAMAADV
    Hma,  // HMA (O(1) composite - was Hmafast)
    Jma,  // JMA
    Lr,  // LR
    Mcginley,  // MCGINLEY
    Rma,  // RMA
    Sma,  // SMA
    T3,  // T3
    Tema,  // TEMA
    Tma,  // TMA
    Trima,  // TRIMA
    Vwap,  // VWAP
    Vwma,  // VWMA
    Wma,  // WMA (O(1) running sums - was Wmafast)

    // Momentum (114 indicators)
    AdaptiveStoch,  // ADAPTIVE_STOCH
    Adx,  // ADX
    DiPlusMinus,  // DI_PLUS_MINUS (+DI/-DI from ADX)
    Amat,  // AMAT
    Apo,  // APO
    Aroon,  // AROON
    AroonDown,  // AROON_DOWN
    AroonOsc,  // AROON_OSC
    AroonUp,  // AROON_UP
    AtrRsi,  // ATR_RSI
    BbPeriod,  // BB_PERIOD
    Bias,  // BIAS
    Bop,  // BOP
    Cci,  // CCI
    Cfo,  // CFO
    Cmo,  // CMO
    Cog,  // COG
    ConnorsRsi,  // CONNORS_RSI
    Coppock,  // COPPOCK
    Demarker,  // DEMARKER
    Dm,  // DM
    Dpo,  // DPO
    DpoPct,  // DPO_PCT
    Dsp,  // DSP
    Dss,  // DSS
    EhlersCc,  // EHLERS_CC
    EhlersRocket,  // EHLERS_ROCKET
    ElderImpulse,  // ELDER_IMPULSE
    ElderRay,  // ELDER_RAY
    EmaSlope,  // EMA_SLOPE
    Ewmac,  // EWMAC
    EwmacRobust,  // EWMAC_ROBUST
    Gapo,  // GAPO
    Gator,  // GATOR
    Highest,  // HIGHEST
    IftRsi,  // IFT_RSI
    Imi,  // IMI
    Kdj,  // KDJ
    Kst,  // KST
    Kvo,  // KVO
    Lowest,  // LOWEST
    Macd,  // MACD
    MacdHist,  // MACD_HIST
    MacdHistZ,  // MACD_HIST_Z
    MacdSignal,  // MACD_SIGNAL
    MarketCipher,  // MARKET_CIPHER
    MoFisher,  // MO_FISHER
    MoObv,  // MO_OBV
    MomZscore,  // MOM_ZSCORE

    NeuralMom,  // NEURAL_MOM
    Pfe,  // PFE
    Pmo,  // PMO
    Ppo,  // PPO
    PpoSignal,  // PPO_SIGNAL
    Pressure,  // PRESSURE
    Psar,  // PSAR
    Psl,  // PSL
    Qqe,  // QQE
    Qstick,  // QSTICK
    Rmi,  // RMI
    Roc,  // ROC
    RocPct,  // ROC_PCT
    Rsi,  // RSI
    RsiPctBands,  // RSI_PCT_BANDS
    RsiPctRank,  // RSI_PCT_RANK
    RsiZscore,  // RSI_ZSCORE
    Rsioma,  // RSIOMA
    Rsx,  // RSX
    Rvgi,  // RVGI
    Rwi,  // RWI
    Smi,  // SMI
    Stc,  // STC
    Stoch,  // STOCH
    StochRsi,  // STOCH_RSI
    Stochkd,  // STOCHKD
    SweepRev,  // SWEEP_REV
    SwingAge,  // SWING_AGE
    Tdi,  // TDI
    Trix,  // TRIX
    Tsi,  // TSI
    Uo,  // UO
    UoSmooth,  // UO_SMOOTH
    Vhf,  // VHF
    VhfMa,  // VHF_MA
    Vortex,  // VORTEX
    Vwrsi,  // VWRSI
    WilliamsR,  // WILLIAMS_R

    // Signal Processing (84 indicators)
    Autocorr,  // AUTOCORR
    Butter,  // BUTTER
    Cheby,  // CHEBY
    Cusum,  // CUSUM
    Cyber,  // CYBER
    Decyc,  // DECYC
    Esine,  // ESINE
    Ess,  // ESS
    Fft,  // FFT
    Hampel,  // HAMPEL
    Hdc,  // HDC
    Hilb,  // HILB
    Hmom,  // HMOM
    Hyst,  // HYST
    Logicand,  // LOGICAND - AND Logic Gate
    Logicor,  // LOGICOR - OR Logic Gate
    Logicxor,  // LOGICXOR - XOR Logic Gate
    Logicsign,  // LOGICSIGN - Sign Combiner
    Lz,  // LZ
    Mrf,  // MRF
    Rc,  // RC
    Roof,  // ROOF
    Sbp,  // SBP
    Sbprhl,  // SBPRHL
    Sbwf,  // SBWF
    Scf,  // SCF
    Screst,  // SCREST
    Screstp,  // SCRESTP
    Sent,  // SENT
    Sentent,  // SENTENT
    Sentr,  // SENTR
    Ser,  // SER
    Sflat,  // SFLAT
    Sflatp,  // SFLATP
    Sflux,  // SFLUX
    Sg,  // SG
    Shmpr,  // SHMPR
    Slmpr,  // SLMPR
    Sroll,  // SROLL
    Sroll95,  // SROLL95
    Srollp,  // SROLLP
    Srollrp,  // SROLLRP
    Sslope,  // SSLOPE
    Sslopep,  // SSLOPEP
    Ssloperp,  // SSLOPERP
    Sslopez,  // SSLOPEZ
    Stft,  // STFT
    Tenc,  // TENC
    Thresh,  // THRESH
    Wave,  // WAVE
    Wcomp,  // WCOMP
    Zmad,  // ZMAD

    // Channels (72 indicators)
    Adaptivebb,  // ADAPTIVEBB
    Adaptivechan,  // ADAPTIVECHAN
    Atrchan,  // ATRCHAN
    Bb,  // BB
    Bbmetrics,  // BBMETRICS
    Darvas,  // DARVAS
    Dc,  // DC
    Dcmetrics,  // DCMETRICS
    Dcpos,  // DCPOS
    Dcwidth,  // DCWIDTH
    Dpobands,  // DPOBANDS
    Envbw,  // ENVBW
    Envelope,  // ENVELOPE
    Ichimoku,  // ICHIMOKU
    Ichimokupos,  // ICHIMOKUPOS
    Ichimokuthick,  // ICHIMOKUTHICK
    Kc,  // KC
    Kcmetrics,  // KCMETRICS
    Keltbw,  // KELTBW
    Keltdist,  // KELTDIST
    Keltpos,  // KELTPOS
    Medchan,  // MEDCHAN
    Medchanpos,  // MEDCHANPOS
    Pchosc,  // PCHOSC
    Pchwidth,  // PCHWIDTH
    Percentb,  // PERCENTB
    Percentilech,  // PERCENTILECH
    Pivotchan,  // PIVOTCHAN
    Pricechan,  // PRICECHAN
    Projbands,  // PROJBANDS
    Qrchan,  // QRCHAN
    Regchan,  // REGCHAN
    Regchanwidth,  // REGCHANWIDTH
    Starc,  // STARC
    Stddevchan,  // STDDEVCHAN
    Stddevwidth,  // STDDEVWIDTH
    Theilsenchan,  // THEILSENCHAN
    Trimabands,  // TRIMABANDS
    Volprofchan,  // VOLPROFCHAN
    Vwapchan,  // VWAPCHAN
    Vwapchanwidth,  // VWAPCHANWIDTH

    // Volatility (52 indicators)
    Abb,  // ABB
    Atr,  // ATR
    Atrbw,  // ATRBW
    Atrc,  // ATRC
    Atrp,  // ATRP
    Atrpt,  // ATRPT
    Atrz,  // ATRZ
    Avr,  // AVR
    Bpv,  // BPV
    C2cvp,  // C2CVP
    Chop,  // CHOP
    Cv,  // CV
    Dvr,  // DVR
    Fuzzy,  // FUZZY
    Har,  // HAR
    Hvc2c,  // HVC2C
    Kp,  // KP
    Natr,  // NATR
    Nr,  // NR
    Pgry,  // PGRY
    Rbvj,  // RBVJ
    Rcb,  // RCB
    Rp,  // RP
    Rq,  // RQ
    Rv,  // RV
    Rvi,  // RVI
    Rvz,  // RVZ
    Sqmom,  // SQMOM
    Tr,  // TR
    Ui,  // UI
    Vbd,  // VBD
    Vbexp,  // VBEXP
    VoDc,  // VO_DC
    VoKc,  // VO_KC
    VoMi,  // VO_MI
    VoVr,  // VO_VR
    Vov,  // VOV
    Vovp,  // VOVP
    Vovpt,  // VOVPT
    Vprb,  // VPRB
    Wvf,  // WVF

    // Levels (27 indicators)
    Avwap,  // AVWAP
    Avwaprev,  // AVWAPREV
    Avwaptouch,  // AVWAPTOUCH
    Bos,  // BOS
    Camarilla,  // CAMARILLA
    Demark,  // DEMARK
    Floorpivot,  // FLOORPIVOT
    Fvg,  // FVG
    Fvgalt,  // FVGALT
    Fvgdur,  // FVGDUR
    Fvgrev,  // FVGREV
    Hlva,  // HLVA
    Liqgap,  // LIQGAP
    Pivavwap,  // PIVAVWAP
    Pivot,  // PIVOT
    Rmid,  // RMID
    Rquart,  // RQUART
    Swingstr,  // SWINGSTR
    Woodie,  // WOODIE

    // Candles (4 indicators)
    Candleanatomy,  // CANDLEANATOMY
    Heikinashi,  // HEIKINASHI
    Wickspike,  // WICKSPIKE (StatisticalWickDetector)

    // Volume (27 indicators)
    Cvd,  // CVD — Cumulative Volume Delta (rolling)
    Mfi,  // MFI
    NviPvi,  // NVI_PVI
    Poc,  // POC
    Pvo,  // PVO
    Pvt,  // PVT
    Pzo,  // PZO
    Rvol,  // RVOL
    Rvp,  // RVP — Rolling Volume Profile (POC/VAH/VAL, Triple)
    SessionVwap,  // SESSION_VWAP
    Vdelta,  // VDELTA
    Vfi,  // VFI
    Vo,  // VO
    Vpin,  // VPIN
    Vprofile,  // VPROFILE
    Vpt,  // VPT
    Vroc,  // VROC
    Vz,  // VZ
    Vzo,  // VZO
    TradeFlowImbalance,  // TRADE_FLOW_IMBALANCE
    UptickDowntickVolume,  // UPTICK_DOWNTICK_VOLUME
    AggressorImbalance,  // AGGRESSOR_IMBALANCE
    LargeTradeFilter,  // LARGE_TRADE_FILTER

    // Trend (19 indicators)
    AdxSlope,  // ADX_SLOPE
    Didi,  // DIDI
    Eit,  // EIT
    GannHilo,  // GANN_HILO
    Gmma,  // GMMA
    HaTrend,  // HA_TREND
    KamaSlope,  // KAMA_SLOPE
    LrSlope,  // LR_SLOPE
    Ravi,  // RAVI
    Sdl,  // SDL
    Ssl,  // SSL
    Supertrend,  // SUPERTREND
    Tii,  // TII
    TrEr,  // TR_ER
    Zlsma,  // ZLSMA

    // Accumulation (20 indicators)
    Ad,  // AD
    Asi,  // ASI
    Cho,  // CHO
    Cmf,  // CMF
    Di,  // DI
    Eom,  // EOM
    Fi,  // FI
    Ii,  // II
    Iip,  // IIP
    Iir,  // IIR
    Obv,  // OBV
    Tmf,  // TMF
    Wad,  // WAD

    // Adaptive (7 indicators)
    Adaptivema,  // ADAPTIVEMA
    Frama,  // FRAMA
    Kama,  // KAMA
    Mama,  // MAMA
    Vidya,  // VIDYA

    // Entropy (20 indicators)
    Apen,  // APEN
    Conden,  // CONDEN
    Fisher,  // FISHER
    Infog,  // INFOG
    Jsd,  // JSD
    Kld,  // KLD
    Mi,  // MI
    Pe,  // PE
    Sampen,  // SAMPEN
    Shannon,  // SHANNON
    Te,  // TE
    Xmil,  // XMIL

    // Kalman (15 indicators)
    Abgfilter,  // ABGFILTER
    Ekf,  // EKF
    Kalman,  // KALMAN
    Kcomp,  // KCOMP
    Kregime,  // KREGIME
    Kscr,  // KSCR
    Kslope,  // KSLOPE
    Kslopez,  // KSLOPEZ
    Particle,  // PARTICLE
    Rts,  // RTS
    Ukf,  // UKF

    // Trend Stop (21 indicators)
    Atrts,  // ATRTS
    Chand,  // CHAND
    Cks,  // CKS
    Donbo,  // DONBO
    Dons,  // DONS
    Kelts,  // KELTS
    Psars,  // PSARS
    Supts,  // SUPTS
    TsSwings,  // TS_SWINGS
    Volts,  // VOLTS
    VoltsAtr,  // VOLTS_ATR

    // Chaos (18 indicators)
    Ac,  // AC
    Alligator,  // ALLIGATOR
    Ao,  // AO
    ChaosOsc,  // CHAOS_OSC
    Dfa,  // DFA
    DfaPct,  // DFA_PCT
    FractalDim,  // FRACTAL_DIM
    Fractals,  // FRACTALS
    Hurst,  // HURST
    HurstPct,  // HURST_PCT
    WilliamsMfi,  // WILLIAMS_MFI

    // Regression (7 indicators)
    Arima,  // ARIMA
    Arimax,  // ARIMAX
    Egarch,  // EGARCH
    Garch,  // GARCH
    PolyReg,  // POLY_REG
    Var,  // VAR

    // Ratio (4 indicators)
    Er,  // ER
    ErRing,  // ER_RING
    RangeAtr,  // RANGE_ATR
    SpreadAnalyzer,  // SPREAD_ANALYZER

    // Tick Advanced (8 indicators)
    VwapDeviation,                   // VWAP_DEVIATION
    TradeRunDetector,                // TRADE_RUN_DETECTOR
    SizeWeightedDirectionalMomentum, // SIZE_WEIGHTED_DIRECTIONAL_MOMENTUM
    TickFrequencyAnomaly,            // TICK_FREQUENCY_ANOMALY
    AggressorBurstDetector,          // AGGRESSOR_BURST_DETECTOR
    LargeTickMomentum,               // LARGE_TICK_MOMENTUM
    ValueAreaTracker,                // VALUE_AREA_TRACKER
    VolumeImbalanceZone,             // VOLUME_IMBALANCE_ZONE

    // Clusters (11 indicators)
    ClQueueImb,  // CL_QUEUE_IMB
    MarketMicro,  // MARKET_MICRO
    OrderBookSlope,  // ORDER_BOOK_SLOPE
    OrderFlowImb,  // ORDER_FLOW_IMB
    TickVolume,  // TICK_VOLUME
    VwapLevels,  // VWAP_LEVELS
    FootprintChart,  // FOOTPRINT_CHART
    FootprintImbalance,  // FOOTPRINT_IMBALANCE
    FootprintPoc,  // FOOTPRINT_POC
    AbsorptionDetector,  // ABSORPTION_DETECTOR
    TradeClusterDetector,  // TRADE_CLUSTER_DETECTOR

    // Position (19 indicators)
    AvwapDist,  // AVWAP_DIST
    Cpr,  // CPR
    DayWeekMonth,  // DAY_WEEK_MONTH
    DistLevels,  // DIST_LEVELS
    DomWoq,  // DOM_WOQ
    HolidayProx,  // HOLIDAY_PROX
    HourDay,  // HOUR_DAY
    MonthQtr,  // MONTH_QTR
    MonthTurn,  // MONTH_TURN
    QtrTurn,  // QTR_TURN
    RelTrendPos,  // REL_TREND_POS
    Session,  // SESSION
    SomEom,  // SOM_EOM
    SoqEoq,  // SOQ_EOQ
    SowEow,  // SOW_EOW
    VwapDist,  // VWAP_DIST
    WeekMonth,  // WEEK_MONTH
    Weekday,  // WEEKDAY

    // Statistics (29 indicators)
    Adf,  // ADF
    AdfKpss,  // ADF_KPSS
    ArchLm,  // ARCH_LM
    ArchLmPval,  // ARCH_LM_PVAL
    BpCusum,  // BP_CUSUM
    Coint,  // COINT
    EgAdf,  // EG_ADF
    EgCoint,  // EG_COINT
    EgTrend,  // EG_TREND
    HalfLifeMr,  // HALF_LIFE_MR
    Kpss,  // KPSS
    KpssTrend,  // KPSS_TREND
    KpssZ,  // KPSS_Z
    LjungBox,  // LJUNG_BOX
    Pacf,  // PACF
    Pp,  // PP
    PriceZscore,  // PRICE_ZSCORE
    PvCoherence,  // PV_COHERENCE
    RSquared,  // R_SQUARED
    ResidStat,  // RESID_STAT
    StCusum,  // ST_CUSUM
    Vr,  // VR
    VrAgg,  // VR_AGG
    VrZAgg,  // VR_Z_AGG
    Za,  // ZA

    // Book (11 indicators)
    BookImb,  // BOOK_IMB
    BookMicroprice,  // BOOK_MICROPRICE
    BookSlope,  // BOOK_SLOPE
    Ofi,  // OFI
    QueueImb,  // QUEUE_IMB
    LiquiditySweep,  // BOOK_LIQUIDITY_SWEEP
    BookPressure,  // BOOK_PRESSURE
    SpreadDistribution,  // BOOK_SPREAD_DIST
    OrderBookVelocity,  // BOOK_OBV
    WallDetector,  // WALL_DETECTOR
    BookDepthChange,  // BOOK_DEPTH_CHANGE

    // Book delta indicators (3 — consume OrderbookDelta)
    IcebergDetector,  // ICEBERG_DETECTOR
    LevelReplenishRate,  // LEVEL_REPLENISH_RATE
    BookChurnRate,  // BOOK_CHURN_RATE

    // Hybrid Tick+Book indicators (3 — consume Tick + OrderBook together)
    HiddenLiquidityDetector,  // HIDDEN_LIQUIDITY_DETECTOR
    TradeBookAbsorption,  // TRADE_BOOK_ABSORPTION
    SweepImpactAnalyzer,  // SWEEP_IMPACT_ANALYZER

    // Book Advanced (6 — consume OrderBook L2 snapshots)
    BidAskAsymmetry,      // BID_ASK_ASYMMETRY
    BidAskBounceRate,     // BID_ASK_BOUNCE_RATE
    MidPriceVelocity,     // MID_PRICE_VELOCITY
    BestLevelVolatility,  // BEST_LEVEL_VOLATILITY
    LayerConcentration,   // LAYER_CONCENTRATION
    PriceLevelDensity,    // PRICE_LEVEL_DENSITY

    // Funding / OI indicators (3 — consume FundingRate / OpenInterest)
    FundingMomentum,  // FUNDING_MOMENTUM
    FundingZScore,  // FUNDING_ZSCORE
    OiChangeRate,  // OI_CHANGE_RATE
    FundingPriceDivergence,  // FUNDING_PRICE_DIVERGENCE

    // Open Interest indicators (5 — consume OpenInterest / OpenInterest+MarkPrice)
    OiZScore,              // OI_Z_SCORE
    OiMomentum,            // OI_MOMENTUM
    OiPercentile,          // OI_PERCENTILE
    LongSqueezeDetector,   // LONG_SQUEEZE_DETECTOR
    OiPriceCorrelation,    // OI_PRICE_CORRELATION

    // MarkPrice indicators (2 — consume MarkPrice)
    MarkPriceVsLast,  // MARK_PRICE_VS_LAST
    IndexPriceMomentum,  // INDEX_PRICE_MOMENTUM

    // MarkPrice advanced (3 — consume MarkPrice)
    MarkPriceMomentum,           // MARK_PRICE_MOMENTUM
    MarkPriceVolatility,         // MARK_PRICE_VOLATILITY
    MarkPriceGapDetector,        // MARK_PRICE_GAP_DETECTOR

    // Ticker indicators (3 — consume Ticker / 24h stats)
    Volume24hMomentum,  // VOLUME_24H_MOMENTUM
    HighLowRangeRatio,  // HIGH_LOW_RANGE_RATIO
    PriceChange24hZScore,  // PRICE_CHANGE_24H_ZSCORE

    // Liquidation indicators (7 — consume Liquidation events)
    LiquidationRate,  // LIQUIDATION_RATE
    LiquidationVolumeImbalance,  // LIQUIDATION_VOLUME_IMBALANCE
    LiquidationCascade,  // LIQUIDATION_CASCADE
    LiquidationVolumeVelocity,  // LIQUIDATION_VOLUME_VELOCITY
    StopHuntDetector,  // STOP_HUNT_DETECTOR
    LiquidationClusterDetector,  // LIQUIDATION_CLUSTER_DETECTOR
    LiquidationCooldown,  // LIQUIDATION_COOLDOWN

    // Ohlcv Average (15 indicators) - REMOVED
    // All OHLCV variants replaced by MovingAverageWithField
    // Use: MovingAverageWithField::new(MovingAverageType, period, OhlcvField)

    // Sentiment indicators (5 — consume LongShortRatio / AggTrade streams)
    LongShortRatioMomentum,     // LONG_SHORT_RATIO_MOMENTUM
    LongShortExtremeDetector,   // LONG_SHORT_EXTREME_DETECTOR
    RatioVsPriceDivergence,     // RATIO_VS_PRICE_DIVERGENCE
    AggTradeFlowImbalance,      // AGG_TRADE_FLOW_IMBALANCE
    AggTradeSizeDistribution,   // AGG_TRADE_SIZE_DISTRIBUTION

    // Index/Basis indicators (6 — consume IndexPrice, CompositeIndex, Basis)
    PriceVsIndexSpread,          // PRICE_VS_INDEX_SPREAD
    IndexComponentDrift,         // INDEX_COMPONENT_DRIFT
    IndexCorrelationBreakdown,   // INDEX_CORRELATION_BREAKDOWN
    BasisMomentum,               // BASIS_MOMENTUM
    BasisExtreme,                // BASIS_EXTREME
    BasisZScore,                 // BASIS_Z_SCORE

    // Volatility advanced indicators (4 — consume HistoricalVolatility, VolatilityIndex)
    HvMomentum,                  // HV_MOMENTUM
    HvSpike,                     // HV_SPIKE
    VolIdxSpike,                 // VOL_IDX_SPIKE
    VolIdxMomentum,              // VOL_IDX_MOMENTUM

    // Greeks indicators (3 — consume OptionGreeks)
    DeltaExposureFlow,           // DELTA_EXPOSURE_FLOW
    GammaSqueezeDetector,        // GAMMA_SQUEEZE_DETECTOR
    IvSkew,                      // IV_SKEW

    // Greeks advanced (4 — consume OptionGreeks)
    CharmTracker,                // CHARM_TRACKER
    VegaExposureFlow,            // VEGA_EXPOSURE_FLOW
    ThetaDecayTracker,           // THETA_DECAY_TRACKER
    PinRiskDetector,             // PIN_RISK_DETECTOR

    // Stress indicators (6 — consume InsuranceFund / SettlementEvent / MarkPrice)
    FundDepletionRate,           // FUND_DEPLETION_RATE
    FundStressDetector,          // FUND_STRESS_DETECTOR
    InsuranceFundMomentum,       // INSURANCE_FUND_MOMENTUM
    SettlementApproachSignal,    // SETTLEMENT_APPROACH_SIGNAL
    SettlementPriceMomentum,     // SETTLEMENT_PRICE_MOMENTUM
    SettlementVsMarkSpread,      // SETTLEMENT_VS_MARK_SPREAD

    // Microstructure indicators (9 — consume BlockTrade / OrderbookL3 / OrderbookDelta)
    BlockTradeFlow,              // BLOCK_TRADE_FLOW
    BlockTradeImpact,            // BLOCK_TRADE_IMPACT
    L3OrderRate,                 // L3_ORDER_RATE
    L3LargeOrderTracker,         // L3_LARGE_ORDER_TRACKER
    L3CancelRatio,               // L3_CANCEL_RATIO
    BlockTradeSizeAnomaly,       // BLOCK_TRADE_SIZE_ANOMALY
    QuoteStuffingDetector,       // QUOTE_STUFFING_DETECTOR
    L3SpooferScore,              // L3_SPOOFER_SCORE
    QuoteLifecycleTracker,       // QUOTE_LIFECYCLE_TRACKER

    // Risk indicators (3 — consume RiskLimit)
    LeverageReductionWarning,    // LEVERAGE_REDUCTION_WARNING
    MmrTracker,                  // MMR_TRACKER
    RiskLimitProximity,          // RISK_LIMIT_PROXIMITY

    // Funding indicators (5 — consume PredictedFunding / FundingRate / FundingSettlement / MarkPrice)
    FundingDrift,                // FUNDING_DRIFT
    FundingTimeDecay,            // FUNDING_TIME_DECAY
    PredictedFundingExtreme,     // PREDICTED_FUNDING_EXTREME
    SettledFundingMomentum,      // SETTLED_FUNDING_MOMENTUM
    FundingSettlementImpact,     // FUNDING_SETTLEMENT_IMPACT

    // Funding advanced (3 — consume FundingRate)
    AnnualizedFundingRate,       // ANNUALIZED_FUNDING_RATE
    FundingDirectionShift,       // FUNDING_DIRECTION_SHIFT
    FundingExtremeAlert,         // FUNDING_EXTREME_ALERT

    // Misc indicators (5 — consume AuctionEvent / MarketWarning)
    AuctionLiquidityScore,       // AUCTION_LIQUIDITY_SCORE
    AuctionPriceDeviation,       // AUCTION_PRICE_DEVIATION
    AuctionImbalance,            // AUCTION_IMBALANCE
    WarningRate,                 // WARNING_RATE
    WarningFrequencyFilter,      // WARNING_FREQUENCY_FILTER

    // Ticker advanced indicators (2 — consume Ticker)
    TickerSpreadRatio,           // TICKER_SPREAD_RATIO
    Volume24hZScore,             // VOLUME_24H_Z_SCORE

    // Cross-stream composite indicators (8 — consume 2-3 streams simultaneously)
    FundingOiPressure,           // FUNDING_OI_PRESSURE (FundingRate + OI)
    IvHvSpread,                  // IV_HV_SPREAD (VolatilityIndex + HistoricalVolatility)
    SqueezeProbability,          // SQUEEZE_PROBABILITY (OI + MarkPrice + Liquidation)
    FundingSentimentAlignment,   // FUNDING_SENTIMENT_ALIGNMENT (FundingRate + LongShortRatio)
    VolRegimeEntry,              // VOL_REGIME_ENTRY (VolatilityIndex + MarkPrice)
    BlockTradeVolumeRatio,       // BLOCK_TRADE_VOLUME_RATIO (BlockTrade + AggTrade)
    CapitulationDetector,        // CAPITULATION_DETECTOR (Liquidation + AggTrade + MarkPrice)
    IndexTrackingError,          // INDEX_TRACKING_ERROR (IndexPrice + CompositeIndex)

    // Category C composite + adaptive + cross-asset indicators (11)
    MarketStressComposite,       // MARKET_STRESS_COMPOSITE (VolIdx + Liq + Funding + InsuranceFund)
    RiskOffDetector,             // RISK_OFF_DETECTOR (VolIdx + Liq + Funding + InsuranceFund)
    SentimentComposite,          // SENTIMENT_COMPOSITE (LongShortRatio + AggTrade + Funding)
    CompoundSqueezeProbability,  // COMPOUND_SQUEEZE_PROBABILITY (OI + Liq + MarkPrice + Funding)
    TpoSessionBalance,           // TPO_SESSION_BALANCE (Tick)
    CompositeWeightDrift,        // COMPOSITE_WEIGHT_DRIFT (CompositeIndex)
    AdaptiveWindowSelector,      // ADAPTIVE_WINDOW_SELECTOR (Tick)
    AdaptiveThreshold,           // ADAPTIVE_THRESHOLD (Tick)

}

impl BarIndicatorId {
    /// True if this indicator accepts a `MovingAverageType` parameter
    /// (i.e. its smoother is configurable). Used by the optimizer to decide
    /// whether to expand `ma_type` as an axis in the parameter cube.
    pub fn supports_ma_type(self) -> bool {
        matches!(
            self,
            BarIndicatorId::Atr
                | BarIndicatorId::Atrbw
                | BarIndicatorId::Atrp
                | BarIndicatorId::Atrz
                | BarIndicatorId::AvVidya
                | BarIndicatorId::BbPeriod
                | BarIndicatorId::MacdHistZ
                | BarIndicatorId::Pressure
                | BarIndicatorId::RangeAtr
                | BarIndicatorId::SweepRev
                | BarIndicatorId::Tmf
                | BarIndicatorId::VhfMa
                | BarIndicatorId::Volts
                | BarIndicatorId::VoltsAtr
        )
    }

    /// Canonical enumeration of every `BarIndicatorId` variant.
    ///
    /// Single source of truth for "all indicators" — downstream consumers
    /// (mlq strategy codegen, validators, catalogs) iterate this instead of
    /// maintaining their own hand-written lists that drift on every add/remove.
    /// Backed by `strum::EnumIter`, so adding a variant to the enum makes it
    /// appear here automatically with no manual edit anywhere.
    pub fn all() -> impl Iterator<Item = BarIndicatorId> {
        use strum::IntoEnumIterator;
        <BarIndicatorId as IntoEnumIterator>::iter()
    }
}


// Original variants: 487
// Added long aliases: 155
// Total: 637

#[cfg(test)]
mod all_iter_tests {
    use super::*;

    /// `all()` enumerates every variant with no duplicates. Guards against a
    /// future hand-edit accidentally breaking the EnumIter contract.
    #[test]
    fn all_enumerates_every_variant() {
        let n = BarIndicatorId::all().count();
        assert!(n >= 550, "expected 550+ variants, got {n}");
        let set: std::collections::HashSet<_> = BarIndicatorId::all().collect();
        assert_eq!(set.len(), n, "all() yielded duplicate variants");
    }

    /// Every variant `all()` yields must have a catalog signature — this is
    /// the single-source-of-truth contract: the enum and the catalog cannot
    /// drift. A missing signature means codegen / validators silently skip it.
    ///
    /// Coverage is checked by the catalog's own `machine_id` reverse mapping
    /// (NOT by string-key lookup — catalog ids use SCREAMING_SNAKE like
    /// `AV_FRAMA` while the variant Debug is `AvFrama`, so string matching
    /// would give false negatives).
    #[test]
    fn every_variant_has_catalog_signature() {
        use crate::catalog::data::master_catalog::all_signatures;
        let covered: std::collections::HashSet<BarIndicatorId> =
            all_signatures().filter_map(|s| s.machine_id).collect();
        let missing: Vec<String> = BarIndicatorId::all()
            .filter(|id| !covered.contains(id))
            .map(|id| format!("{id:?}"))
            .collect();
        assert!(
            missing.is_empty(),
            "{} BarIndicatorId variants have no catalog signature (machine_id): {:?}",
            missing.len(), missing
        );
    }
}