Implement WinRate, Bankroll, Positions UI and add Trades30d to Analytics

This commit is contained in:
Richard
2026-07-09 12:44:32 +02:00
parent 3b11b71188
commit 7964194e9e
16 changed files with 1318 additions and 28 deletions
+35 -9
View File
@@ -111,7 +111,7 @@
<div class="card-header"><h2>Top Traders</h2></div>
<div class="table-wrap">
<table class="data-table" id="topTradersTable">
<thead><tr><th>#</th><th>Trader</th><th>Platform</th><th>Score</th><th>Win Rate</th><th>PnL</th><th>Tier</th><th>Trades</th></tr></thead>
<thead><tr><th>#</th><th>Trader</th><th>Platform</th><th>Score</th><th>Win Rate</th><th>PnL</th><th>Trades (30d|All)</th></tr></thead>
<tbody id="topTradersBody"></tbody>
</table>
</div>
@@ -177,7 +177,7 @@
<th style="cursor:pointer" onclick="setTraderSort('copyability')">Copyability ↕</th>
<th style="cursor:pointer" onclick="setTraderSort('winrate')">Win Rate ↕</th>
<th style="cursor:pointer" onclick="setTraderSort('pnl')">PnL ↕</th>
<th>Tier</th>
<th style="cursor:pointer" onclick="setTraderSort('trades')">Trades (30d|All) ↕</th>
<th>Strategy</th>
<th>Actions</th>
</tr></thead>
@@ -188,7 +188,26 @@
</section>
<!-- Markets Page -->
<section class="page" id="page-markets"><h1 class="page-title">Markets</h1><div class="card"><div class="table-wrap"><table class="data-table"><thead><tr><th>Platform</th><th>Question</th><th>Volume</th><th>Liquidity</th><th>End Date</th><th>Status</th></tr></thead><tbody id="allMarketsBody"></tbody></table></div></div></section>
<section class="page" id="page-markets">
<div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:24px; flex-wrap:wrap; gap:12px;">
<div style="display:flex; align-items:center; gap:16px; flex-wrap:wrap;">
<h1 class="page-title" style="margin-bottom:0">Markets</h1>
<select id="marketsCategory" class="platform-select" onchange="loadMarkets()">
<option value="All">All Categories</option>
<option value="Politics">Politics</option>
<option value="Crypto">Crypto</option>
<option value="Sports">Sports</option>
<option value="PopCulture">PopCulture</option>
<option value="Other">Other</option>
</select>
<div class="search-box">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
<input type="text" id="marketsSearchInput" placeholder="Search markets..." autocomplete="off" onkeypress="if(event.key==='Enter') loadMarkets()">
</div>
</div>
</div>
<div class="card"><div class="table-wrap"><table class="data-table"><thead><tr><th>Platform</th><th>Question</th><th>Volume</th><th>Liquidity</th><th>End Date</th><th>Status</th></tr></thead><tbody id="allMarketsBody"></tbody></table></div></div>
</section>
<!-- Alerts Page -->
<section class="page" id="page-alerts"><h1 class="page-title">Alerts</h1><div class="card" id="alertsList"></div></section>
@@ -264,8 +283,11 @@
<button class="btn-sm btn-outline" id="btn-open-platform" style="display:none;">
🌐 Open Platform
</button>
<button class="btn-sm btn-primary" id="btn-refresh-trader">
⟱ Sync History
<button class="btn-sm btn-primary" id="btn-sync-trader">
⟱ Sync
</button>
<button class="btn-sm btn-primary" id="btn-analyze-trader">
⚙ Analyze
</button>
</div>
</div>
@@ -302,14 +324,15 @@
<div class="tab-content" id="td-tab-analytics" style="display:block;">
<div class="metrics-grid">
<div class="metric-card"><div class="metric-label">Win Rate</div><div class="metric-value" id="td-winrate">---</div></div>
<div class="metric-card"><div class="metric-label">Win Rate (30d)</div><div class="metric-value" id="td-winrate30d">---</div></div>
<div class="metric-card"><div class="metric-label">Total PnL</div><div class="metric-value" id="td-pnl">---</div></div>
<div class="metric-card"><div class="metric-label">PnL (30d)</div><div class="metric-value" id="td-pnl30d">---</div></div>
<div class="metric-card"><div class="metric-label">Total Trades</div><div class="metric-value" id="td-trades">---</div></div>
<div class="metric-card"><div class="metric-label">Est. Bankroll</div><div class="metric-value" id="td-bankroll">---</div></div>
<div class="metric-card"><div class="metric-label">Quality Edge</div><div class="metric-value" id="td-quality-score">---</div></div>
<div class="metric-card"><div class="metric-label">Copyability</div><div class="metric-value" id="td-copyability-score">---</div></div>
<div class="metric-card accent">
<div class="metric-label">Combined Score</div>
<div class="metric-value" id="td-score">---</div>
<button class="btn-sm btn-outline" id="btn-force-analyze" style="margin-top:8px; padding:4px 8px; width:100%; border-color:rgba(255,255,255,0.2);">Recalculate</button>
</div>
</div>
@@ -351,8 +374,8 @@
<div class="card-header"><h2>Active Positions</h2></div>
<div class="table-wrap">
<table class="data-table">
<thead><tr><th>Market</th><th>Outcome</th><th>Shares</th><th>Avg Price</th><th>Est. PnL</th></tr></thead>
<tbody id="td-positionsBody"><tr><td colspan="5" style="text-align:center;">Coming soon</td></tr></tbody>
<thead><tr><th>Market / Outcome</th><th>Shares</th><th>Avg Price</th><th>Current Price</th><th>Realized PnL</th><th>Unrealized PnL</th></tr></thead>
<tbody id="td-positionsBody"><tr><td colspan="6" style="text-align:center;">Loading...</td></tr></tbody>
</table>
</div>
</div>
@@ -394,6 +417,9 @@
<div class="metric-card"><div class="metric-label">Volume</div><div class="metric-value" id="md-volume"></div></div>
<div class="metric-card"><div class="metric-label">Liquidity</div><div class="metric-value" id="md-liquidity"></div></div>
<div class="metric-card"><div class="metric-label">Status</div><div class="metric-value" id="md-status"></div></div>
<div class="metric-card accent"><div class="metric-label">Bot Activity</div><div class="metric-value" id="md-bot-activity"></div></div>
<div class="metric-card"><div class="metric-label">Unique Traders</div><div class="metric-value" id="md-unique-traders"></div></div>
<div class="metric-card"><div class="metric-label">Avg Trade Size</div><div class="metric-value" id="md-avg-trade-size"></div></div>
</div>
<div class="card">
<div class="card-header"><h2>Outcomes</h2></div>