Initial implementation of Options Sidekick
Full-stack iOS options trading assistant: - Python FastAPI backend with SQLite, APScheduler (15-min position monitor), APNs push notifications, and yfinance market data integration - Signal engine: IV Rank (rolling HV proxy), SMA-50/200, swing-based support/resistance, earnings detection, signal strength scoring and noise-resistant SHA hash for change detection - Recommendation engine: covered call and cash-secured put strike/expiry selection across 0DTE, 1DTE, weekly, and monthly horizons - REST API: /devices, /portfolio, /recommendations, /positions, /signals, /alerts - iOS SwiftUI app (iOS 17+): dashboard, recommendations, trades, portfolio, and alerts tabs with push notification deep-linking - Unit + integration tests for signal engine and API layer Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
14
backend/app/routers/signals.py
Normal file
14
backend/app/routers/signals.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from app.models.schemas import SignalSnapshot
|
||||
from app.services.signal_engine import compute_signals
|
||||
|
||||
router = APIRouter(prefix="/signals", tags=["signals"])
|
||||
|
||||
|
||||
@router.get("/{ticker}", response_model=SignalSnapshot)
|
||||
def get_signals(ticker: str):
|
||||
ticker = ticker.upper()
|
||||
snap = compute_signals(ticker)
|
||||
if snap is None:
|
||||
raise HTTPException(status_code=503, detail=f"Could not fetch market data for {ticker}")
|
||||
return snap
|
||||
Reference in New Issue
Block a user