Visualize options positions and analyze P/L scenarios. Upload a screenshot or enter positions manually.
# Backend
cd backend
cp .env.example .env # Add your API keys
uv sync && uv run uvicorn main:app --reload --port 8000
# Frontend
cd frontend
bun install && bun run devBackend (backend/.env):
GEMINI_API_KEY- Google Gemini API key for OCRTASTYTRADE_CLIENT_SECRET- Tastytrade OAuth client secretTASTYTRADE_REFRESH_TOKEN- Tastytrade OAuth refresh token
Optional:
GEMINI_OCR_MODEL- Gemini model for screenshot OCR (default:gemini-3.1-flash-lite; use a Flash model if accuracy matters more than cost)GEMINI_OCR_MAX_DIMENSION- longest image side sent to Gemini for OCR cost control (default:1024)DEFAULT_RISK_FREE_RATE- Override default risk-free rate (default: 0.045)DEFAULT_IMPLIED_VOLATILITY- Override default IV (default: 0.25)MARKET_DATA_CACHE_MINUTES- Cache duration in minutes (default: 30)
- Screenshot OCR (Google Gemini AI)
- Interactive P/L charts with breakeven analysis
- Real-time market data (IV Rank from Tastytrade)
- Dark/light mode
- Frontend: React + Vite + TailwindCSS + Recharts
- Backend: FastAPI + Python
- Data: Tastytrade API (IV Rank), Yahoo Finance (prices)