F
Finelytics
Portfolio Report Agent

AI‑Portfolio Reports
nativ mit n8n & Supabase

Webhook rein, Daten laden, Signale berechnen, JSON rendern – alles in einem glatten, schnellen, statischen Frontend. Zero Backend nötig.

⚡ Live JSON Render 🧭 Clean UI 🔒 SSL by Netlify/Vercel
report.json
{
  "meta": { "portfolio_id": 123, "timeframe": "1h" },
  "kpis": { "win_rate": 0.87, "pnl": 12432.55, "sharpe": 1.21, "drawdown": -0.12 },
  "holdings": [ {"symbol":"BTCUSDT","weight":0.5,"qty":0.25,"avg_price":60000,"price":65000} ],
  "signals": [ {"symbol":"BTCUSDT","rsi":31,"ema20":64800,"ema50":64100,"signal":"buy","confidence":82,"ts":"..."} ]
}

1) Settings

Lokal gespeichert

Supabase

v2 JS
Tabellen: portfolios, holdings, signals_log

n8n Endpoints

n8n sollte Content-Type: application/json und Access-Control-Allow-Origin: * senden.

2) Run / Trigger

Webhook Payload

POST JSON

Erwartetes JSON (Schema)

{
  "meta": { "portfolio_uuid": "UUID", "timeframe": "1h", "run_at": "ISO" },
  "kpis": { "win_rate": 0.87, "pnl": 12432.55, "sharpe": 1.21, "drawdown": -0.12 },
  "holdings": [ {"symbol":"BTCUSDT","weight":0.5,"qty":0.25,"avg_price":60000,"price":65000} ],
  "signals": [ {"ts":"ISO","symbol":"BTCUSDT","rsi":31,"ema20":64800,"ema50":64100,"signal":"buy","confidence":82} ],
  "equity_curve": { "labels": ["10:00","11:00"], "values": [100000,100450] }
}

3) Report

Win‑Rate
PnL
Sharpe
Drawdown

Holdings

live
SymbolWeightQtyAvgPrice

Signals

50 neueste
TSSymbolRSIEMA20EMA50SignalConf

Equity Curve

Chart.js