Wick Crypto Engine
arrow_back Back to Bot Fleet Bot Detail · Prototype

Bot Titles

MON-WALLET-COPY-V1
content_copy
MON-WALLET-COPY-V1 MON STOPPED · STOPPED_UNKNOWN
Monad Wallet Copytrade · Smart-Money Wallet Mirror
contract 0xd4e0...3790
24h gas burn0
24h CB halts0
Monad smart-money copytrade — primary Monad bet since 2026-05-12. Captures every trade by ~1k tracked wallets via monadLogs/monadNewHeads at Proposed commit state (~1s ahead of standard subscribes). ~20 strategies analyze the tape and emit to strategy-fires.ndjson; mon-b3c-fullauto consumes and buys, mon-b3c-exit handles the ladder. "One bot" is a roll-up — every Monad strategy contributes signals to the same firehose, executor, and P&L. Per-strategy attribution in the table below.

Performance So Far

MON-WALLET-COPY-V1
Execution Funnel · last 24hdetect → validate → fire → land → profit
updown (16)external/static·upper-left = inputs · upper-right = outputs · hover for role
0
Signals
→
0
Sims
→
0
Broadcasts
→
0
Mined
→
0
Wins
Net P&L (USD)
-$0.07
Wins
108
Losses
222
Total Trades
330
Win Rate
32.7%
Gas Spent
—
Contract Balance
—
Pool of funds accessed by multiple bots (MON-V2-ARB-V1, BSC-VENUS-LIQ-V1)

Future Performance Expectations · 7d / 30d / 90d

MON-WALLET-COPY-V1
Baseline · 2026-05-21
REBASED 2026-06-11. Lifetime is net-negative (~-$0.8 to -$1.9 depending on how the 06-01 -$1.46 catastrophe is amortised) but that whole book is now known to be CONTAMINATED — captured while the whisper pre-trade feed ran 18.5 days stale and the blind-position exit-price feed was rate-limit-banned (both fixed 2026-06-11). Risk model is proven (20-MON ceiling, net-neg→T0 demote, blind-position active stop, catastrophic pager — validated 06-05). The question is NOT "does a tail-contained version run net-positive" answered on the old data; it is "what is the TRUE edge per signal now that the sensors are live" — and that has to be measured fresh. Treat the ranges below as resuming from a clean 2026-06-11 baseline.
WindowNet USDFiresTier / stateShape · what has to happen
7d-$1 – +$240–1205 MON unproven · 20 MON ceiling (no 50)CLEAN-DATA WINDOW (from 2026-06-11). First honest read of the edge: whisper signals now arrive at head, blind positions get priced for exits. Watch whether whisper-triggered strategies (contract-probe, whisper-confirms-cluster) stop bleeding once they fire on fresh tokens instead of 18-day-old rugs. Net likely still near breakeven at floor size, but the DATA finally means something — this is the sample every concentrate/kill call should be based on, not the contaminated history.
30d$0 – +$10250–50020 MON for proven tail-survivors onlyCONCENTRATE phase: once a winner (cluster-velocity-v2 is the candidate — +$0.52, mean +30%, PF 86) clears ≥10 capped closures with no single < -$0.60, raise its ceiling selectively. Bleeders stay at T0. Upside comes from sizing the ASYMMETRIC winners, not from more fires.
90d+$10 – +$60700–1,40020–50 MON for ≤3 proven winners · 5 MON restStrategy stack collapses from ~20 noisy signals to the 2-3 that survive a tail at size. Per-fire average creeps up via selective ceiling raises on survivors — NOT a blanket scale. Entry-side exitability filter (block tokens whose round-trip cannot clear) cuts the honeypot tax.
Kill condition
KILL-CLOCK RESET to 2026-06-11 (the old clock ran on contaminated data — see baseline). New gate: if 30 days after the 2026-06-11 sensor fixes NO strategy clears the cap-survival bar (≥10 capped closures on POST-06-11 fires, net-positive, no single < -$0.60) AND total clean-window net stays below $0, the edge is genuinely absent — decommission to a pure data-collection feed (5 MON, no scaling) or retire the slot. Until ~06-18 there is not enough clean data to invoke this; do not kill on the stale book.
Scaling behavior
NOT linear — sizing is now tail-gated. A strategy may only have its 20-MON ceiling raised after it proves tail-survival at the cap; blanket MON scaling is what produced the -$1.46. Real upside lever: concentrate size on tail-survivor winners + an entry-side exitability filter.
Ranges are expectation, not commitment. Lower bound: code stays as-is + market delivers its average. Upper bound: full sprint moves shipped + favorable market state. Decommission deadline 2026-06-04 is binary — kill conditions above are the threshold.

Strategy Roll-up

MON-WALLET-COPY-V1
StrategySeed WR%Live n→ n=30Live WR%Mean %PFGross $Gas $Net $ (a/gas)FiresStatus
cluster-alpha-v13975✓38.7+10.8310.94+$0.56-$1.05$-0.49553BELOW FLOOR
contract-probe-v12748✓29.2-4.650.61$-0.12-$0.65$-0.77188BELOW FLOOR
whisper-confirms-cluster-v13147✓29.8+11.664.20+$0.33-$0.63$-0.30404BELOW FLOOR
cross-chain-trader-v14031✓38.7+2.361.24$-1.01-$0.40$-1.41267BELOW FLOOR
cluster-velocity-v21330✓13.3+12.8330.70+$0.36-$0.40$-0.04553BELOW FLOOR
narrative-rotation-v15028228.6-5.230.25$-0.11-$0.40$-0.51286BELOW FLOOR
moonshot-follow-v13022854.5-2.790.64$-0.24-$0.27$-0.50123ACTIVE
stealth-twap-v150151526.7+5.647.32+$0.14-$0.20$-0.06313BELOW FLOOR
elite-stalker-v163121825.0-3.870.06$-0.04-$0.15$-0.20—BELOW FLOOR
sniper-follow-v16382237.5+15.107.93+$0.15-$0.12+$0.03—BELOW FLOOR
moonbag-detector-v14342675.0+12.464.77+$0.05-$0.05$-0.00—SEEDING
momentum-pump-v17542625.0+0.535.55+$0.00-$0.06$-0.06—SEEDING
golden-window-v1704260.0-2.510.00$-0.01-$0.05$-0.06—SEEDING
active-scanner-v1—32733.3-1.270.09$-0.01-$0.04$-0.05—SEEDING
holder-growth-v1553270.0-11.420.00$-0.12-$0.03$-0.1634SEEDING
elite-single-v16522850.0+1.209.24+$0.01-$0.03$-0.0260SEEDING
ignition-detector-v165129100.0+8.41—+$0.01-$0.01$-0.00—SEEDING
elite-convergence-v180—————————SEEDING
confluence-of-3-v170—————————SEEDING
dev-deployer-launch-v135————————1SEEDING
telegram-momentum-v150————————1SEEDING
Closed: 337Open: 20Total Net USD: $-4.59Generated: 2026-07-14T12:45:02Z
Every Monad wallet-watch strategy contributes signals to the same firehose (monad/strategy-fires.ndjson) → mon-b3c-fullauto execution. Live stats from monad/b4-attribution.json (auto-refreshed by b4-attribution.js). Seed WR from monad/strategy-wr-registry.json. Fires from monad/strategy-state.json. Sorted by closed-trade count desc.

Trigger-Wallet Attribution

MON-WALLET-COPY-V1
Trigger WalletnWR%Mean %PFNet USD
0x55ac14aad096…TOP1100.0+135.21—+$0.1435
0x5a65e2f31187…TOP475.0+54.12433.94+$0.0924
0x95b9a20bf689…TOP1100.0+92.48—+$0.0510
0x6e1a61d1ebfe…TOP1100.0+10.63—+$0.0376
0xb8ee88d0ede1…TOP250.0+4.332.35+$0.0168
0x319434b2a0dc…TOP2100.0+4.22—+$0.0133
0xca85555bd853…TOP1100.0+24.17—+$0.0037
0x2c7bdb473615…TOP250.0-5.400.41$-0.0015
0xde333303e5c3…TOP1100.0+2.68—$-0.0031
0xa7f3633b4f53…TOP1100.0+4.97—$-0.0081
0x7aae3e0fede9…TOP1100.0+4.50—$-0.0082
0x4fb20ae51c44…TOP1100.0+4.93—$-0.0090
Bottom performers (not already shown above) ↓
0xb01caea8c6c4…BOTTOM3040.0+2.611.26$-1.3889
0xde222221be03…BOTTOM10.0-54.390$-0.2634
0xf52fb36f52da…BOTTOM20.0-20.770$-0.2153
0x11b68ed43964…BOTTOM10.0-98.910$-0.0817
0xceca2c143967…BOTTOM10.0-99.230$-0.0816
0xc06ebbefd940…BOTTOM10.0-59.410$-0.0552
0x5964e651d8a5…BOTTOM333.3-4.950.11$-0.0551
0x3a2c50d6892f…BOTTOM20.0-10.370$-0.0407
Showing top 12 + bottom 8 of 72 trigger wallets with closed trades (~1000 tracked total). Click wallet → monadscan. The top-decile is the candidate "high-trust cohort" — promote their votes to higher weight in confluence checks; demote the bottom-decile.

Recent Fire Attempts

MON-WALLET-COPY-V1
no recent fire
no recent fire
no recent fire
no recent fire
no recent fire
no recent fire
no recent fire
Last 7 TX_SEND events (newest left). Outcome stitched from log within ~80-line window after broadcast. Empty boxes = no recent fire to show.

Token Reverters (24h)

MON-WALLET-COPY-V1
No on-chain reverts in last 24h.
White / black lists are located at /bots/PLStokens.

Biggest Block

MON-WALLET-COPY-V1

Biggest block (2026-06-11): a stale sensor was masking the edge question — the "edge disproven" read was made on broken data. RUNNING · HEARTBEATING (mon-b3c-fullauto + mon-b3c-exit services active). Two silent failures found + fixed this session: (1) the whisper pre-trade feed was 18.5 days stale (cursor 76.5M vs head 80.5M — it could never catch a 0.4s/block chain at 100 blk/8s; now clamped to fast-forward to head), and (2) the blind-position exit-price safety net was 100% LiFi-429 banned (no throttle behind a header that claimed one; now spaced to 16s/call). Both verified live. See the top two items in "Optimisation ideas" for the mechanics.

Why this matters more than the risk story. The prior verdict (below) concluded the mechanism is sound but "the edge per signal is too thin to clear gas — DISPROVEN at safe size." That conclusion rested on a post-fix sample of ~18 closures captured WHILE whisper was 18 days stale and the exit safety net was banned. Several strategies (contract-probe-v1 mean −60.8%/trade with −99% rugs, whisper-confirms-cluster-v1 8.3% WR) were mechanically buying three-week-old "pre-launch" signals — tokens that had already rugged by purchase. Their bleed is an artifact of the stale feed, not a property of the thesis. The edge has not actually been tested on clean data yet.

Honest read (revised): the risk model is PROVEN (tail capped, validated 06-05); the EDGE is now UNKNOWN-on-clean-data, not disproven. 2026-06-11 is a clean-data epoch boundary — pre-06-11 per-strategy P&L should not drive go/kill calls. Path to "yes": let ≥7d of fresh closures accrue post-fix, re-read per-strategy edge (especially the never-fairly-tested EARLY-ENTRY hypothesis), THEN decide concentrate-vs-kill. The asymmetric winners (cluster-velocity-v2, sniper-follow-v1) are real but were judged on a stale book; bleeders stay auto-demoted to T0 while the clean sample builds.

Fantasy

MON-WALLET-COPY-V1
If we had some way to...

✓ SHIPPED 2026-06-10 — this was the standing fantasy ("b4 per-wallet P&L sits in a state file nobody reads") and it is now wired: monad/intel-sources/wallet-trust-builder.js merges each trigger wallet's OWN tape P&L (pnl-stats) with OUR realized copy P&L (b4-attribution.byWallet) into monad/wallet-trust.json. ELITE cohort (tape-proven + copy-record-not-contradicting) earns an upside-only T1 size floor at fire time (b3c-fullauto trust sizing, B3C_TRUST_SIZING=off to disable); confirmed bleeders from EITHER view auto-refresh wallet-bleeder-blocklist.json (manual seeds preserved) — the dual-view catches wallets like 0xb01c… that look acceptable on tape but cost us money to copy. Runs at the end of the 2h wallet-scoring cron chain, which also resurrected the whole Layer 3-6 scoring stack (pnl-fifo/classifier/flags/sandwich/funding) that had been silently dead since 2026-05-07..09 (tier1 was 0 for a month). Remaining upside: count elite votes 2-3× in confluence checks, not just size floors.

Suggestions for Improvement

MON-WALLET-COPY-V1
  • 01
    CRITICAL
    **RE-BASELINE BEFORE ANY VERDICT (2026-06-11).** The "edge is DISPROVEN at safe size" / "cohort-copy has no measurable edge" conclusions below were drawn on data captured while (a) whisper ran 18.5 days stale and (b) the exit-price safety feed was rate-limit-banned (next item). They are CONTAMINATED. Action: treat 2026-06-11 as a clean-data epoch boundary; ignore pre-06-11 per-strategy P&L for go/kill decisions and re-accrue ≥7d of fresh closures before re-judging edge. The kill-clock (30d cap-survival window) should restart from 2026-06-11, not 2026-06-03. In particular the EARLY-ENTRY hypothesis (first-N-buyers + proven-early-wallet) was NEVER fairly tested — its data source IS the whisper feed that was stale. Re-run the day-14 early-entry validation only on post-06-11 captures.
  • 02
    HIGH
    ✓ FIXED 2026-06-11 (two rounds) — the blind-position exit safety net was rate-limit-banned. spot-price-poller.js supplies SYNTHETIC prices for open positions whose token never hit our trade tape (the exact "blind position" class behind the −95% catastrophe) so the exit ladder can still fire. It was getting 100% LiFi HTTP-429. Round 1: its header promised MAX_REQ=4/min but NO throttle existed — 12 open positions fired 12 back-to-back quotes; added 16s LIFI_MIN_GAP_MS spacing + re-entrancy guard. **Round 2 (same-day check): burst spacing alone re-banned the key** — sustained ~144 quotes/hr against what is clearly an HOURLY quota shared with the exit-daemon's blind probes ("retry in 51 minutes"). Added (a) per-token quote cooldown (TOKEN_QUOTE_COOLDOWN_MS=15min — dust-position exit ladders don't need 90s granularity; the blind stop has a 2h grace anyway) and (b) a global 429 backoff that parses the server's stated ban window and stops ALL quoting until it passes, instead of hammering through the ban. Worst-case ~48 quotes/hr now. **Still-open follow-up:** an on-chain quoter fallback (slot0/Quoter) would remove the LiFi dependency from the safety net entirely; and a dedicated key for the executor's probes would de-couple the two consumers.
  • 03
    HIGH
    **Add a pipeline-freshness panel — this class of bug hid for ~18 days because nothing watched it.** Every cursor-driven daemon (whisper approval/bridge, decoder, price-joiner, funding-graph, cluster-watcher) should publish {lastCursorBlock, headBlock, lagBlocks, lagMinutes} to one monad/pipeline-freshness.json, surfaced as a panel here with amber/red thresholds per layer. The existing DELAYS section on /detective documents EXPECTED latencies; this measures ACTUAL lag so a stuck cursor pages instead of silently poisoning strategies. Pair with the heartbeat-stall watcher (which checks file mtimes) — mtime was fresh on whisper-state.json the whole time (it kept writing), so mtime-liveness missed it; lag-vs-head is the missing signal. ~1-2h.
  • 04
    CRITICAL
    **SUPERSEDED THESIS (2026-05-30): the cohort-copy approach has no measurable edge.** Five independent backtests on 38d of real signal-observations proved post-confirmation cohort signals do not predict pumps — wallet COUNT + confidence cap at ~8% hitting +100%@24h (daily-best-pick hit 2x on 0 of 9 days), 1h-MOMENTUM is look-ahead bias (delayed entry → median −7%), and cohort QUALITY (proven/elite buyers) shows NO separation — MORE proven buyers is WORSE (crowding = you are late). By the time ~1k wallets confirm a token (~6h), the move is gone. The R-round cohort-refresh / floor-override / per-wallet-attribution suggestions below are tuning a DEAD thesis — deprioritized. Surviving glimmer = EARLY-ENTRY (first ~3 buyers alongside a proven-EARLY wallet, BEFORE confirmation). New capture daemons launched 2026-05-30: launch-cohort-capture.js (first-30 buyers/launch + quality) + forward-lattice.js (dense forward prices on every launch) — validate the early-entry hypothesis at day-14 on the wide dataset they build. Loss-avoidance (sellability / exit-liquidity gating) is the only PROVABLE edge today.
  • 05
    CRITICAL
    **PulseChain port-over plan (2026-05-30) — do NOT port the cohort-confirmation thesis (proven dead).** Port instead: (1) EARLY-ENTRY — stand up the same first-N-buyer + forward-price-lattice capture on PulseChain new pools (we already run burned-LP + new-pool detection), then fire on first-few-buyers-with-a-proven-early-wallet, NOT on cohort confirmation. (2) EXIT-LIQUIDITY gating — a pre-entry round-trip sell-sim (reject ratio < 0.8) + exit-on-thinning; the Monad book lost ~44% of realized P&L to just 3 honeypot/−99% delayed-rug exits. (3) Portable infra: proposal/sentinel-time capture (PLS-AGG already has the sentinel feed), emit-time stablecoin/verdict blacklist filter, per-token cooldown, daily-PnL halt, systemd execution, canonical netNative accounting. SEQUENCE: capture first (≥14d) → validate strike-rate → only then build the executor. Do not ship a PulseChain copytrade executor before early-entry clears a bar.
  • 06
    HIGH
    **Narrow runaway-pause gate** — defensive backstop, NOT primary work. Per Chef directive 2026-05-26: focus on more wins + more data, not cutting strategies off. Rule: pause only the egregious bleeders → n≥15 AND NetUSD ≤ -$0.10 AND mean_pct ≤ -5%. Today (2026-05-26 audit) NOTHING triggers — cluster-alpha-v1 (n=10, -$0.012, -0.42%) is mildly negative but within noise; whisper-confirms-cluster-v1 (n=6, -$0.067, -5.46%) is below the n≥15 threshold (let it accumulate). Ship the rule but expect it to fire rarely. Supersedes the prior critical entry below (WR<25% / n=10) which would have killed cluster-velocity-v2 — our top P&L contributor (n=13, +$0.52, +30.23%) — per the audit. Preserves data collection. ~1h.
  • 07
    CRITICAL
    Auto-retire underperforming strategies at n=10 (not n=30). Current B3C_MIN_EXPECTED_WR gate reads SEEDED expected WR, not live. whisper-confirms-cluster-v1 has 4 closures, 0% live WR, -8.00% mean, -$0.07 NetUSD but its seed of 60% keeps it firing. Add a "live override at n≥10 if liveWR < 25%" rule in lib/wr-registry that pauses the strategy until next R-round re-seeds. Stops bleed from clearly-broken strategies before n=30.
  • 08
    CRITICAL
    Investigate cross-chain-trader-v1 sub-pattern (20 closures, 40.0% live WR / +15.02% mean / 6.03 PF / +$0.30 NetUSD). Low WR + high mean = right-tail capture. Want to know: which of the cross-chain signal sub-types (CEX-in vs L2-bridge vs same-chain whale) drives the wins? If we can isolate, promote sizing on the predictive sub-type and demote the rest.
  • 09
    HIGH
    Surface per-wallet attribution. b4-attribution.json already computes bestWallet/worstWallet per strategy but it's not exposed anywhere. Build a /bots/MON-WALLET-COPY/wallets tab that shows the top/bottom decile of the ~1000 tracked wallets by P&L attribution. Lets us promote a high-trust sub-cohort whose votes weight more heavily.
  • 10
    HIGH
    Wire confluence-of-3-v1 trigger. The strategy is configured (seed 70% WR) but has 0 fires lifetime — likely because the cross-strategy correlation check is matching the wrong field. Verify it watches the central monad/strategy-fires.ndjson firehose, not per-strategy state files. Confluence is meant to be the meta-strategy that picks up tokens where multiple emitters agree — currently silent.
  • 11
    HIGH
    Promote sniper-follow-v1 sizing. 3 closures, 66.7% WR, +45.57% mean, PF 149.61, +$0.21 NetUSD. Small-n caveat but the pattern is strong. After n=10 if WR ≥ 55%, bump position size 1.5×. Don't wait for n=30 — the EV gradient is too steep to leave on the table.

Conclusion

MON-WALLET-COPY-V1

Verdict (2026-06-11): risk-contained, and the edge is now MEASURABLE for the first time — a stale sensor was hiding it. Primary Monad bet since 2026-05-12, mechanically operating: ~130 closed / ~15 open, all 20 strategies firing through mon-b3c-fullauto.service → mon-b3c-exit.service. Lifetime net is negative, but this session established that the whole book was captured on broken instruments: the whisper pre-trade feed ran 18.5 days stale (cursor 76.5M vs head 80.5M) and the blind-position exit-price feed was 100% rate-limit-banned — both fixed + verified live today. The tail is independently CAPPED (20-MON ceiling + net-neg→T0 demote, validated 06-05: every post-fix fire 3 MON, worst -5.1%). So the prior conclusion — "can't run net-positive at the cap because gas eats the edge" — was measured on contaminated data: whisper-triggered strategies were buying 18-day-old pre-launch tokens that had already rugged. The honest status is not "pre-profit because no edge" but "edge untested on clean data." 2026-06-11 is the baseline; the real question gets answered ~06-18 on fresh closures.

Failure mode #1 — per-strategy sample sizes are too small to scale. Best %-return strategies are cross-chain-trader-v1 (20 closures, +15.02% mean) and sniper-follow-v1 (3 closures, +45.57% mean, n=3 — small-n caveat the size of Monad itself). Auto-calibration kicks in at n=30; we are 10-28 closures away on most. Until then, we can't tell which strategies have edge vs. which got lucky in 20 trades.

Failure mode #2 — bleeders were bleeding for a now-KNOWN reason (2026-06-11 update). whisper-confirms-cluster-v1 (0% live WR) and contract-probe-v1 (−60.8%/trade, −99% rugs) are both whisper-TRIGGERED — and whisper was 18.5 days stale, so they were buying tokens that had already rugged. Their bad stats are an artifact of the stale feed, not proof the strategies are broken. Now that whisper is live, re-judge them on POST-06-11 closures before any auto-pause. A live-WR override at n≥10 is still worth shipping as a backstop, but it must key off CLEAN-window WR or it will kill strategies for a bug that's already fixed.

Failure mode #3 — broken strategies stay marked active. confluence-of-3-v1 is configured but has 0 fires lifetime. telegram-momentum-v1's input file is 154h stale because the alphalens scraper isn't writing it. Both stay listed; both contribute zero signal.

Fixable? Yes — and the highest-leverage fix (live sensors) is now DONE; the verdict is genuinely open again. Path forward: (1) re-baseline from 2026-06-11 — judge every strategy only on post-fix closures; the stale-feed book is not evidence. (2) Add the pipeline-freshness panel so a stuck cursor pages instead of silently poisoning strategies for 18 days (this bug's real lesson — mtime-liveness missed it; lag-vs-head is the missing signal). (3) Ship the live-WR auto-pause at n≥10 but key it off CLEAN-window WR. (4) Re-run the never-fairly-tested EARLY-ENTRY hypothesis on fresh whisper data. (5) Raise size only on a strategy that prints n≥10 clean closures, net-positive, no single < -$0.60. If at ~06-18 the clean window is still under $0 with no tail-survivor, THEN the chain hypothesis is wrong — but not before, because until today it was never tested on live data.

2026-05-30 update — the chain hypothesis tested out NEGATIVE early. Rather than wait for n=30, five independent backtests on 38d of signal-observations settled it: post-confirmation cohort signals (count, confidence, wallet-quality) do NOT predict pumps, and crowding is actively negative — the copy-the-cohort thesis is structurally late. Realized accounting was also corrected (netNative fix): the book is net-positive but cents-scale + tail-dependent, and ~44% of losses came from 3 honeypot/−99% delayed-rug exits. PIVOT: the only surviving edge candidate is EARLY-ENTRY (first-few-buyers alongside proven-early wallets, pre-confirmation), now being captured by two new daemons (launch-cohort-capture + forward-lattice, live 2026-05-30) for a day-14 validation; loss-avoidance (sellability/exit gating) is the provable edge. PulseChain port: port EARLY-ENTRY + EXIT-gating + the infra (proposal-time capture, blacklist filter, per-token cooldown, PnL-halt, systemd) — NOT the cohort-confirmation thesis. Stand up capture first, validate, then build the executor.

2026-06-03 update — RISK MODEL REBUILT (the -96% incident). Failure mode #2 above (bleeders/tails surviving) turned out to be the whole game. On 2026-06-01 cross-chain-trader-v1 closed a 50-MON position at -95.75% = -$1.46 — the 50 MON was a Tier-2 promote that BYPASSED the 20-MON ceiling (the floor Math.max(sizeMon, stratBase) overrode it), and the -18% hard stop never fired because the gain-based exits read a tape price that vanished when the token stopped trading. One trade flipped lifetime +$0.85 → -$0.77. Shipped same-day: (1) a true 20-MON hard ceiling nothing can bypass; (2) net-negative→T0 demote + tail-scar T2 block; (3) a blind-position active stop that marks-to-market when the tape goes dark and exits at the strategy's own -18% instead of -96%; (4) a catastrophic-loss TG pager + daily digest (none existed); (5) a NetUSD veto on the dormant WR-based auto-disabler that would otherwise have killed the winners. Thesis is now CONTAIN then CONCENTRATE — bound the tail, prove a winner survives at the cap, then raise only that winner's ceiling. The EARLY-ENTRY / exit-gating pivot above is unchanged and complementary: loss-avoidance is still the provable edge.**

Active Tests & Monitors

MON-WALLET-COPY-V1
Test / MonitorStartedKey MetricDecision Criteria
Blind-stop instant-rug coverage (NEW 2026-06-05)2026-06-05blind_hard_stop exits in b3c-exits.ndjson; closures with entryPx==null + realized vs triggerWATCH. The 06-03 blind hard stop had a HOLE — entryPx==null (instant-rug) positions skipped it and rode to the 240h backstop; fixed 2026-06-05 (skip relocated below the blind stop). 0 blind_hard_stop exits have fired yet (rare condition). Confirm the first instant-rug now exits near the -50% floor instead of -95%. Exit machinery is active (hard_stop ×5 / time_stop ×1 in 24h).
P&L display correctness (FIXED 2026-06-05)2026-06-05/api/monad/b3c-positions realizedPct min (must be >= -100%)✅ FIXED — the positions handler summed per-event realizedUsd, double-counting the cost basis on laddered exits → impossible sub-(-100%) losses (and +80% winners shown as -117%). Now totalOutMon - inMon. Verified: 0 trades < -100%, min -99.52%. b4-attribution (FIFO) was always correct; only this raw aggregation was wrong.
Per-strategy n=30 milestone2026-05-12 (post-relaunch)monad/strategy-state.json fires + b4-attribution.json n per strategyAt n=30 closures, b4-attribution.js auto-overwrites the seeded expectedWR with measured WR. Strategies below 50% (or below their floor override) become non-firing. **Update 2026-05-27**: cross-chain-trader-v1 at **n=29** (1 closure away from milestone! WR 41.4%, +$0.14 net). cluster-velocity-v2 at n=13 (23% WR, +$0.52 net). whisper-confirms-cluster-v1 at n=6 with 0% WR — auto-halts at n=10. Bot fired 96 closures lifetime, 25 open. Last execute_ok 31h ago (narrative-rotation-v1).
BootstrapHold release2026-05-12monad/strategy-state.json.bootstrapHoldCurrently false (no hold). Re-enabling would stop live fires until each strategy has n=30 in PAPER mode. Trade-off: slower data accumulation vs less seed-risk.
Strategy emit ownership2026-05-11 (split)emitter field per strategies/*.json (watcher vs strategy-runner)8 watcher-emitters, 12 strategy-runner-emitters. strategy-runner.js skips strategies whose JSON has emitter:watcher to prevent double-emit. Verify no double-emit if a new strategy lands.
Holder-tracker hot tier coverage2026-05-11Active-tier token count in data/holder-tracker/monad.db hot tableCap = 100. Promotion daemon runs every 5min, merges 4 sources. Discovery use-case (NEW growing tokens) needs cluster-watcher candidate universe in the promote sources — not done yet.
Wallet-monitor-ws single-writer health2026-05-11logs/monad-wallet-tape-YYYY-Wnn.ndjson freshness + watchdog restart countcritical-daemon-watchdog.sh respawns within ~5min on death. heartbeat-stall.timer alerts on stale state. Tape rotation is weekly — always read via monad/tape-files.js:listTapeFilesChronological().
Telegram-momentum-v1 input freshnessmemory 2026-05-12monad/telegram-mentions.json mtime✅ RETIRED 2026-05-21 via enabled:false in strategy JSON. _disabled_reason documents: input file 22d+ stale, alphalens scraper not configured (telegram-mentions.json still says "awaiting-channels"). To re-enable: configure alphalens public-channel scraper to keep monad/telegram-mentions.json fresh (<1h), OR wait for Path D MTProto listener (blocked on operator burner-SIM step). No ongoing cost — strategy is skipped at evaluator dispatch.
Confluence-of-3 fire rate2026-05-12b4-attribution.byStrategy[confluence-of-3-v1].n + strategy-state.fires✅ ROOT CAUSE FOUND 2026-05-27 — **trigger.kind "confluence" has no evaluator registered**. monad/strategy-runner.js:406 TRIGGER_EVALUATORS only has 9 kinds (cluster_signal, whisper_signal, single_wallet_buy, rotation_event, whisper_cluster_confluence (2-strategy), holder_growth, good_deployer_launch, cross_chain_trader_buy, telegram_momentum). The 3-strategy "confluence" kind from monad/strategies/confluence-of-3-v1.json is silently skipped. To fix: write evalConfluenceOfThree() that walks strategy-fires.ndjson for a 4h window and counts ≥3 distinct strategies on the same token (per R17 finding: WR 80%, peak +50%). ~1-2h build. NOT shipped — pending operator approval (additive code on a live bot, low risk but explicit go-ahead recommended). OR retire strategy if not worth the build.

Compromises

MON-WALLET-COPY-V1
DecisionAggressive ←Current Position→ ConservativeNotes
WR floor (B3C_MIN_EXPECTED_WR = 50)
Permissive · seed any new strategy live
Strict · only proven strategies fire
Global floor below which a strategy cannot fire. Right-tail strategies (moonbag, contract-probe, moonshot) have floorOverride (20-30%) because EV comes from win-magnitude not WR. Reads SEEDED expectedWR until live n≥30 auto-calibrates.
Bootstrap-hold (currently OFF)
Permissive · fire on seeded WR
Strict · paper-mode until live calibrated
When ON, no strategy fires live until its live n≥30. Released so the bot can accumulate live data faster — at the cost of trades fired on potentially-stale seeds. monad/strategy-state.json.bootstrapHold = false today.
Floor overrides for right-tail strategies
No exceptions to the 50% floor
Per-strategy overrides for moonshot patterns
moonbag-detector-v1 = 30, contract-probe-v1 = 30, moonshot-follow-v1 = 20, dev-deployer-launch-v1 = 25. Acknowledges that low-WR strategies can have higher EV if avg-win >> avg-loss. Risk: overridden strategies have less data, more variance.
Wallet cohort size (~1000 tracked)
Tight · only the very top performers
Wide · every smart wallet seen recently
Trade-off between signal density (small cohort = high-conviction signals) and discovery (large cohort = catch emerging alpha). Periodic R-rounds refresh the cohort (R5 most recent: 56% overlap with prior, OOS validated). Top quartile not yet weighted differently.
Capture latency (monadLogs WS)
Standard eth_subscribe(logs)
Proposal-time monadLogs / monadNewHeads
Monad-native subscriptions land ~1s earlier than eth_subscribe (logs trigger at proposal-time, not finalization). Single-writer model with watchdog respawn (~5min). Polling fallback is RETIRED.
Emit-time stablecoin filter
Permissive · let strategies emit any token
Strict · skip blacklisted tokens before write
3 emit paths wired to lib/stablecoin-blacklist (strategy-runner, momentum-pump-watcher, moonbag-detector-watcher) — they skip blacklisted tokens BEFORE writing to strategy-fires.ndjson. Prevents the executor from ever seeing a USDC fire signal.
Firehose vs per-strategy queues
Per-strategy queues · isolated failure
Single firehose · simple, central order
Single monad/strategy-fires.ndjson firehose consumed by mon-b3c-fullauto. Simpler to reason about + cleaner ordering, but a stuck emitter can starve the executor of all other strategies. Mitigated by 8 watcher daemons + 1 strategy-runner all writing independently.
Execution: systemd vs tmux
Tmux · operator visibility
Systemd · independent restart semantics
2026-05-11 migration: b3c-fullauto + b3c-exit moved from tmux to systemd user services. Survives operator-tmux outages. heartbeat-stall.timer alerts every 2min on stale state files. Cost: less ambient operator awareness — must `journalctl --user -u mon-b3c-fullauto.service -f` to tail.
Per-token cooldown (perTokenLastFireTs)
No cooldown · ride every fresh signal
Long cooldown · 1 fire per token per N days
Per-strategy perTokenLastFireTs in strategy-state.json prevents the same token+strategy combo firing twice in a short window. Bounds repeat-buy exposure during pump cycles.
Daily PnL halt gate (haltedUntil)
Run uncapped
Halt after first drawdown of the day
Per-strategy haltedUntil + haltReason. Auto-engages if dailyPnL drops below a threshold; auto-resets at UTC midnight. Today 0 strategies show haltReason set — none are tripped.
Confluence meta-strategy weighting
Treat confluence-of-3 as 1 of 20 strategies
Weight confluence as the highest-trust signal
confluence-of-3-v1 fires when ≥3 distinct strategies hit the same token within 4h. Seeded at 70% WR. Currently rarely fires (0 closures, possibly not wired right). When working, should weight more heavily than single-strategy emits.
Cohort refresh cadence (R-rounds)
Frozen cohort · trust historical winners
Continuous refresh · chase live performers
Manual R-round process (most recent R17). Re-mines the alpha-discoveries-v2.json output and re-cohorts. 56% overlap with prior round (some persistence, some churn). Faster cadence would catch decay sooner; cost is more cohort-churn variance.

Parameters

MON-WALLET-COPY-V1
ParameterValueReasoningPotential Adjustment(s)
B3C_MIN_EXPECTED_WR50 (%)Global WR floor below which a strategy cannot fire. Right-tail strategies have floorOverride values.Drop to 40 to allow more strategies through. Raise to 60 to be stricter. Today every strategy meets the seeded floor; live WR is the real question.
bootstrapHoldfalsemonad/strategy-state.json field. When true, no strategy fires live until n=30 paper closures.Re-enable when launching a brand-new R-round cohort. Disable once live data is flowing.
Wallet cohort size~1000 trackedCohort of smart-money wallets we follow. R5-refresh 2026-05-03 (56% overlap with prior).Tune cohort size up if signal density is too low (more wallets, more noise but better discovery). Down if signal-to-noise needs sharpening.
Tape rotationWeekly NDJSONlogs/monad-wallet-tape-YYYY-Wnn.ndjson. Single writer model (monad-wallet-monitor-ws.js).No tuning. Always consume via monad/tape-files.js:listTapeFilesChronological() — never hardcode a filename.
Watchdog respawn5 minscripts/critical-daemon-watchdog.sh checks critical daemons every 5min and respawns on death.Tighten to 1min if recovery latency matters more than CPU overhead.
Holder-tracker hot tier cap100 tokensHot tier polled every 5min via Moralis. Cold tier ~5k tokens every 3.5d.Raise hot cap to 200 if Moralis quota allows + discovery needs improve. Today the bot-traded subset fills the slots.
Tape capture subscriptionmonadLogs + monadNewHeadsMonad-native WS subscriptions, ~1s ahead of standard eth_subscribe(logs). Proposal-time delivery.No tuning. Polling fallback (monad-wallet-monitor.js) is RETIRED — do not re-enable.
Emit-time blackliststablecoin-blacklist.jsonlib/stablecoin-blacklist.js mtime-cached reader. 3 emit paths skip blacklisted tokens before write.Add tokens via the JSON file; readers pick up changes on mtime tick.
Cron refresh cadencehourly + 30minv4-pool-keys-refresh hourly, pool-first-activity hourly, lag-alpha hourly, wallet-intel-refresh every 30min.Cron entries in crontab -l | grep -E "v4-pool|pool-first|lag-alpha|wallet-intel".
Per-strategy fires (file)monad/strategy-state.jsonPer-strategy: fires count, lastFireTs, perTokenLastFireTs, activePositions, dailyPnL, haltedUntil/haltReason.Edit via b3c-fullauto state machinery only; manual edits race with the daemon.
Backfilled WR seedsmonad/strategy-wr-registry.jsonSingle source of truth for seeded expectedWR. Auto-overwritten by b4-attribution.js at n=30.Update seeds when a new R-round produces fresh backtest WR. Never edit manually unless you know what you're doing.
Live calibration n=30b4-attribution closedCountMinimum sample size before live WR overwrites the seed.Lower to n=20 if seeds are clearly broken and we want faster auto-retire. Raise to n=50 for more confidence.

Revisions

MON-WALLET-COPY-V1
No version history captured yet for this bot.
RPC: connected
Scanner: 193d 18h 42m uptime
687,559 events indexed
WICK_CRYPTO_ENGINE // Built by Green Wick AI