feat: add backtesting engine with 4 strategies (TDD)
Strategies: - POST /backtest/sma-crossover - SMA crossover (short/long window) - POST /backtest/rsi - RSI oversold/overbought signals - POST /backtest/buy-and-hold - passive benchmark - POST /backtest/momentum - multi-symbol momentum rotation Returns: total_return, annualized_return, sharpe_ratio, max_drawdown, win_rate, total_trades, equity_curve (last 20 points) Implementation: pure pandas/numpy, no external backtesting libs. Shared _compute_metrics helper across all strategies. 79 new tests (46 service unit + 33 route integration). All 391 tests passing.
This commit is contained in:
2
main.py
2
main.py
@@ -38,6 +38,7 @@ from routes_shorts import router as shorts_router # noqa: E402
|
||||
from routes_surveys import router as surveys_router # noqa: E402
|
||||
from routes_technical import router as technical_router # noqa: E402
|
||||
from routes_portfolio import router as portfolio_router # noqa: E402
|
||||
from routes_backtest import router as backtest_router # noqa: E402
|
||||
|
||||
logging.basicConfig(
|
||||
level=settings.log_level.upper(),
|
||||
@@ -83,6 +84,7 @@ app.include_router(economy_router)
|
||||
app.include_router(surveys_router)
|
||||
app.include_router(regulators_router)
|
||||
app.include_router(portfolio_router)
|
||||
app.include_router(backtest_router)
|
||||
|
||||
|
||||
@app.get("/health", response_model=dict[str, str])
|
||||
|
||||
Reference in New Issue
Block a user