# Vault Dashboard A real-time options hedging dashboard for Lombard loan protection strategies. ## Features - **Live Options Data**: Integration with Interactive Brokers and free data sources - **Hedge Calculations**: Black-Scholes pricing, Greeks, strategy comparisons - **Interactive Charts**: TradingView-quality visualizations with Lightweight Charts - **Strategy Analysis**: Protective puts, collars, laddered positions - **Real-time Updates**: WebSocket-based live data streaming ## Quick Start ### Local Development ```bash # Create virtual environment python3 -m venv .venv source .venv/bin/activate # Install dependencies pip install -r requirements.txt # Run development server python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` ### Docker ```bash # Build docker build -t vault-dash . # Run docker run -p 8000:8000 vault-dash ``` ### Docker Compose ```bash docker-compose up -d ``` ### Turnstile configuration Workspace creation on the public welcome page is protected by Cloudflare Turnstile. Local and test environments may use Cloudflare's published test keys: ```bash TURNSTILE_SITE_KEY=1x00000000000000000000AA TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA ``` Negative-path testing can use the always-fail/blocked test keys: ```bash TURNSTILE_SITE_KEY=2x00000000000000000000AB TURNSTILE_SECRET_KEY=2x0000000000000000000000000000000AA ``` Production must provide real keys via environment variables: ```bash TURNSTILE_SITE_KEY=... TURNSTILE_SECRET_KEY=... ``` In Forgejo deployment: - `vars.TURNSTILE_SITE_KEY` provides the public site key - `secrets.TURNSTILE_SECRET_KEY` provides the server-side secret key Browser tests run with `APP_ENV=test` and the Turnstile test keys. ## Architecture ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ IBKR │────▶│ FastAPI │────▶│ Redis │ │ Gateway │ │ Backend │ │ (cache) │ └─────────────┘ └─────────────┘ └─────────────┘ │ ▼ ┌─────────────────────────────┐ │ NiceGUI Dashboard │ │ (WebSocket client) │ └─────────────────────────────┘ ``` ## Configuration Copy `config/settings.example.yaml` to `config/settings.yaml` and configure: ```yaml # Broker settings broker: type: ibkr # or alpaca, yfinance # IBKR settings ibkr: host: 127.0.0.1 port: 7497 # TWS: 7497, Gateway: 4001 client_id: 1 # Portfolio defaults portfolio: gold_value: 1000000 loan_amount: 600000 ltv_ratio: 0.60 margin_call_threshold: 0.75 # Data sources data: primary: yfinance # or ibkr, alpaca cache_ttl: 300 ``` ## Deployment See [DEPLOYMENT.md](DEPLOYMENT.md) for GitLab CI/CD and VPS deployment instructions. ## License MIT