Age ceiling

The 60 minute age ceiling against the 15 and 180 minute recommendations, one table, leave-one-out.

Age ceiling report · REPORT-age-ceiling.md · updated 06/09/2026 19:59:00

Rook, age-ceiling lane, 2026-09-06. Brief: analysis-2026-09-06/BRIEF-age-ceiling.md. Scratch and every table reproduced: analysis-2026-09-06/data/age-ceiling/.

TLDR

  1. Keep maxAgeMin: 60. Both proposed changes fail on the estimator that is stable under leave-one-out, and they fail on four independent samples, not one.
  2. The debrief lane (cut to 15) and the capture lane (widen to 180) disagree because they used different estimators on different populations, not because the tape is ambiguous. Neither ran leave-one-out.
  3. On per-entry median, ceilings 15, 30 and 60 are statistically inseparable in every sample (LOO rank ranges overlap), while 180 and no-ceiling rank last in every sample. That is the one stable result on this page.
  4. The capture lane's own data, re-cut by actual age, contradicts its recommendation: the 60 to 180 min bucket is the worst of the three old buckets (median -30.5%, 1 winner of 9 marked), and two of its three named winners (BAWSAQ 3480 min, Chairman 980 min) sit far outside 180.
  5. The under-250k age exemption has been running forward in the Gold paper set for 2.5 days. Its exemption-only entries are n=31, median -11.1%, sum -309.4 points, and the sign does not flip under any single drop (LOO sum -364.4 to -220.7). It does not reproduce the 2026-09-04 tape finding.
  6. The reason not to cut to 15 is not returns, it is rugs: the 2 to 15 min bucket carries the rug rate (24 to 31% across all three samples, against 1 to 9% in every over-15 bucket of the tape and the paper ledger). Cutting the ceiling to 15 concentrates the whole book in the rug band.
  7. Two paper sets are written below (Gold-age15, Gold-oldsmall) to settle the half that stays open. They are ready to paste; watchtower/rules-v2.json was not edited.

1. One table, every signal, age at signal and an outcome

analysis-2026-09-06/data/age-ceiling/master-signals.csv, 1628 rows, four sources. Builders: master.mjs, tape-age.mjs, debriefs.mjs, ledger.mjs, refusal-by-age.mjs.

source n age field outcome used window
30-day tape 1181 (324 in the Gold v2 band base) episodes.jsonl tokenAgeMin Gold v2 ladder replay, net % of one ticket, plus the +60 min mark 30 d to 2026-09-03T20:13Z
paper ledger v2 377 closes, 210 tokens paper-ledger-v2.jsonl ageMin pnlPct at close under that set's ladder 09-04 to 09-06
debriefed calls 41, 40 after deduping VERITY debriefs/*/metrics.json ageAtEntryMin sims["Gold v2 ladder"].marks.pnl, plus path.at60m 09-04 to 09-06
Gold v2 age refusals 156 rows, 95 tokens, 29 markable feed.jsonl ageMin where live.reason matches over the 60m ceiling buy-and-hold mark, printPriceUsd to the capture lane's 07:39 snapshot 09-04 to 09-06

Two outcome definitions are used and they are not interchangeable. Ladder points is the live rule replayed. The +60 min mark is buy-and-hold with no exit. On young tokens they disagree by design: the tape's 2 to 15 min bucket in the Gold v2 bands has a +60 min median of -30.2% and a ladder median of +28.0%, because young tokens spike and round-trip and the ladder clips at +40 and +200. Any ceiling argument built on unexited marks is biased against young tokens. That is half of the disagreement in question 4.

The tape's replay ladder is the 09-04 sweep's LADDER_V3 (stop -45, clips 50% at +60 and 25% at +200, breakeven after clip, relative trail 50, no-progress 30m/+10, time stop 90, wallet exit on). It is not the current live ladder (clips at +40, trail 40). Ladder differences move the level of every row in the same direction, so the age comparison holds and the absolute numbers do not transfer.

2. Outcome by age bucket

30-day tape, mcap under 1M and age at or over 2 min (the Gold v2 band base), n=324. Full table data/age-ceiling/buckets.md.

bucket n median +60 min peak reached +60 rug (at60 <= -80) median ladder pts sum pts pts hit
2-15 50 -30.2% 56% 24% +28.0 1672 62%
15-30 34 +10.7% 53% 3% +29.1 1416 56%
30-60 35 +18.7% 57% 6% +27.4 1679 60%
60-180 68 +12.0% 46% 1% +0.3 1365 50%
180-720 37 -6.8% 35% 3% -1.0 425 41%
>720 100 -0.8% 26% 2% -1.9 1243 43%

The cliff is real and it sits at 60, not 15. Median ladder points are +27 to +29 across all three sub-60 buckets and fall to about zero the moment the token is over an hour old. The 60-minute cliff of fixes-2026-09-05/REPORT-goldv2.md 4a-i reproduces on a finer grid.

Paper ledger v2, all sets, n=377, pnlPct winsorized at +300 (TNR closed at 5.67e45 and MEME at +1348%, both max-tick artifacts of the same class as the capture lane's HOLO; paper-ledger-v2.jsonl 2026-09-04T09:35:14Z).

bucket n peak reached +60 rug (pnl <= -90) median pnl pts hit
2-15 135 30% 26% -30.5% 39%
15-30 54 20% 7% -33.5% 30%
30-60 28 25% 4% -7.2% 43%
60-180 23 26% 9% -35.2% 26%
180-720 15 33% 0% -11.6% 47%
>720 119 24% 5% -5.7% 39%

Debriefed calls, n=40 (sims["Gold v2 ladder"].marks.pnl). n under 10 per bucket over 15 min, so these are anecdotes and are printed for completeness.

bucket n median at60 peak +60 rug median pts sum pts
2-15 16 +9.3% 63% 31% +19.2 +1087.3
15-30 7 -53.3% 43% 29% -51.7 -153.6
30-60 3 +5.3% 33% 0% -26.6 -33.7
60-180 2 -32.9% 0% 0% -41.5 -82.9
180-720 1 +79.1% 100% 0% -0.5 -0.5
>720 11 -8.2% 18% 0% -8.2 -5.1

Crossed with mcap band. The 2026-09-04 claim was that old plus small pays.

slice 60-180 180-720 >720
tape, under 250k, median pts (n) -0.6 (18) +40.3 (9) +3.9 (23)
tape, 250k to 1M, median pts (n) +5.9 (50) -4.2 (28) -2.1 (77)
paper ledger, under 250k, median pnl (n) -35.2 (15) -11.6 (11) -5.9 (73)
paper ledger, 250k to 1M, median pnl (n) -17.6 (6) +52.8 (2) -5.6 (45)

Old plus small is mildly positive on the tape and mildly negative live, on samples of 9 to 73. Nothing here is worth a live config change in either direction. All 14 debriefed calls over 60 minutes are under 250k, so on the debrief sample the exemption and no ceiling are the same rule, and their sum is -88.5 points.

3. Leave-one-out on the candidate ceilings

Sums are the winsorized ladder points a ceiling would have taken; drop unit is one token (all its entries); data/age-ceiling/loo.md, script loo.mjs.

sample ceiling entries sum pts sum rank (LOO range) median pts median rank (LOO range)
tape, mcap<1M, n=324 15 50 1672 6 (6 to 6) +28.0 3 (1 to 3)
30 84 3055 5 (5 to 5) +29.1 1 (1 to 3)
60 live 119 4734 4 (4 to 4) +29.0 2 (1 to 3)
180 187 6100 2 (2 to 3) +24.7 5 (4 to 5)
none 324 7711 1 (1 to 1) +0.6 6 (6 to 6)
60 + under-250k exempt 169 5823 3 (2 to 3) +25.0 4 (4 to 5)
debriefs, n=40 15 16 848.7 1 (1 to 1) +19.2 1 (1 to 1)
30 23 695.1 2 (2 to 3) +15.8 2 (2 to 2)
60 live 26 661.4 3 (2 to 3) +9.3 3 (3 to 3)
180 28 578.5 4 (4 to 6) -11.9 6 (4 to 6)
none / 60+exempt 40 572.9 5 to 6 -4.4 4 to 5
paper, Gold family, n=90 15 37 1390.4 1 (1 to 1) +17.2 1 (1 to 3)
30 52 765.3 2 (2 to 3) -22.1 4 (4 to 4)
60 live 59 647.6 3 (2 to 3) -22.2 5 (5 to 5)
180 64 517.8 4 (4 to 4) -26.3 6 (6 to 6)
none / 60+exempt 90 338.2 5 to 6 -17.3 2 to 3

Three things to read off it.

The sum is not a comparison. Each ceiling admits a different number of entries, so the sum is entries times mean and it moves with n. On the tape every age bucket has a positive sum, so the sum mechanically ranks "no ceiling" first and 15 last. On the live paper and debrief books the over-60 buckets have negative sums, so the same estimator ranks 15 first. This alone explains the sign of the two lanes' disagreement, and it is the same defect the wiki synthesis named on the exit sweeps, appearing here on the entry side with a structural bias rather than a fat-tail one.

On per-entry median, three ceilings tie and two lose. 15, 30 and 60 have overlapping LOO median-rank ranges on the tape (all 1 to 3) and finish 1-2-3 in that order on both live books. 180 and no-ceiling finish 4 to 6 everywhere. The ordering among 15, 30 and 60 is not decidable on any sample we have; the ordering against 180 and none is decidable and is stable under every single drop.

60 is inside the stable top group and takes 2.4x the entries of 15 (tape 119 against 50, 3.97/day against 1.67/day; Gold-family paper 59 against 37). Cutting to 15 buys no measurable per-entry edge and costs 58% of the flow.

The exemption slice, tested directly. Gold (v1) is the only set running maxAgeExemptBands: ["under 250k"] forward. Entries it admitted only through the exemption: n=31, median -11.1%, sum -309.4 points, hit 32%, best RYDER +55.0%. Leave one out and the sum stays in -364.4 to -220.7 and the median in -11.3% to -10.5% (exemption.mjs). Negative under every single drop is a stable result, and it is the first age finding in this project that clears the wiki's gate. It is also the direct forward refutation of the 2026-09-04 LADDER-SWEEP-...-oldSmall250k.md slice (n=50, B1 net mean +14.4%, median +2.9%).

4. Where the two lanes disagree, and why

Different samples and different outcome measures, and one lane's recommendation does not follow from its own table.

The debrief lane (ALL-CALLS-2026-09-05-v2.md, "age ceiling 15 min: under 15m 10 calls 60% win, over 15m 21 calls 24% win"). Its "over 15" bucket is not a test of the 60 minute ceiling. On the 40-call set, 15 of the calls over 15 minutes are over 60 minutes old and 11 are over 720. The contrast it measured is young against ancient, and everyone agrees on that one. The 15 to 60 slice on its own is n=10, and on the tape, which has n=69 there, it is indistinguishable from the under-15 slice.

The capture lane (REPORT-capture.md section 2, "widening the age ceiling from 60 to about 180 minutes is the only loosening this data supports"). Three problems, all visible in its own data.

age bucket tokens refused marked gone median % winners best
60-180 17 9 8 -30.5 1 FSD +87.5%
180-720 7 4 3 -14.0 1 hoodrat +43.2%
>720 71 16 55 -0.3 8 BAWSAQ +320.1%, DEMOTHREE +90.3%, Chairman +74.2%
all over 60 95 29 66 -14.2 10

Also worth saying plainly: widening to 180 recovers almost nothing. Of the 95 distinct tokens refused on age, 17 are in 60 to 180 and 71 are over 720 (feed.jsonl). The refused-age distribution is bimodal, and a 180 ceiling picks up 18% of it.

Honest note on the other side. The Gold v1 paper set's own young slice (age 2 to 60, n=17) has a median of -52.4% and a sum of -436.5, worse than its exemption slice. That is a genuine counter-observation. It is confounded: Gold v1 runs the pre-v2 guards (heat +200 not +500, no rug ratio, no cohort cap, chase measured against our own quote), so its young slice contains the rugs v2 added guards for. The v2-filter young slice (Gold v2, Gold-hold, Gold-flat, age 2 to 60, n=42) has a median of -19.7% and a sum of +1084.1. But n=17 against n=42 over 2.5 days is not enough to close this, and it is the strongest argument on the page for not treating "young is better" as settled.

Recommendations

Ship now (config only, reversible)

  1. Keep maxAgeMin: 60 and maxAgeExemptBands: [] in executor/follower.json and in every Gold set in watchtower/rules-v2.json. Change nothing. 60 is inside the top group that no leave-one-out drop can separate, and both proposed moves are refuted: 180 and none rank last on the median in all four samples, and 15 is not separable from 60 while costing 58% of tape flow and concentrating the book in the 24 to 31% rug band.
  2. Retire the "widen to 180" recommendation from REPORT-capture.md in the assembled FINDINGS-2026-09-06.md, citing the re-cut table above. It should not reach Thomas as a live-config candidate.
  3. Remove maxAgeExemptBands: ["under 250k"] from the Gold v1 paper set or leave it and stop citing it as a candidate. Its forward record is n=31, sum -309.4, negative under every drop. If it stays, it stays as a control, not as a proposal.

Build (code, with the test that proves it)

  1. A leave-one-out gate in the sweep harness. Any ranked candidate table publishes rank and LOO rank range, and a candidate whose range spans more than one position is printed as "not separable". Test: run it on the 09-05 stepped-trail sweep and assert 40 then 25 after +200 reports a rank range that includes a losing position, which is the case the wiki synthesis says would have stopped the 23:48 ship. Pattern to lift: analysis-2026-09-06/data/age-ceiling/loo.mjs.
  2. Refuse-and-mark under an exit rule. For every refused token, record the +15, +60 and +240 minute marks and the Gold v2 ladder replay from the refusal print, not a single buy-and-hold snapshot. Test: replay FSD from its 2026-09-05T19:07Z refusal print and assert the ladder number lands near the Gold set's recorded -88.7%, not near the +87.5% buy-and-hold mark.
  3. Report both sum and median with n in every candidate table, and never rank candidate sets of different size by sum alone. Test: assert the ceiling table above reproduces both orderings from master-signals.csv.

Needs Thomas (money, accounts, or a call only he makes)

  1. Nothing to buy. The one call: do not let the 15-minute ceiling ship on the debrief lane's n=31 sum. It ranks first on that estimator in two samples and is unseparable from 60 on the estimator that survives resampling. The two paper sets below are the cost-free way to settle it, and they need 3 to 5 days of tape before anyone reads them.

The paper set to run

Two sets, added to watchtower/rules-v2.json sets, both live: false, alerts: false. Clone of Gold v2 with one field changed each, so the difference is attributable. watchtower/rules-v2.json was not edited by this lane. Read them for 3 to 5 days, then compare per-entry median and LOO rank range against Gold v2, not the sum.

{
  "name": "Gold-age15",
  "kind": "wallet",
  "emoji": "🟩",
  "color": "#5AC46B",
  "live": false,
  "alerts": false,
  "logSkips": true,
  "description": "Gold v2 with the age ceiling cut from 60 to 15 minutes. The only field changed. Tests the ALL-CALLS-2026-09-05-v2 recommendation (under 15m 60% win against 24% over) against the finding in analysis-2026-09-06/REPORT-age-ceiling.md that 15, 30 and 60 have overlapping leave-one-out rank ranges on the per-entry median in every sample, and that the 2 to 15 min bucket carries a 24 to 31% rug rate against 1 to 9% in every over-15 bucket on the two samples with real per-bucket n. Read per-entry median and LOO rank range against Gold v2, never the sum: the sum moves with entry count and Gold-age15 takes about 40% of Gold v2's flow.",
  "universe": { "maxMcapUsd": 1000000, "freshMaxAgeHours": 2, "freshMaxMcapUsd": 3000000, "bands": ["under 250k", "250k to 1M"], "minAgeMin": 2, "maxAgeMin": 15, "maxAgeExemptBands": [], "minLiquidityUsd": 25000, "maxLiquidityUsd": 400000, "maxRunH1Pct": 500, "rugRatio": { "maxLiqToMcap": 0.82, "underAgeMin": 60 }, "maxWalletRugRate": 0.18, "minWalletEntriesForRugRate": 10 },
  "entry": { "cooldownMinPerToken": 120, "minBuyUsd": 100, "maxOtherCohortWallets": 1, "maxChasePct": 25 },
  "exit": { "stopLossPct": -45, "noProgressMin": 30, "noProgressPct": 10, "clips": [{ "pct": 40, "fraction": 0.5 }, { "pct": 200, "fraction": 0.25 }], "trailingStopPct": 40, "trailingStopMode": "relative", "timeStopMin": 90, "walletExit": false, "breakevenAfterClip": true, "trailSteps": [] },
  "filters": {}
}
{
  "name": "Gold-oldsmall",
  "kind": "wallet",
  "emoji": "🟫",
  "color": "#A2795B",
  "live": false,
  "alerts": false,
  "logSkips": true,
  "description": "Gold v2 with the under-250k age exemption restored, so age 2 to 60 for the 250k to 1M band and any age at or over 2 min for under 250k. The only field changed. Tests research/smartmoney/LADDER-SWEEP-2026-09-04-oldSmall250k.md (n=50, B1 net mean +14.4%) forward under the v2 guards, because the exemption's only forward record so far is the Gold v1 set under the pre-v2 guards: n=31, median -11.1%, sum -309.4 points, negative under every single-drop leave-one-out (analysis-2026-09-06/REPORT-age-ceiling.md section 3). Kill it if the exemption-only slice is still negative at n over 30 under these guards.",
  "universe": { "maxMcapUsd": 1000000, "freshMaxAgeHours": 2, "freshMaxMcapUsd": 3000000, "bands": ["under 250k", "250k to 1M"], "minAgeMin": 2, "maxAgeMin": 60, "maxAgeExemptBands": ["under 250k"], "minLiquidityUsd": 25000, "maxLiquidityUsd": 400000, "maxRunH1Pct": 500, "rugRatio": { "maxLiqToMcap": 0.82, "underAgeMin": 60 }, "maxWalletRugRate": 0.18, "minWalletEntriesForRugRate": 10 },
  "entry": { "cooldownMinPerToken": 120, "minBuyUsd": 100, "maxOtherCohortWallets": 1, "maxChasePct": 25 },
  "exit": { "stopLossPct": -45, "noProgressMin": 30, "noProgressPct": 10, "clips": [{ "pct": 40, "fraction": 0.5 }, { "pct": 200, "fraction": 0.25 }], "trailingStopPct": 40, "trailingStopMode": "relative", "timeStopMin": 90, "walletExit": false, "breakevenAfterClip": true, "trailSteps": [] },
  "filters": {}
}

Open questions

Sources

Site page

The age ceiling: keep 60.

Two lanes gave opposite answers within twelve hours. The debrief lane said cut the ceiling to 15 minutes. The capture lane said widen it to 180. Neither cited the other, and neither tested whether its answer survived dropping a single call.

Both are resolved now, and the answer is that the live setting was right.

Four samples were pooled into one table of 1628 rows: the 30-day tape (1181 cohort first buys, 324 inside the Gold v2 bands), the paper ledger (377 closes across every set since 09-04), the debriefed calls (40), and the 95 tokens the live book has refused on age.

The result that survives leave-one-out: ceilings of 15, 30 and 60 minutes are inseparable on per-entry median, and 180 and no-ceiling rank last in every sample. On the tape, median ladder result by age bucket:

age at signal 2-15 15-30 30-60 60-180 180-720 over 720
n 50 34 35 68 37 100
median points +28.0 +29.1 +27.4 +0.3 -1.0 -1.9
rug rate 24% 3% 6% 1% 3% 2%

The cliff is at 60 minutes, exactly where the config puts it.

Why the two lanes split: both ranked by sum of points, and each ceiling admits a different number of entries, so the sum tracks entry count rather than edge. On the tape every bucket sums positive, so that estimator says "no ceiling". On the live book the old buckets sum negative, so the same estimator says "cut to 15". It is the same defect the exit sweeps have, arriving on the entry side.

The capture lane's own data, re-cut by actual age, argues against its recommendation. The 60 to 180 minute bucket is the worst of the three old buckets: median -30.5%, one winner of nine marked. Its headline winners were older than the band it proposed, BAWSAQ at 3480 minutes and Chairman at 980. Only FSD was inside 180, and FSD is the token the Gold v1 paper set actually bought at age 116 and closed at -88.7%, while the buy-and-hold mark showed +87.5%. A refusal marked without an exit rule is not a trade. Widening would recover little anyway: of the 95 tokens refused on age, 17 are in 60 to 180 and 71 are over 720.

The old-plus-small exemption has a forward record now too. The Gold v1 paper set has run it for 2.5 days: 31 entries admitted only by the exemption, median -11.1%, sum -309.4 points, and the sign does not flip when any single entry is dropped. A stable negative, and the first age result here to clear that bar.

The reason not to cut to 15 is rugs, not returns. The 2 to 15 minute bucket carries a 24 to 31% rug rate across all three samples, against 1 to 9% in every over-15 bucket of the tape and the paper ledger. A 15 minute ceiling would put the whole book inside the rug band while buying no measurable per-entry edge and giving up 58% of the flow.

Live change: none. Two paper sets are queued instead, Gold-age15 and Gold-oldsmall, each a Gold v2 clone with one field moved, to settle the half that is genuinely open. Read them on per-entry median in three to five days. Never on the sum.

Built 06/09/2026 22:10:01 Beirut. Source files under projects/crypto-2026-09/analysis-2026-09-06/.