2026-03-27 22:33:20 +01:00
2026-03-25 11:18:31 +01:00
2026-03-25 10:29:50 +01:00

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

# 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

# Build
docker build -t vault-dash .

# Run
docker run -p 8000:8000 vault-dash

Docker Compose

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:

TURNSTILE_SITE_KEY=1x00000000000000000000AA
TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA

Negative-path testing can use the always-fail/blocked test keys:

TURNSTILE_SITE_KEY=2x00000000000000000000AB
TURNSTILE_SECRET_KEY=2x0000000000000000000000000000000AA

Production must provide real keys via environment variables:

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:

# 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 for GitLab CI/CD and VPS deployment instructions.

License

MIT

Description
No description provided
Readme MIT 782 KiB
Languages
Python 98.9%
Shell 0.9%
Dockerfile 0.1%