diff --git a/backend/app/api/portfolio.py b/backend/app/api/portfolio.py index 2c01e38..5eae1c5 100644 --- a/backend/app/api/portfolio.py +++ b/backend/app/api/portfolio.py @@ -14,7 +14,9 @@ from app.schemas.portfolio import ( TargetCreate, TargetResponse, HoldingCreate, HoldingResponse, TransactionCreate, TransactionResponse, + RebalanceResponse, RebalanceSimulationRequest, RebalanceSimulationResponse, ) +from app.services.rebalance import RebalanceService router = APIRouter(prefix="/api/portfolios", tags=["portfolios"]) @@ -289,3 +291,28 @@ async def add_transaction( db.commit() db.refresh(transaction) return transaction + + +@router.get("/{portfolio_id}/rebalance", response_model=RebalanceResponse) +async def calculate_rebalance( + portfolio_id: int, + current_user: CurrentUser, + db: Session = Depends(get_db), +): + """Calculate rebalancing for a portfolio.""" + portfolio = _get_portfolio(db, portfolio_id, current_user.id) + service = RebalanceService(db) + return service.calculate_rebalance(portfolio) + + +@router.post("/{portfolio_id}/rebalance/simulate", response_model=RebalanceSimulationResponse) +async def simulate_rebalance( + portfolio_id: int, + data: RebalanceSimulationRequest, + current_user: CurrentUser, + db: Session = Depends(get_db), +): + """Simulate rebalancing with additional investment amount.""" + portfolio = _get_portfolio(db, portfolio_id, current_user.id) + service = RebalanceService(db) + return service.calculate_rebalance(portfolio, additional_amount=data.additional_amount)