Files
vault-dash/README.md
2026-03-25 10:29:50 +01:00

125 lines
3.1 KiB
Markdown

# 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