spb/crypto-trade-bot
Public
Python 54.7%
TypeScript 42.5%
SQL 1.9%
1import { Card, Empty, PageHeader } from "@/components/ui";23export default function PortfolioPage() {4 return (5 <>6 <PageHeader title="Portfolio Optimizer" subtitle="Ships in Phase 3. The research engine and data layer it builds on are already in place." />7 <div className="grid gap-4 md:grid-cols-2">8 <Card title="Planned scope">9 <ul className="list-disc space-y-1 pl-5 text-xs text-fg-muted">10 <li>Covariance estimation on stored bars: sample, Ledoit–Wolf shrinkage, EWMA.</li>11 <li>Allocators: volatility targeting, inverse-volatility, hierarchical risk parity, mean–variance with shrinkage, CVaR minimisation (cvxpy).</li>12 <li>Constraints: long-only (spot), per-asset caps, minimum notional per leg, turnover penalty, cash buffer.</li>13 <li>Rebalance simulation through the same event-driven backtester and cost model as single-strategy runs.</li>14 <li>Stress scenarios: correlated drawdowns, liquidity collapse, spread widening.</li>15 </ul>16 </Card>17 <Card title="Inputs it will take">18 <Empty title="No optimizer runs yet">Universe (symbols from the ingestion universe), interval, estimation window, allocator, constraints, rebalance frequency, cost model.</Empty>19 </Card>20 </div>21 </>22 );23}24