whales demoted to volume class everywhere + status vocabulary in the backtest feed
- all three whales -> volume (conviction-only, 4%/bet); truth-scored 30d replay IMPROVES $2.5k -> $10.5k (+946%, 230W/54L/88R): follow-all at 12% was burning bankroll on low-conviction in-play scraps. Demoted wallets get floors PINNED from trusted cache p80 (Stavenson $4,760 / 0x4bFb $1,090 / ArbTrader $168) — their dust-heavy recent books auto-derive uselessly low. - portfolio feed rows now carry status won/lost/refund (missed too), mirroring the live bot; no 'sold' by design (hold-to-resolution replay never exits early). Dashboard renders refunds amber with W/L/R counts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+3
-3
@@ -33,17 +33,17 @@
|
||||
{
|
||||
"wallet": "0xf5fe759cece500f58a431ef8dacea321f6e3e23d",
|
||||
"name": "Stavenson",
|
||||
"class": "whale"
|
||||
"class": "volume"
|
||||
},
|
||||
{
|
||||
"wallet": "0x73afc8160c17830c0c7281a7bf570c871455b880",
|
||||
"name": "0x4bFb-whale",
|
||||
"class": "whale"
|
||||
"class": "volume"
|
||||
},
|
||||
{
|
||||
"wallet": "0x72e1597864456eda62878413cf3e60c332e4a45d",
|
||||
"name": "ArbTrader",
|
||||
"class": "whale"
|
||||
"class": "volume"
|
||||
}
|
||||
]
|
||||
}
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+14
-1
@@ -421,10 +421,23 @@ def main():
|
||||
"current": [{"title": c.get("title", ""), "name": c["name"], "outcome": c.get("outcome", ""),
|
||||
"stake": c.get("stake"), "val": round(c["val"], 2), "pnl": round(c["pnl"], 2),
|
||||
"end": c.get("end")} for c in sorted(current, key=lambda c: c["entry_t"])],
|
||||
# status mirrors the live bot's vocabulary: won / lost / refund (50/50
|
||||
# scratch — pays $0.50/share, so "not a win" can still be P&L-positive
|
||||
# below 50¢ entries). No "sold" here BY DESIGN: this replay models
|
||||
# hold-to-resolution, so it never exits early — only the live bot,
|
||||
# which mirrors real exits, can show SOLD.
|
||||
"resolved": [{"title": r.get("title", ""), "name": r["name"], "won": r["won"],
|
||||
"status": ("refund" if r.get("refund")
|
||||
else "won" if r["won"] else "lost"),
|
||||
"stake": r.get("stake"), "pnl": round(r["pnl"], 2), "date": r.get("res_t")}
|
||||
for r in resolved[:60]],
|
||||
"missed": [{"title": m.get("title", ""), "name": m["name"], "won": m.get("won"),
|
||||
"missed": [{"title": m.get("title", ""), "name": m["name"],
|
||||
"won": (None if "won" not in m
|
||||
else (m["won"] if m.get("wp") is None else m["wp"] > 0.5)),
|
||||
"status": (None if "won" not in m
|
||||
else "refund" if m.get("wp") == 0.5
|
||||
else "won" if (m["won"] if m.get("wp") is None else m["wp"] > 0.5)
|
||||
else "lost"),
|
||||
"stake": m.get("stake"), "capped": bool(m.get("capped")),
|
||||
"pnl": round(m["pnl"], 2), "date": m.get("res_t")}
|
||||
for m in missed[:60]],
|
||||
|
||||
Reference in New Issue
Block a user