Spaces:
Sleeping
Sleeping
| """ | |
| Factors & Signals Router. | |
| Endpoints for factor analysis, signal generation, and quantitative research. | |
| """ | |
| from __future__ import annotations | |
| from fastapi import APIRouter, Depends | |
| from app.dependencies import get_current_user | |
| from app.schemas.backtest import ( | |
| FactorAnalysisRequest, | |
| FactorAnalysisResponse, | |
| SignalGenerateRequest, | |
| SignalResponse, | |
| ) | |
| from app.services.factors.engine import factor_engine | |
| from app.services.signals.engine import signal_engine | |
| router = APIRouter(prefix="/quant", tags=["Quantitative Analysis"]) | |
| # ββ Factors ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| async def analyze_factors(request: FactorAnalysisRequest): | |
| """Compute multi-factor exposures for a universe of tickers.""" | |
| result = await factor_engine.compute_factor_exposures( | |
| tickers=request.tickers, | |
| factors=request.factors, | |
| period=request.period, | |
| ) | |
| return result | |
| async def get_factor_definitions(): | |
| """Get metadata for all supported factors.""" | |
| return factor_engine.get_factor_definitions() | |
| # ββ Signals ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| async def generate_signals(request: SignalGenerateRequest): | |
| """Generate quantitative trading signals for tickers.""" | |
| results = await signal_engine.generate_signals( | |
| tickers=request.tickers, | |
| signal_types=request.signal_types, | |
| period=request.period, | |
| ) | |
| return { | |
| "results": [ | |
| {"ticker": ticker, "signals": signals} | |
| for ticker, signals in results.items() | |
| ], | |
| "total_signals": sum(len(s) for s in results.values()), | |
| } | |