Bu5hm4nn 9a3b835c95 feat(DATA-DB-004): add Databento settings UI and independent scenario config
- Updated backtests page with Data Source card
  - Data source selector (databento/yfinance/synthetic)
  - Dataset dropdown (XNAS.BASIC, GLBX.MDP3)
  - Resolution dropdown (ohlcv-1d, ohlcv-1h)
  - Cost estimate display (placeholder for now)

- Added Scenario Configuration card
  - Underlying symbol selector (GLD/GC/XAU)
  - Start/end date inputs
  - Start price input (0 = auto-derive)
  - Underlying units, loan amount, margin call LTV

- BacktestPageService updates:
  - get_historical_prices() with data_source parameter
  - get_cost_estimate() for Databento cost estimation
  - get_cache_stats() for cache status display
  - Support for injected custom provider identity
  - DataSourceInfo for provider metadata

- BacktestSettingsRepository integration:
  - Load/save settings per workspace
  - Default values from BacktestSettings.create_default()

- Test update: TLT validation message changed to reflect
  new multi-symbol support (GLD, GC, XAU)
2026-03-29 11:12:11 +02: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%