borsa / test_trading_infra.py
veteroner's picture
fix: read eligibility from scan work snapshot
2cecfa4
"""Smoke test for trading-ready infrastructure."""
import sys
def test_enhanced_features():
from ai.enhanced_features import engineer_enhanced_features, ENHANCED_FEATURES
import pandas as pd
import numpy as np
print(f"Enhanced features count: {len(ENHANCED_FEATURES)}")
dates = pd.date_range("2023-01-01", periods=200, freq="B")
df = pd.DataFrame({
"Open": np.random.uniform(90, 110, 200),
"High": np.random.uniform(95, 115, 200),
"Low": np.random.uniform(85, 105, 200),
"Close": np.random.uniform(90, 110, 200),
"Volume": np.random.uniform(1e6, 5e6, 200),
}, index=dates)
df["High"] = df[["Open", "Close"]].max(axis=1) + np.abs(np.random.normal(0, 2, 200))
df["Low"] = df[["Open", "Close"]].min(axis=1) - np.abs(np.random.normal(0, 2, 200))
result = engineer_enhanced_features(df)
missing = [f for f in ENHANCED_FEATURES if f not in result.columns]
assert not missing, f"Missing features: {missing}"
nans = result[ENHANCED_FEATURES].iloc[-1].isna().sum()
print(f"Result shape: {result.shape}, NaN in last row: {nans}/{len(ENHANCED_FEATURES)}")
print("OK: enhanced_features")
def test_backtest_import():
from analysis.walk_forward_backtest import walk_forward_backtest, FEATURES
print(f"Backtest uses {len(FEATURES)} features")
assert len(FEATURES) > 20, "Should use enhanced feature set"
print("OK: backtest imports")
def test_portfolio_import():
from analysis.portfolio_backtest import portfolio_backtest
print("OK: portfolio_backtest imports")
def test_daily_signals_import():
from trading.daily_signals import generate_signals
print("OK: daily_signals imports")
def test_paper_tracker_import():
from trading.paper_tracker import record_signals, check_status, update_outcomes, generate_report
print("OK: paper_tracker imports")
if __name__ == "__main__":
tests = [
test_enhanced_features,
test_backtest_import,
test_portfolio_import,
test_daily_signals_import,
test_paper_tracker_import,
]
failed = 0
for t in tests:
try:
t()
except Exception as e:
print(f"FAIL: {t.__name__}: {e}")
failed += 1
print(f"\n{'ALL PASSED' if failed == 0 else f'{failed} FAILED'}")
sys.exit(failed)