import os import sys import pandas as pd sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) from app.core.pa_engine import calc_atr, classify_candles, detect_ignition_point def _ignition_df(stale_age_bars=6): rows = [] base = pd.Timestamp('2026-05-10 00:00:00') for i in range(40): rows.append({ 'time': base + pd.Timedelta(hours=i), 'open': 1.0, 'high': 1.012, 'low': 0.988, 'close': 1.001, 'volume': 100.0, }) idx = len(rows) - 1 - stale_age_bars for j in [idx - 2, idx - 1]: rows[j].update({'open': 1.0, 'high': 1.003, 'low': 0.997, 'close': 1.0005}) rows[idx].update({'open': 1.0, 'high': 1.18, 'low': 0.995, 'close': 1.16, 'volume': 1000.0}) return pd.DataFrame(rows) def test_ignition_point_has_age_bars_for_recency_gate(): df = _ignition_df(stale_age_bars=6) atr = calc_atr(df, 14) candles = classify_candles(df, atr) ignitions = detect_ignition_point(candles, df, atr) assert ignitions assert any('age_bars' in ig for ig in ignitions) assert max(ig['age_bars'] for ig in ignitions) >= 6