feat: add strategy API endpoints
- POST /api/strategy/multi-factor - POST /api/strategy/quality - POST /api/strategy/value-momentum Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
3f8ef7e108
commit
6a6ccc9c57
@ -1,5 +1,6 @@
|
||||
from app.api.auth import router as auth_router
|
||||
from app.api.admin import router as admin_router
|
||||
from app.api.portfolio import router as portfolio_router
|
||||
from app.api.strategy import router as strategy_router
|
||||
|
||||
__all__ = ["auth_router", "admin_router", "portfolio_router"]
|
||||
__all__ = ["auth_router", "admin_router", "portfolio_router", "strategy_router"]
|
||||
|
||||
63
backend/app/api/strategy.py
Normal file
63
backend/app/api/strategy.py
Normal file
@ -0,0 +1,63 @@
|
||||
"""
|
||||
Quant strategy API endpoints.
|
||||
"""
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.database import get_db
|
||||
from app.api.deps import CurrentUser
|
||||
from app.schemas.strategy import (
|
||||
MultiFactorRequest, QualityRequest, ValueMomentumRequest, StrategyResult,
|
||||
)
|
||||
from app.services.strategy import MultiFactorStrategy, QualityStrategy, ValueMomentumStrategy
|
||||
|
||||
router = APIRouter(prefix="/api/strategy", tags=["strategy"])
|
||||
|
||||
|
||||
@router.post("/multi-factor", response_model=StrategyResult)
|
||||
async def run_multi_factor(
|
||||
request: MultiFactorRequest,
|
||||
current_user: CurrentUser,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""Run multi-factor strategy."""
|
||||
strategy = MultiFactorStrategy(db)
|
||||
return strategy.run(
|
||||
universe_filter=request.universe,
|
||||
top_n=request.top_n,
|
||||
base_date=request.base_date,
|
||||
weights=request.weights,
|
||||
)
|
||||
|
||||
|
||||
@router.post("/quality", response_model=StrategyResult)
|
||||
async def run_quality(
|
||||
request: QualityRequest,
|
||||
current_user: CurrentUser,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""Run super quality strategy."""
|
||||
strategy = QualityStrategy(db)
|
||||
return strategy.run(
|
||||
universe_filter=request.universe,
|
||||
top_n=request.top_n,
|
||||
base_date=request.base_date,
|
||||
min_fscore=request.min_fscore,
|
||||
)
|
||||
|
||||
|
||||
@router.post("/value-momentum", response_model=StrategyResult)
|
||||
async def run_value_momentum(
|
||||
request: ValueMomentumRequest,
|
||||
current_user: CurrentUser,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""Run value-momentum strategy."""
|
||||
strategy = ValueMomentumStrategy(db)
|
||||
return strategy.run(
|
||||
universe_filter=request.universe,
|
||||
top_n=request.top_n,
|
||||
base_date=request.base_date,
|
||||
value_weight=request.value_weight,
|
||||
momentum_weight=request.momentum_weight,
|
||||
)
|
||||
@ -4,7 +4,7 @@ Galaxy-PO Backend API
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from app.api import auth_router, admin_router, portfolio_router
|
||||
from app.api import auth_router, admin_router, portfolio_router, strategy_router
|
||||
|
||||
app = FastAPI(
|
||||
title="Galaxy-PO API",
|
||||
@ -24,6 +24,7 @@ app.add_middleware(
|
||||
app.include_router(auth_router)
|
||||
app.include_router(admin_router)
|
||||
app.include_router(portfolio_router)
|
||||
app.include_router(strategy_router)
|
||||
|
||||
|
||||
@app.get("/health")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user