fix trading/portfolio/wavelets/predictor bugs; refactor markov chains to modular pipeline
Dmitry Beresnev
5784bb6
Markov chains (refactor):
- split 600-line HMMLearnTrader god class into one-class-per-module pipeline:
types, data_loader, features, hmm_trainer, state_interpreter,
signal_generator, metrics, report_writer, plotter, backtester (facade + DI)
- behavior preserved exactly (synthetic checks reproduce identical numbers)
Trading module:
- broker_connector: stop-loss was submitted as a LIMIT order at the stop
price — instantly marketable, would close positions on entry; replaced
with Alpaca native bracket order (atomic, OCO legs). Fixed alpaca-py API
mismatches: avg_entry_price, cancel_order_by_id, GetOrdersRequest
- backtest_engine: exit PnL used a size recomputed at exit time instead of
the entry size; equity curve marked-to-market a fake 100%-capital
position; state leaked across run() calls; blocked-signal counters
inflated on signal-less bars
- risk_engine: correlated portfolio heat used sqrt(dollar risk) as
volatility (unit-dependent); now sqrt(r^T R r) on dollar ris…