Files
Kansaram 61e145a442 feat: launch NEXUS TERMINAL — Bloomberg-style FX options analytics platform
Full-stack forex options analytics terminal with Bloomberg-inspired UI.

Backend (FastAPI + Python):
- Garman-Kohlhagen options pricing engine with full Greeks
- Goldman Sachs gs-quant AI signals (RSI, MACD, Bollinger, Hurst, OU)
- Monte Carlo GBM simulation and volatility surface generation
- CFTC COT institutional positioning + Forex Factory economic calendar
- Live data proxy: OpenSky aircraft + USGS earthquakes (CORS-safe)
- Multi-leg strategy library (straddle, iron condor, butterfly, spreads)

Frontend (React 18 + Vite):
- NEXUS animated orbital logo (3-ring SVG) + canvas favicon animation
- Bloomberg terminal design: JetBrains Mono, color-mix() tokens
- 11 dashboard tabs: Greeks, Chart, AI Signals, 3D Surfaces, Breakeven,
  Scenarios, Monte Carlo, Institutional, Calendar, Live Map, Live Feeds
- Live World Map (react-leaflet): aircraft, earthquakes, weather radar
- Live Feeds: CoinGecko crypto top-12 + Windy.com global webcams
- Economic calendar with filters + institutional flow (CFTC COT)
- Animated landing page + session-based routing
- Fully responsive dark-only terminal design system

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 18:19:23 +05:30

50 lines
1.6 KiB
YAML

name: Python Check
on:
push:
branches: ["**"]
pull_request:
branches: ["**"]
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install dependencies
run: pip install -r requirements.txt
- name: Verify script executes without error
# Use a non-interactive matplotlib backend so plots don't open a window
env:
MPLBACKEND: Agg
run: |
cd src
python -c "
import sys, os
sys.path.insert(0, os.path.abspath('.'))
from config import *
from greeks import portfolio_greeks
from surface import risk_surface, pnl_surface
import numpy as np
S_range = np.linspace(SPOT_LOW, SPOT_HIGH, 10)
sigma_range = np.linspace(VOL_LOW, VOL_HIGH, 10)
D, G, V, Th = risk_surface(EXAMPLE_PORTFOLIO, S_range, sigma_range, DEFAULT_TIME_TO_EXPIRY, DEFAULT_RISK_FREE_RATE)
P = pnl_surface(EXAMPLE_PORTFOLIO, S_range, sigma_range, DEFAULT_TIME_TO_EXPIRY, DEFAULT_RISK_FREE_RATE, DEFAULT_SPOT, DEFAULT_VOLATILITY)
assert D.shape == (10, 10), 'Delta surface shape mismatch'
assert G.shape == (10, 10), 'Gamma surface shape mismatch'
assert V.shape == (10, 10), 'Vega surface shape mismatch'
assert Th.shape == (10, 10), 'Theta surface shape mismatch'
assert P.shape == (10, 10), 'PnL surface shape mismatch'
print('All checks passed.')
"