mantis-ta 0.5.3

Composable technical analysis and strategy engine for Rust
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
# mantis-ta — TODO

Comprehensive implementation checklist derived from [SPEC.md](./SPEC.md) and [README.md](./README.md).
Items marked `[ADDITION]` are recommendations beyond the current SPEC.

---

## Version Roadmap

| Version | Theme | Platform Dependency |
|---------|-------|---------------------|
| **v0.1.0** | ✅ Tier 1 Indicators (10) + Core Types | `mantis-data` can compute indicators |
| **v0.1.1** | CI/CD + publish workflow + housekeeping | Dev velocity, automated quality gates |
| **v0.2.0** | Strategy Composition — Types + Builder | `mantis-core` can deserialize/validate strategies |
| **v0.3.0** | Strategy Evaluation — Batch + Streaming | `mantis-core` orchestrator can generate signals |
| **v0.4.0** | Backtesting Engine | Platform Phase 2: backtest UI can run strategies |
| **v0.5.0** | Tier 2 Indicators — Batch A (8) | Broader strategy options for users |
| **v0.6.0** | Tier 2 Indicators — Batch B (7) + ADX for Regime | `mantis-regime` MVP (ADX-based detection) |
| **v0.7.0** | Tier 3 Indicators — Batch A (13) + Candlestick Patterns | Advanced strategies, pattern recognition |
| **v0.8.0** | Tier 3 Indicators — Batch B (12) + Fibonacci/Pivot Variants | Full indicator catalog |
| **v0.9.0** | Polish — Custom Indicators, ndarray, SIMD, mdBook | Community readiness |
| **v1.0.0** | Stable — API Freeze, Bindings, Battle-Tested | Production-grade open-source release |

> **Rationale:** The platform (`mantis-core`, `mantis-execution`, `mantis-api`) is blocked on
> strategy composition (v0.2.0) and backtesting (v0.4.0). Indicator expansion (v0.5.0+) is
> valuable but not platform-blocking — the 10 Tier 1 indicators cover MVP strategy building.
> ADX is deliberately placed in v0.6.0 because `mantis-regime` MVP needs it for rule-based
> regime detection.

---

## ✅ v0.1.0 — Tier 1 Indicators + Core Types (PUBLISHED)

### 1. Project Scaffolding

- [x] Create `Cargo.toml` with package metadata, dependencies, dev-dependencies, feature flags, and bench targets
- [x] Create `LICENSE-MIT`
- [x] Create `LICENSE-APACHE`
- [x] Create `CHANGELOG.md`
- [x] Create `CONTRIBUTING.md`
- [x] Create `src/lib.rs` — public API re-exports
- [x] Create `src/prelude.rs` — convenience imports
- [x] Create module directory structure:
  - [x] `src/types/`
  - [x] `src/indicators/` (with `trend/`, `momentum/`, `volatility/`, `volume/`, `support_resistance/` sub-modules)
  - [x] `src/strategy/`
  - [x] `src/backtest/`
  - [x] `src/utils/`
- [x] Create `benches/` directory with Criterion harness stubs
- [x] Create `tests/` directory structure (`indicator_verification/`, etc.)
- [x] Create `fixtures/` directory (`reference/`, `market_data/`)
- [x] Create `examples/` directory

### 2. Core Types

- [x] `Candle` struct (timestamp, OHLCV)
- [x] `PriceSource` enum (Open, High, Low, Close, HLC3, OHLC4, HL2)
- [x] `Side` enum (Long, Short)
- [x] `Signal` enum (Entry, Exit, Hold)
- [x] `ExitReason` enum (RuleTriggered, StopLoss, TakeProfit, TrailingStop, DailyLossLimit, DrawdownBreaker)
- [x] `Timeframe` enum (M1, M5, M15, M30, H1, H4, D1, W1, MN1)
- [x] `MantisError` enum with `thiserror` (InvalidParameter, InsufficientData, StrategyValidation, BacktestError)
- [x] `Result<T>` type alias
- [x] `MacdOutput` struct
- [x] `BollingerOutput` struct
- [x] `StochasticOutput` struct
- [x] `PivotOutput` struct
- [x] Implement `serde` derives behind feature flag for all public types

### 3. Indicator Infrastructure

- [x] `Indicator` trait (`next`, `reset`, `warmup_period`, `calculate`, `clone_boxed`)
- [x] `IncrementalIndicator` trait (`state`, `restore`)
- [x] `src/utils/ringbuf.rs` — fixed-size ring buffer for streaming indicators
- [x] `src/utils/math.rs` — common math utilities (rounding, etc.)
- [x] `src/utils/crossover.rs` — cross-above/below detection helpers
- [x] Wire up `prelude.rs` with all public indicator re-exports

> **Indicator implementation checklist** (applies to every indicator below):
> Each indicator must satisfy all 10 points from SPEC §4.2 before merge:
> correctness (TA-Lib < 1e-10), streaming `next()`, batch `calculate()`, `warmup_period()`,
> `reset()`, no panics, zero allocation in `next()`, Rustdoc, tests (unit + TA-Lib verification),
> and Criterion benchmarks (streaming + batch).

### 4. Tier 1 Indicators (10)

- [x] SMA (Simple Moving Average) — `f64`
- [x] EMA (Exponential Moving Average) — `f64`
- [x] MACD (Moving Average Convergence Divergence) — `MacdOutput`
- [x] RSI (Relative Strength Index) — `f64`
- [x] Stochastic Oscillator — `StochasticOutput`
- [x] Bollinger Bands — `BollingerOutput`
- [x] ATR (Average True Range) — `f64`
- [x] Volume SMA — `f64`
- [x] OBV (On-Balance Volume) — `f64`
- [x] Pivot Points — `PivotOutput`

### 5. Testing Infrastructure

- [x] `fixtures/generate_references.py` — TA-Lib reference data generator
- [x] Sample market data: `fixtures/market_data/aapl_daily_2y.csv`
- [x] Sample market data: `fixtures/market_data/eurusd_1h_1y.csv`
- [x] Sample market data: `fixtures/market_data/spy_daily_5y.csv`
- [x] TA-Lib reference JSONs for all Tier 1 indicators (SMA periods 5/10/20/50/100/200, EMA same, RSI 7/14/21, MACD 12/26/9, etc.)
- [x] Test harness: `load_reference()` and `load_candles()` helpers
- [x] Verification tests for each Tier 1 indicator (TA-Lib parity < 1e-10)
- [x] Unit tests per indicator: edge cases, NaN handling, warmup, reset
- [x] Property-based tests: RSI ∈ [0,100], BB middle = SMA, streaming output = batch output
- [x] Fuzz tests: random candles never panic, extreme values handled

### 6. Benchmarks

- [x] Criterion harness setup (`benches/indicators.rs`, `benches/strategy_eval.rs`, `benches/backtest.rs`)
- [x] Streaming per-bar benchmarks for each Tier 1 indicator (target: < 100 ns)
- [x] Batch 2000-bar benchmarks for each Tier 1 indicator (targets per SPEC §8)

### 7. Documentation

- [x] Rustdoc for all public types, traits, and functions
- [x] Runnable doc examples for each indicator
- [x] `examples/basic_indicators.rs`
- [x] `examples/streaming_ema.rs`
- [x] README badges: crates.io, docs.rs, CI, license
- [x] README quick-start examples

---

## v0.1.1 — CI/CD + Housekeeping (patch)

> Shipping CI/CD as a patch because it should have been in v0.1.0 and
> doesn't change public API. Unblocks automated quality gates for all
> subsequent development.

### CI/CD

- [x] GitHub Actions CI workflow (`.github/workflows/ci.yml`)
- [x] CI steps: `cargo fmt --check`, `cargo clippy -- -D warnings`, `cargo test`, `cargo test --all-features`
- [x] CI step: run TA-Lib verification tests (included in `cargo test`)
- [x] Crates.io publish workflow (manual `cargo publish` — no CI workflow needed)

### Housekeeping

- [x] Review and fix any open issues / bug reports from v0.1.0 (none reported)
- [x] Ensure `backtest` and `strategy` modules have clear "not yet implemented" docs (added module-level Rustdoc)
- [x] Verify docs.rs build renders correctly (all public items documented; backtest/strategy have clear future-feature docs)

---

## v0.2.0 — Strategy Composition: Types + Builder

> **Platform unblocks:** `mantis-core` can deserialize strategy JSON from the frontend
> Strategy Builder UI, validate it at build time, and store it. No evaluation yet —
> that's v0.3.0.

### Strategy Types

- [x] `Condition` struct (left indicator, operator, right compare target)
- [x] `CompareTarget` enum (Value, Indicator, Scaled)
- [x] `Operator` enum (CrossesAbove, CrossesBelow, IsAbove, IsBelow, IsBetween, Equals, IsRising, IsFalling)
- [x] `ConditionGroup` enum (AllOf, AnyOf)
- [x] `ConditionNode` enum (Condition, Group)
- [x] `StopLoss` type (ATR multiple, fixed %, trailing)
- [x] `TakeProfit` type (ATR multiple, fixed %)
- [x] `Strategy` struct

### Indicator References

- [x] `IndicatorRef` type + convenience constructors (`sma()`, `ema()`, `rsi()`, `macd()`, etc.)
- [x] `IndicatorRef` methods: `crosses_above`, `crosses_below`, `is_above`, `is_below`, `is_between`, `is_rising`, `is_falling`, `scaled`
- [x] `all_of()` and `any_of()` grouping functions

### Builder API

- [x] `Strategy::builder()` — fluent builder API
- [x] Builder methods: `timeframe`, `entry`, `exit`, `stop_loss`, `take_profit`, `max_position_size_pct`, `max_daily_loss_pct`, `max_drawdown_pct`, `max_concurrent_positions`
- [x] Strategy validation at `build()` time (all rules from SPEC §5.3)

### Serialization

- [x] Strategy serialization/deserialization (JSON, behind `serde` feature)
- [x] Ensure round-trip: `Strategy` → JSON → `Strategy` preserves all fields

### Testing

- [x] Unit tests for all `Operator` variants
- [x] Unit tests for `ConditionGroup` nesting (AllOf containing AnyOf, etc.)
- [x] Unit tests for builder validation (missing entry, missing stop-loss, too many conditions, etc.)
- [x] Round-trip serialization tests (serde derives in place)
- [x] Strategy composition tests (builder → struct integrity)

### Documentation

- [x] `examples/golden_cross_strategy.rs` — build a strategy, print its JSON
- [x] Rustdoc for all new public types (module-level and inline docs)

---

## v0.3.0 — Strategy Evaluation: Batch + Streaming

> **Platform unblocks:** `mantis-core` orchestrator can feed candles into a strategy
> and receive `Signal::Entry` / `Signal::Exit` / `Signal::Hold` back. This powers
> both paper trading and live signal generation.

### Evaluation Engine

- [x] Strategy evaluation — batch mode (`strategy.evaluate(&candles) -> Vec<Signal>`)
- [x] Strategy evaluation — streaming mode (`strategy.into_engine()` + `engine.next(&candle) -> Signal`)
- [x] Condition evaluator: resolve `IndicatorRef` to computed values, apply `Operator`
- [x] Cross-detection state management (previous bar values for CrossesAbove/Below)
- [x] Warmup handling: return `Signal::Hold` until all indicators have sufficient data

### Testing

- [x] Integration tests: builder → eval → signal accuracy (basic scenarios)
- [x] Golden Cross strategy: verify entry/exit signals against manual calculation
- [x] RSI Mean Reversion strategy: verify signals at known oversold/overbought points
- [x] Edge cases: strategy with single condition, maximum conditions, nested groups
- [x] Streaming vs. batch equivalence: same candles produce same signals in both modes

### Benchmarks

- [x] Strategy evaluation benchmark: 5 conditions, 2000 bars (target: < 200 µs)
- [x] CI step: run Criterion benchmarks (report only, no gate)

### Documentation

- [x] Update `examples/golden_cross_strategy.rs` — now includes evaluation + signal output

---

## v0.4.0 — Backtesting Engine

> **Platform unblocks:** Platform Phase 2 (Validation Engine). The backtest UI can
> submit a strategy + historical data and receive metrics, equity curve, and trade log.

### Core Engine

- [x] `BacktestConfig` struct (initial capital, commission, slippage, execution model, fractional shares, margin)
- [x] `ExecutionModel` enum (NextBarOpen, CurrentBarClose)
- [x] `BacktestConfig::default()` implementation
- [x] `backtest()` runner function — main execution loop
- [x] `BrokerSim` — simulated broker (fills with slippage)
- [x] `Portfolio` — portfolio state tracking, cash accounting, position sizing

### Metrics

- [x] `BacktestMetrics` struct (all fields from SPEC §6.2: returns, risk-adjusted, drawdown, trade stats, stress, exposure)
- [x] Metrics calculation from trade history
- [x] Trade log output: entry/exit timestamps, prices, P&L, exit reason, holding period

### Integrity Rules

- [x] No lookahead bias: indicators see only data up to current bar
- [x] Next-bar execution: entries/exits fill at next bar's open (default)
- [x] Slippage modeling (configurable, default 0.1% equities, 0.05% forex)
- [x] Commission modeling (flat fee or percentage)
- [x] Cash accounting: cannot buy more than available cash (no hidden margin)
- [x] No partial fills in MVP

### Overfitting Safeguards

- [x] Minimum trade count warning (< 30 trades = statistically unreliable)
- [x] Excessive condition warning (> 6–7 conditions = potential overfitting)
- [x] Parameter sensitivity report (±10% parameter variation impact)
- [x] Walk-forward validation utility (in-sample + out-of-sample split, report both)

### Testing

- [x] Backtest integration tests: known strategy on known data → verify metrics match hand calculation
- [x] No-lookahead-bias test: strategy with future-dependent condition must not generate signals
- [x] Cash accounting test: cannot open position larger than available capital
- [x] Commission/slippage test: verify they reduce returns appropriately
- [x] Edge cases: strategy that never trades, strategy that's always in position

### Benchmarks

- [x] Full backtest benchmark: 2yr daily, 1 instrument (target: < 5 ms)
- [x] Full backtest benchmark: 2yr daily, 10 instruments (target: < 50 ms)

### Documentation

- [x] `examples/backtest_momentum.rs` — full backtest with metrics output
- [x] Rustdoc for all backtest public types

---

## v0.5.0 — Tier 2 Indicators: Batch A (8 indicators)

> **Released as v0.5.0** (v0.4.0 Backtesting Engine was completed but released separately).
> Prioritized by usefulness for common strategy patterns. These indicators
> expand what users can build in the Strategy Builder without needing to
> wait for the full Tier 2 set.

- [x] ADX (Average Directional Index) — `AdxOutput`**priority: needed by `mantis-regime` MVP**
- [x] WMA (Weighted Moving Average) — `f64`
- [x] DEMA (Double Exponential Moving Average) — `f64`
- [x] TEMA (Triple Exponential Moving Average) — `f64`
- [x] CCI (Commodity Channel Index) — `f64`
- [x] Williams %R — `f64`
- [x] ROC (Rate of Change) — `f64`
- [x] Standard Deviation — `f64`

### Testing & Benchmarks

- [x] TA-Lib reference JSONs for all Batch A indicators
- [x] Verification tests (TA-Lib parity < 1e-10)
- [x] Unit tests per indicator (edge cases, warmup, reset)
- [x] Streaming + batch benchmarks

### Strategy Integration

- [x] Add `IndicatorRef` convenience constructors for new indicators (`adx()`, `wma()`, `cci()`, etc.)
- [x] Verify new indicators work in strategy builder → eval → signal flow

---

## v0.5.3 — Rust Upgrade

- [x] Set `edition = "2024"` in all workspace/crate Cargo.toml files
- [x] Set `rust-version = "1.85"` (MSRV) in root Cargo.toml
- [x] Run `cargo fix --edition` to auto-migrate code
- [x] Resolve remaining compiler warnings/errors
  - `unsafe extern` blocks
  - `#[unsafe(no_mangle)]` attributes
  - `unsafe {}` blocks inside `unsafe fn`
  - `r#gen` if `gen` used as identifier
- [x] Run `cargo clippy` and `cargo test` on clean build
- [x] Update CI toolchain pin (e.g., `rust-toolchain.toml`) to >= 1.85
- [x] Update docs and README references to edition/MSRV

---

## v0.6.0 — Tier 2 Indicators: Batch B (7 indicators)

> Completes Tier 2. ADX from v0.5.0 now enables `mantis-regime` to
> implement rule-based regime detection (ADX > 25 = trending, etc.).

- [ ] Ichimoku Cloud — `IchimokuOutput`
- [ ] Parabolic SAR — `f64`
- [ ] MFI (Money Flow Index) — `f64`
- [ ] Keltner Channels — `KeltnerOutput`
- [ ] VWAP (Volume Weighted Average Price) — `f64`
- [ ] Accumulation/Distribution Line — `f64`
- [ ] Donchian Channels — `DonchianOutput`

### Testing & Benchmarks

- [ ] TA-Lib reference JSONs for all Batch B indicators
- [ ] Verification tests (TA-Lib parity < 1e-10)
- [ ] Unit tests per indicator (edge cases, warmup, reset)
- [ ] Streaming + batch benchmarks

### Strategy Integration

- [ ] Add `IndicatorRef` convenience constructors for new indicators
- [ ] Verify new indicators work in strategy builder → eval → signal flow

---

## v0.7.0 — Tier 3 Indicators: Batch A (13 indicators)

> Advanced moving averages, oscillators, and volatility measures.

### Advanced Moving Averages

- [ ] VWMA (Volume Weighted Moving Average)
- [ ] Hull Moving Average
- [ ] ALMA (Arnaud Legoux Moving Average)

### Advanced Trend/Momentum

- [ ] Supertrend
- [ ] Aroon Oscillator
- [ ] TSI (True Strength Index)
- [ ] Ultimate Oscillator
- [ ] Awesome Oscillator
- [ ] Momentum (simple)
- [ ] TRIX

### Advanced Volatility/Volume

- [ ] Chaikin Volatility
- [ ] Historical Volatility
- [ ] Ulcer Index

### Testing & Benchmarks

- [ ] TA-Lib reference data (where available; some indicators not in TA-Lib — use alternative verified references)
- [ ] Verification tests, unit tests, streaming + batch benchmarks

### Strategy Integration

- [ ] Add `IndicatorRef` convenience constructors for new indicators

---

## v0.8.0 — Tier 3 Indicators: Batch B (12) + Candlestick Patterns

> Volume-based indicators, candlestick pattern detection, and pivot variants.

### Volume-Based

- [ ] Chaikin Money Flow
- [ ] Force Index
- [ ] Ease of Movement
- [ ] Volume Profile (basic)

### Candlestick Patterns

- [ ] Doji detection
- [ ] Engulfing pattern
- [ ] Hammer / Hanging Man
- [ ] Morning / Evening Star
- [ ] Three White Soldiers / Black Crows

### Support/Resistance Variants

- [ ] Fibonacci Retracement
- [ ] Pivot Points (Fibonacci variant)
- [ ] Pivot Points (Woodie variant)

### Testing & Benchmarks

- [ ] Pattern detection tests against known chart formations
- [ ] Unit tests, streaming + batch benchmarks

### Strategy Integration

- [ ] Add candlestick pattern support to `ConditionNode` (pattern detected as boolean condition)
- [ ] Add `IndicatorRef` convenience constructors for new indicators

---

## v0.9.0 — Polish & Community Readiness

### Custom Indicator Support

- [ ] Document the custom indicator pattern (public `Indicator` trait is sufficient — write the guide)
- [ ] `examples/custom_indicator.rs`

### Optional Features

- [ ] `ndarray` feature — interop with ndarray ecosystem
- [ ] `simd` feature — SIMD-accelerated batch computation (uses `unsafe`)
- [ ] `[ADDITION]` Security audit for `simd` feature `unsafe` code

### Documentation Site

- [ ] mdBook documentation site
- [ ] `[ADDITION]` mdBook content plan — pages: Getting Started, Indicator Catalog, Strategy Guide, Backtest Guide, Custom Indicators, API Reference

### Community

- [ ] Contribution guidelines finalized + good-first-issue labels on GitHub
- [ ] `[ADDITION]` Formal Tier 4 indicator acceptance process — GitHub issue template, review criteria checklist, required TA-Lib reference
- [ ] Tier 4 community-driven indicator acceptance (open process)

### CI Enhancements

- [ ] `[ADDITION]` Performance regression CI — automated benchmark comparison on PRs (e.g., `critcmp` or GitHub Action for Criterion)

---

## v1.0.0 — Stable Release

> API freeze. No breaking changes after this release.

### Stability

- [ ] `[ADDITION]` API stability review checklist — enumerate public surface, review naming conventions, ensure no accidental exposures
- [ ] `[ADDITION]` Migration/deprecation guide for pre-1.0 breaking changes
- [ ] API freeze — no breaking changes after this release
- [ ] 50+ indicators, all verified against reference implementations

### Bindings

- [ ] `[ADDITION]` Python/WASM binding scope definition — which APIs to expose, packaging strategy (PyPI / npm), CI for bindings
- [ ] Python bindings (separate crate: `mantis-ta-python`)
- [ ] WASM bindings (separate crate: `mantis-ta-wasm`)

### Production Validation

- [ ] Battle-tested via MANTIS Platform production usage

---

## Cross-Cutting Concerns (ongoing, every release)

### Quality Gates (every PR)

- `cargo fmt --check`
- `cargo clippy -- -D warnings`
- `cargo test` + `cargo test --all-features`
- TA-Lib verification tests pass
- New public types have Rustdoc + examples
- New indicators have Criterion benchmarks

### Changelog

- Update `CHANGELOG.md` with every version (following Keep a Changelog format)

### Versioning Policy

- **Patch** (0.x.Y): Bug fixes, CI/CD, docs — no public API changes
- **Minor** (0.X.0): New features, new indicators, new public types — may include breaking changes pre-1.0
- **Major** (X.0.0): Reserved for post-1.0 breaking changes

---

## Platform Dependency Map

```
mantis-ta version    Platform component unblocked
─────────────────    ──────────────────────────────────
v0.1.0 (done)        mantis-data: indicator computation
v0.2.0               mantis-core: strategy deserialization + validation
                     Frontend: Strategy Builder can save valid strategies
v0.3.0               mantis-core: orchestrator signal generation
                     Platform: paper trading signal loop
v0.4.0               Platform Phase 2: backtest UI + metrics display
v0.5.0               mantis-regime: ADX-based regime detection MVP
v0.6.0+              Expanded strategy options for users (non-blocking)
v1.0.0               Production-grade open-source release
```