Skip to content

feat(quant): T2 real-money executor scaffold (dry) + OOS profit validation - #236

Draft
JoTalbot wants to merge 102 commits into
mainfrom
agent/20260815-quant-oos-profit
Draft

feat(quant): T2 real-money executor scaffold (dry) + OOS profit validation#236
JoTalbot wants to merge 102 commits into
mainfrom
agent/20260815-quant-oos-profit

Conversation

@JoTalbot

Copy link
Copy Markdown
Owner

Восстановленный orphan-PR: работа без PR с 2026-08-15. +102/−64 vs main.

Этот PR создан ИИ-агентом (OpenHands) от имени оператора при наведении порядка в ветках.

Deployed CatBoost direction model was degenerate (prob_up=0.433 for 30/35
assets, AUC 0.504, never reaches the 0.65 entry gate). Replace with a model
trained on scale-free features with a strict per-symbol walk-forward split:
AUC 0.533, hit-rate 81-83% at prob>=0.65 on two independent OOS windows,
positive net PnL with Directional v2 paper exit rules. Old model kept as
fallback; ml_predictor prefers catboost_price_dir_v2.cbm.
RLSignalBridge vs training env (kg_v8) mismatches:
1. onehot always marked BTC - now per-asset index in ASSET_ORDER (32 assets,
   alphabetical, as MultiAssetEnv); unknown asset -> None (no signal).
2. static feature 3 was vol_chg, training used vol_ratio - fixed.
3. action was not clamped to [-1,1] like in training rollout - pos could be
   -0.5 (outside [0,1]) - fixed.

Dead tickers MATIC/RNDR (renamed to POL/RENDER) removed from ML signals,
RL default universe and notebook generator template. rl_signals.json refreshed
(9 assets, honest FLAT verdicts). 61 quant/ml tests pass.
…ction

Data:
- scripts/quant_backfill_history.py: paginated Binance klines (+Bybit fallback
  for KAS), refreshes stale tails first; 17 assets extended to ~5500 bars.

Signal product (generate_quant_signal_product.py):
- _latest_rows now picks the most complete FRESH series (staleness >2h
  skipped, fixes delisted TON on Binance shadowing live Bitstamp data);
- regime computed on the last CLOSED bar (in-progress bar had partial volume
  -> false illiquid); NO_DATA dropped 16 -> 0.

ML (quant_ml_eval_train.py):
- engine-style simulation now executes at trigger levels (conservative),
  not at piercing bar closes; retrained on full dataset: AUC 0.513 -> 0.536,
  hit@0.65 = 82.4%, +31.6% net on OOS sim at thr 0.65.

RL (quant_train_ppo.py + rl_signal_bridge.py):
- train LSTM-PPO v9 1:1 with kg_v8 methodology (300 episodes, GAE, clip 0.2)
  on local data, universe POL instead of delisted MATIC;
- validation: sum_rl +96.0% vs Buy&Hold -114.0% (v8: +51.4%);
- bridge reads asset names from checkpoint (supports v8 MATIC and v9 POL),
  MODEL_FILE -> ppo_v9.pt; signals refreshed (10 assets, honest FLAT veto).
- 61 quant/ml tests pass.
- collect_orderbook_snapshots.py: fix kucoin depth (20/100 only), add
  okx/bitstamp/coinbase to the collector (binance,kucoin,mexc,okx,bitstamp,
  coinbase); unit interval 30s -> 15s. Collection rate ~3x faster.
- scripts/analyze_orderbook_data.py (new): per-exchange spread/depth stats +
  cross-exchange mid disparity windows (read-only); report -> data/reports/
  orderbook_analysis.json.
- Market-making simulator first run (>=200 snapshots): fill_rate 63-96% but
  negative PnL - naive passive MM suffers adverse selection; full run needs
  >=1000 snapshots/pair (binance/mexc ~40% there, ~1.5h to go).
- docs/QUANT_SIGNAL_PRODUCT.md: 33 assets, backfill, fresh-series selection,
  closed-bar regime, ML v2 / PPO v9 summary.
- docs/PROJECT_INVENTORY.md regenerated.
…ng brief

- scripts/run_market_making_simulator_v2.py (new): inventory-aware MM research
  (fills only on favorable moves, single-position rule, no stacking). First run
  confirms naive MM economics: maker fee 0.1% (10bps) exceeds median spreads
  (BTC 0.002bps, ETH 0.05, SOL 1.3) -> spot MM on top pairs needs rebate
  programs or wider-spread universe; documented in report.
- run_morning_brief.py: read-only Quant WATCH section (WATCH_UP/WATCH_DOWN
  from quant_signal_product.json, max 5) after the crypto PnL line.
Old paths (ppo_trader.pt, ppo_multi_24.pt, catboost_price_dir.cbm) are
superseded by ppo_v9.pt and catboost_price_dir_v2.cbm; removed stale entries.
…train timers

- scripts/quant_watch_backtest.py (new): replays signal-product WATCH rules
  on OOS tail; result: WATCH_DOWN precision 59.4% (85/143) - moderate edge
  vs 50% baseline; WATCH_UP produced 0 signals (rule too strict in current
  down-market) - documented, no rule changes.
- scripts/quant_ml_monitor.py (new): prob_up distribution stats, signal/CSV
  freshness, drift vs previous snapshot; history in
  data/reports/quant_ml_monitor_history.json; status OK/WARN.
- scripts/quant_ml_feature_experiment.py (new): 13 base vs 21 extended
  features on same OOS; extended is NOT better (AUC 0.5326 vs 0.5355,
  hit@0.65 70.8% vs 82.2%) - base feature set stays.
- deploy/systemd/aios-quant-ml-retrain.{service,timer}: weekly retrain
  (Mon 04:00, deploy-only-if-better guard already in the script).
- deploy/systemd/aios-quant-ml-monitor.{service,timer}: hourly drift monitor.
- Both timers installed and enabled on the host.
Critical methodology fix: v8/v9 validation lacked the action clamp used by
the deployed bridge; act < -1.5 silently became SHORT positions (-0.5) that
are impossible in the discrete {0, 0.5, 1} policy. Those historical
profits (v9 +96%) were artifacts of hidden shorts.

- quant_train_ppo.py / quant_train_ppo_v10.py: val_on_asset now clamps
  act to [-1,1] exactly like rl_signal_bridge.py.
- quant_train_ppo_v10.py (new): honest walk-forward split - env trains on
  first 70% of each asset, validates on the unseen last 30% (gap 48).
- Honest result: deployed ppo_v9 is a pure FLAT agent on OOS (sum_rl 0.0
  vs Buy&Hold -233%) - value is loss avoidance, not earning. v10 not
  deployed (identical FLAT, no OOS edge under deployed action space).
- quant_ml_horizon_experiment.py (new): h1 label optimal (AUC 0.5355,
  hit@0.65 82.2%); h4/h8/h24 worse - next-bar model stays.
- Reports: ppo_oos_honest.json, ppo_v10_oos_eval.json,
  quant_ml_horizon_experiment.json.
Replays the production algorithm (ML gate, owner risk profile, TP/SL/trail
exits, fees) as if trading started exactly one month ago, synchronous
per-bar processing of all 33 symbols with a single 000 portfolio.

Result (2026-07-14 -> 2026-08-14):
- current algorithm: -0.30% (1 trade; ML>=0.65 gate blocked 1948 entries)
- control (no ML gate): -0.54% (5 trades, 2 wins)
- market Buy&Hold: mean -9.30%, best ADA +9.00%, worst BONK -37.73%, BTC -2.71%

The algorithm beat the average currency by +9.0pp and BTC by +2.4pp, i.e.
the gate acted as capital protection (mostly cash), not an earner.
Re-run for 3/6/12 calendar months. The deployed algorithm holds cash in all
windows (ML>=0.65 gate almost never fires; after the first -1.5% loss the
0.25% DD kill blocks further entries), so portfolio PnL is -0.30% in every
window while the market fell: mean currency -30.75% (3m), -24.11% (6m),
-68.32% (12m). BTC -46.7%, ETH -58.1%, ADA -80.0% over 12m. The gate acts
as capital protection (beats average currency by +9..+68pp) but never
earns: cash (0%) beats the algorithm by 0.3pp in every window.
Systematic research over 16 strategies on honest OOS (no lookahead, 0.25%
per-side costs, ML retrained on train window only, equal-weight symbols):

- Winner: daily SMA50/200 long/short cross-following:
  70/30 split +7.8..+11.2% (params 40/160, 50/200, 60/240 all positive);
  50/50 split +34.7% (50/200) / +19.7% (60/240), both OOS halves positive.
- Long-only variant of the same rules: -4.5% -> profit comes from shorts.
- XS mean-reversion unstable (bot3_p7: +9.6% then -12.9%); RSI daily MR
  weak (+1.8..+5.6%); ML long/short and inverted-ML negative on OOS.
- Report: data/reports/strategy_research_summary.md + JSON artifacts.

Caveats: funding/borrow costs not modeled; profit concentrated in the
bear regime; constitutional gate requires owner decision for real shorts.
…earns

Backtest engine fix (v2): equity now compounds bar by bar (earlier version
summed arithmetic returns, which overstates PnL on volatile assets - e.g.
sum -97.96% vs actual -71.3% for BONK) and the position adopts the signal at
the same bar close (true next-bar semantics).

Corrected results for daily SMA50/200 long/short with 0.25%/side costs:
  OOS30: +12.62% net (funding base), +1.68% (funding stress)
  OOS50: +41.56% net (base), +23.92% (stress); half1 +32.4%, half2 +6.5%;
  24/33 symbols positive. Both halves and all split x funding combos > 0.
  MA_LS_60_240: +14.0% (OOS30), +29.9% (OOS50).
All long-only variants and Donchian/XS stay negative -> shorts are the edge.
Report: data/reports/earn_research_summary.md + JSON.
- mm_proto_backtest.py --queue-model: partial fills by share of level size, remainder
  keeps quoting. Tested on 1Hz ws with REAL spreads (BTC 0.0016bps): previous 2bps
  half-spread was ~1000x wider than real spread -> quotes never filled; at realistic
  0.001-0.05bps -> 9-14 fills/hour. PnL still negative on 1-1.6h (data accumulating).
- subscription_manage.py + data/quant_subscriptions.json: add/list/revoke/clean tokens.
- mm_signal_emitter.py: broadcast to owner + active subscribers; owner sub created
  (365d). Signals delivered: ETH UP 0.987, BNB UP 0.911, SOL UP 0.975.
- docs/SIGNAL_SUBSCRIPTION_INFRA_2026-08-15_RU.md.
…r to diagnostic mode

- scripts/signal_pnl_sim.py: market-entry/exit simulation of emitted signals
  (60/180s, taker fee 0.1% both sides, $100 stake). Result: gross ≈ 0.00 on 98
  trades, fees 19.60$, net -19.61$. Direction accuracy (63%) does NOT translate
  into money - move size over 1-3 min is microscopic; even zero fees yield no profit.
- mm_signal_emitter.py: DIAGNOSTIC mode (logs signals, no Telegram broadcast) -
  subscription would sell false value; timer 5->15 min.
- R3 (threshold calibration) skipped - thresholds cannot create gross profit.
- Microstructure remains useful only as MM adverse-selection filter; verdict after
  2-4 weeks of data. docs/SIGNAL_ECONOMICS_R1_2026-08-15_RU.md.
…digest metric

- mm_proto_backtest.run_mm_best: quotes at real best bid/ask with maker fee.
  Gross negative even at fee=0 on 1-2h ws data (-1.7..-5.6$); model targets 1s
  (wrong for 1Hz), data is noise - verdict needs weeks of data.
- signal_pnl_maker.py: limit entry at best price, taker exit. net -19.61$ -> -1.50$
  (13x better) BUT fill 22% and WR 0% - limit fills exactly when price moves against
  the signal (adverse selection at entry). Signal-as-limit-order is a trap.
- aios_weekly_digest.py: + maker-entry economics metric (daily/weekly auto-check).
- Taker trading closed (R1), maker-entry by signal closed (W4); full maker-MM with
  microstructure filter remains the only live direction (verdict after 2-4 weeks).
- docs/SIGNAL_ECONOMICS_W1W4_2026-08-15_RU.md.
…d weekly

- run_dca_paper.py: config/state paths via DCA_CONFIG env (legacy names for main).
- New control portfolio (plain DCA, $100/wk, same weights) + aios-dca-paper-control.timer
  (17:35Z) - live A/B vs VA main ($300/wk) over 1-2 months.
- dca_chart_report.py: matplotlib PNG of both curves + invested, sendPhoto to TG;
  attached to weekly dca-report (Mon 18:00Z); text report now includes control.
- docs/DCA_AB_VA_VS_PLAIN_2026-08-16_RU.md.
- collect_news_sentiment.py: RSS feeds (CoinTelegraph/CoinDesk/CryptoSlate) + Gemini
  2.5 Flash sentiment scoring of headlines -> news_sentiment.jsonl (ts, sentiment,
  label, coins). First batch: 65 items (19 pos / 38 neg / 8 neu), scores adequate.
- Debugging: GROQ 403 (regional block), OpenRouter 402 (no balance), Gemini needs
  key in URL (no Bearer -> 401), model gemini-2.5-flash; duplicate score_batch
  definition removed (Python picks the last def).
- aios-news-sentiment.timer (hourly :20); /quant shows sentiment summary.
- N2 (sentiment-price link test) after 1-2 weeks of accumulation.
- docs/NEWS_SENTIMENT_COLLECTOR_2026-08-16_RU.md.
…3 digest sentiment

- collect_market_context.py: F&G index (alternative.me) + macro calendar
  (faireconomy.media, graceful on 429); daily timer 06:00Z; F&G in /quant.
  Current F&G: 34 (Fear).
- sentiment_price_test.py: per-news BTC/ETH mid move at +30m/+1h vs sentiment
  correlation. Empty sample now (news 22:31, ws ends 22:53 - horizon beyond data);
  tool ready, first numbers in 1-2 days.
- aios_weekly_digest.py: + sentiment summary line.
- docs/MARKET_CONTEXT_P1P2P3_2026-08-16_RU.md.
… + price-link test) with local test suite

- fetch_historical_news.py: CoinTelegraph RSS snapshots from Wayback (11648/yr) ->
  1545 unique headlines (2025-08..2026-07) with pubDate, dedup, resume.
- score_historical_sentiment.py: Gemini 2.5 Flash batching, resume-safe merge,
  lenient key validation (drop only 401/403/404; 429 = transient, kept),
  break-on-fail with progress save; 12s pacing (1 working key). Daily quota
  exhausted -> aios-news-scoring.timer (every 30 min) resumes automatically.
- sentiment_price_historical.py: news->price correlation (1h/24h/3d/7d) per coin.
- tests/test_news_pipeline.py: 30 tests (RSS parsing, snapshot selection, Gemini
  JSON parsing, merge/resume, detect_coins, end-to-end synthetic, key validation)
  - 30/30 PASS locally and on server against prod scripts.
- docs/NEWS_HISTORICAL_PIPELINE_2026-08-16_RU.md.
…al sentiment-price test result

- news_local_sentiment.py: deterministic lexicon scorer (crypto vocabulary,
  negations, amplifiers); calibrated vs Gemini on 65 live news: corr +0.623,
  94-95% sign agreement; 1545 headlines in 0.03s. tests/test_local_sentiment.py
  21/21 PASS locally and on server (total 51 tests green).
- sentiment_price_historical.py: prefer locally-scored file (SCORED fallback).
- RESULT (1781 news->price matches, 2025-08..2026-07): corr 1h +0.007, 24h -0.058,
  3d -0.036, 7d -0.060 - NO predictive link; mildly negative on longer horizons
  (news react to price, sell-the-news). 9th negative result for directional
  prediction; sentiment features NOT added to models. Lexicon stays as free
  sentiment monitor.
- docs/SENTIMENT_PRICE_HISTORICAL_RESULT_2026-08-16_RU.md.
…ve, LSR is regime proxy

- Developed & tested LOCALLY first (22/22 tests, fixtures for geo-blocked Binance),
  then deployed. Data: 400d macro/on-chain (Yahoo+blockchain.info) + 720h derivatives
  (taker ratio, global/top LSR, OI) + 1419h BTC prices. No lookahead (lagged feats).
- Daily: all correlations ~0 (DXY diff +0.32% weak). Hourly: LSR->24h corr +0.199
  (test +0.44) BUT block breakdown shows sign follows market regime: SHORT(LSR<med)
  +23/+38/-22/+10% - profitable only in bearish blocks, loses in bullish TRAIN (-35%).
  LSR is a regime proxy, not a predictor. 10th negative result for directional
  prediction; no new data classes remain.
- Byproduct: hourly derivatives accumulator (aios-derivatives-collector.timer) to
  build long LSR/OI/taker history; LSR usable as regime indicator for DCA timing.
- docs/MACRO_DERIVATIVES_PREDICTIVE_TEST_2026-08-16_RU.md.
…d in bear window

- backtest_2y.py: fetches 2y 1h klines (Binance Futures, 8 symbols, 17520 bars
  each), trains CatBoost on first 70% per symbol, simulates current engine
  (ML>=0.65, TP2/SL1/trail1.0, kill 0.25%, costs ~0.5%) on last 30% (OOS ~7mo).
- tests/test_backtest_2y.py: 17 tests (pagination, signals, engine, OOS split,
  kill-switch) - PASS locally and on server.
- OOS result: 23 trades, WR 35%, PF 0.41, PnL -26.45$ vs BTC buy&hold -30.9%
  in the same window (strategy protects capital but does not earn); full-period
  '+27$' is a train-leak artifact. Edge does not appear on longer horizon.
- docs/BACKTEST_2Y_2026-08-16_RU.md.
…A50) profitable

- momentum_strategies.py: 7 factor variants (TS-momentum SMA200/50, SMA cross,
  CS-momentum 30/60/90d, CS+trend filter), daily data, costs 0.15%/side,
  a-priori params, OOS 30%. tests/test_momentum.py 17/17 PASS (local + server).
- RESULT (3y, 14 symbols, 1099d): T2 TS-momentum BTC SMA50 = +143.5% (CAGR 34.4%,
  Sharpe 1.06, MaxDD -27.7% vs BH -53.1%); ETH version +156.8% (BH +2.2%);
  sensitivity SMA30-50 plateau (not overfit). All CS-momentum and SMA-cross
  variants negative. Honest caveats: OOS (bear 2026) -17.6%, profit mostly from
  bull 2024; classic documented factor.
- First profitable strategy after 11 negative directional tests. Recommend paper
  signal loop (daily close vs SMA50) then real allocation.
- docs/MOMENTUM_STRATEGIES_RESULT_2026-08-16_RU.md.
…rts + backfill)

- run_t2_momentum.py: daily paper loop - fetch closes (Yahoo, fallback Binance spot),
  signal close vs SMA50 on last CLOSED bar, mark equity, log, TG on position change.
  Cost 0.15% on any transition (matches backtest). Idempotent per day.
- tests/test_t2_paper.py: 28 tests (signal, source fallback, idempotency, costs
  entry+exit, equity marking, BH reference) - PASS local and on server.
- aios-t2-momentum.timer daily 01:30 UTC; /quant shows T2 status.
- Backfill 3y through the loop: $10k -> $25,473 (+154.7%) vs BH +134.4%, 68 trades,
  current position CASH (close < SMA50, bear market). Diff vs backtest (+143.5%)
  is the mark convention, documented.
- docs/T2_PAPER_LOOP_2026-08-16_RU.md.
- run_t2_momentum.py: --symbol parametrization (BTC-USD/ETH-USD), per-symbol
  state/log paths, Binance fallback ETHUSDT; tests 33/33 local (symbol URL,
  per-symbol state paths), 28/28 server.
- aios-t2-momentum.service: runs both symbols daily 01:30 UTC.
- ETH backfill 3y: $10k -> $27,977 (+179.8%) vs BH +20.0% (+160pp), position
  LONG, 45 trades. /quant shows both T2 rows; weekly digest includes T2 (sent).
- docs/T2_ETH_AND_DIGEST_2026-08-16_RU.md.
… 50/50 portfolio, daily TG, chart)

- t2_validation.py: 5y full-cycle test (BTC +127.8% vs BH +47%, ETH +103.2% vs BH -35%,
  SOL +406.3% vs BH +91%), 2y rolling windows (8/9 positive each), SMA calibration
  (40-60 plateau - SMA50 robust, not overfit).
- t2_portfolio.py: 50/50 BTC+ETH portfolio (5y +129.6% vs BH +7%), daily log.
- run_t2_momentum.py --daily-report: one-line TG report every day; service now runs
  BTC+ETH+SOL + portfolio + chart at 01:30Z; dca_chart_report includes T2 curve;
  /quant shows 3 T2 rows. SOL backfill 3y +229.5%.
- docs/T2_VALIDATION_AND_EXPANSION_2026-08-16_RU.md.
…st) + W4 stop-loss rejected

- W5: OOS SMA calibration (train60/test40): BTC SMA40 +31.2% vs +28.5% (SMA50),
  ETH SMA60 +85.5% vs +73.4%, SOL -26.7% (bear test). SMA50 stays - no overfit.
- W4: trailing stop-loss DESTROYS T2 (-60..-90% vs +100..+400%): 400+ stops =
  stop-hunting on volatile drawdowns; SMA50 is the protection itself. Rejected.
- W1: t2_portfolio.py now 3 assets (BTC+ETH+SOL): $28,800 vs BH $23,223;
  /quant shows portfolio line.
- docs/T2_W1W4W5_2026-08-16_RU.md.
… U5 7y validation

- U5 (7y): BTC +1574% vs BH +474%, ETH +1379% vs +744%, SOL +23965% vs +7823% -
  strategy confirmed on the longest available history.
- U1 (hysteresis): BTC 50/40 improves (+141.8%, DD -44% vs +127.8%/-58%); ETH ~0;
  SOL much worse - not universal, not deployed.
- U3 (portfolio rebalance): destroys returns (+65.5% vs +242.8%, DD -85%) - against
  momentum logic. NOT deployed.
- U4: Yahoo-vs-Binance price discrepancy check (>0.5% -> TG warning) deployed in
  prod; tests 36/36 local.
- docs/T2_U1U3U4U5_2026-08-16_RU.md.
- Screened 14 coins (5y): only BTC/ETH/SOL/BNB/NEAR profitable (BNB +115% DD -38%
  best, NEAR +44%); 9 others rejected.
- X1: hysteresis (enter SMA50, exit SMA40) improves BTC/ETH/SOL on 7y (BTC +171pp,
  ETH +832pp, SOL +10542pp, better DD) but hurts BNB/NEAR - deployed selectively.
- X2: trailing stop rejected (lowers returns, no DD benefit).
- X3: SMA40 optimal on 7y; 50/40 hysteresis is robust alternative.
- Service: 5 loops + 5-asset portfolio (5,767 vs BH 2,939), daily 01:30Z.
- Tests 40/40 local, 28/28 server. docs/T2_EXPANSION_5SYMBOLS_2026-08-16_RU.md.
… 7y check

- Y4 deployed: price source switched to Binance spot (liquidity reference), Yahoo
  as fallback; tests updated (40/40 local, 28/28 server).
- Y1 (vol-target): improves DD for NEAR/BNB/ETH but cuts SOL returns - rejected.
- Y2 (SMA150 filter): BTC DD -58%->-28% but cuts returns - rejected.
- COMBO (vol-target+SMA150): looked great on 5y (BTC +184%, DD -22%) but on 7y
  +722% vs +1574% - period artifact. NOT deployed (lesson: always check full cycle).
- Y3 (volume): skipped (no consistent historical volume data).
- Base T2 remains best on 7y. docs/T2_Y1Y4_FINDINGS_2026-08-16_RU.md.
- MM verdict (2d ws data): signal strong (AUC 0.91-0.95) but maker-MM economics
  not converging yet (BNB near breakeven at 0.01% fee); needs weeks of data.
- Internet research: T2 confirmed by academia (TS momentum 31.96% annual);
  pairs trading BTC-ETH cointegration Sharpe 2.45-7.94 (untested by us, top
  priority); CS momentum works at 1-4 weeks (we tested 30-90d = reversal zone);
  funding arb 8-20% APY delta-neutral; CTREND factor alpha 2.77%/wk; mean
  reversion + volume filter 81% winrate.
- docs/TRADING_RESEARCH_INTERNET_2026-08-16_RU.md.
…cle OOS

- Pairs trading (cointegration/ratio): ETH/LINK OOS +3.7% - rejected.
- CS momentum 1-4wk: IS +4147% but OOS +20.5% vs BH +52.3% (bear tail) - rejected
  (works only in bull regimes).
- Funding arb: 1.5% APY on our 166d data (bear market) - rejected.
- CTREND approx: 5y BTC +139.6% (DD -33%) but 7y +968% vs T2 +1574% - period
  artifact - rejected.
- Mean reversion + volume: +10.3% - rejected.
- Lessons: full-cycle checks mandatory; OOS honesty; regime-dependent strategies
  unusable without regime prediction; T2 remains the only fully validated strategy.
- Found & excluded garbage UNI-USD data (1.5M% move); clean() filter added.
- docs/STRATEGY_TESTS_ALL_2026-08-16_RU.md.
…onth, NEAR protected -18%)

- Simulated T2 starting 2026-07-16 (signals from pre-start data only, 0.15% costs).
- Choppy month: portfolio -2.87% vs BH -2.55% (parity); NEAR avoided -18.3% (CASH);
  SOL whipsaw 9 trades -9.5%; positions match live paper state (consistency check).
- Conclusion: T2 is the validated working strategy; in chop ~parity, in trends
  outperforms, in bears protects. 1 month = noise; 7y full-cycle validation stands.
- docs/MONTH_AGO_TEST_2026-08-16_RU.md.
…% losing years vs 43% BH)

- Median annual T2 (7y, 5 loops): +27.6%; losing years 31% vs 43% BTC BH;
  costs already in backtests (0.15%/switch); BNB discount saves ~1%/yr.
- $10k -> $12,760 (1y) / $20,776 (3y) / $33,826 (5y) at median; pessimistic 3x-15% -> $6,140.
- Risks: 31% losing years, MaxDD -53%, 3+ year horizon mandatory.
- T2 ~ BH by median but better risk profile (bear protection).
- Recommendation: start $1-5k, 3+ horizon, Binance spot + BNB discount, parallel DCA.
- docs/T2_ECONOMICS_2026-08-16_RU.md.
… + leverage 1.25-1.5 + compound, with honest caveats

- Levers tested on 7y data: concentration SOL+BNB (CAGR 164%, median year +309%,
  DD -59%), leverage 1.25-1.5 (+124-178% CAGR but DD -66..-79%), compounding.
- Honesty: +260-300% medians skewed by bull 2021; realistic fwd p25-p50 +10-60%/yr,
  bull years +100-300%, bear -15..-46%.
- Recommendation: start $2-5k, T2 SOL+BNB + BTC+ETH in parallel, reinvest, optional
  lev 1.25 on BTC+ETH, DCA $200-500/mo.
- Rules: 3+ horizon, accept 80% DD, signal discipline, lev<=1.5, portfolio stop.
- docs/BIG_PROFIT_SCENARIOS_2026-08-16_RU.md.
…licable to our system

- SMC/ICT debunked (0/54 mechanical variants profitable after costs; no peer-
  reviewed support); our microstructure signal is the scientific alternative.
- T2 confirmed by academia (TS momentum) and practice (NostalgiaForInfinity).
- Useful OSS: Freqtrade (infra+Hyperopt), Hummingbot (MM), mlfinlab
  (meta-labeling), Riskfolio-Lib (weights), CCXT (already used), Jesse (bt discipline).
- Next steps: meta-labeling on T2 (filter losing chop entries), Riskfolio weights,
  port T2 to Freqtrade dry-run + A/B vs NFI, Hummingbot for MM later.
- docs/TRADING_THEORIES_REPOS_RESEARCH_2026-08-16_RU.md.
…port

- meta_labeling.py: RF over T2 signal (ATR/dist/trend/RSI/vol10), train 60%/OOS 40%.
  OOS gains: BTC +2344% vs +1746%, BNB +5043%, NEAR +3457%, SOL +65164%; walk-forward
  9/10 positive. Integrated via --meta-filter in run_t2_momentum (5 models deployed).
- Riskfolio-Lib Max Sharpe weights (BTC 40/SOL 28/BNB 13/NEAR 12/ETH 6%): OOS +286%
  vs +195% equal; applied in t2_portfolio (portfolio $26,671 vs $25,767).
- freqtrade_t2.py + config: T2 ported to Freqtrade (hysteresis SMA50/40, daily, spot)
  - ready for backtest after TA-Lib install; enables independent validation, Hyperopt,
  A/B vs NostalgiaForInfinity.
- Hummingbot plan documented for MM stage (after ws data accumulation).
- docs/REPO_IMPROVEMENTS_2026-08-16_RU.md.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant