Symbol stats: the win chance with no commission, spread or swap beside the real one

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Li
2026-09-26 18:47:50 -05:00
co-authored by Claude Opus 5.5
parent 957b9a50fe
commit 302e9b4911
6 changed files with 21 additions and 6 deletions
+1
View File
@@ -149,6 +149,7 @@ export async function GET() {
multiplier: best.multiplier,
volatilityPerDay: best.volatilityPerDay,
winProbability: best.winProbability,
winProbabilityNoFees: best.winProbabilityNoFees,
swapReserve: best.swapReserve,
leverage: best.leverage,
cost: best.cost,
+1
View File
@@ -400,6 +400,7 @@ function AccountRow({ account, firm, hideDead, privacy, onAssigned }: {
+ (account.holdEstimate.leverage !== null ? ` (${account.holdEstimate.leverage}× max)` : '')
+ ` at a measured volatility of ${(account.holdEstimate.volatilityPerDay * 100).toFixed(2)}%/day over the past week`
+ (account.holdEstimate.winProbability !== null ? `, wins ~${Math.round(account.holdEstimate.winProbability * 100)}% of the time` : '')
+ (account.holdEstimate.winProbabilityNoFees !== null ? ` (~${Math.round(account.holdEstimate.winProbabilityNoFees * 100)}% with no commission, spread or swap)` : '')
+ (account.holdEstimate.swapReserve > 0 ? `; its take-profit carries ~$${fmt(account.holdEstimate.swapReserve)} of expected swap` : '')
+ `. Expected cost ~$${fmt(account.holdEstimate.cost)} (spread, commissions, swap) — the cheapest candidate that reaches the target hold`}
>