Skip to content

Retire a confirmed row after its sixth session on the list (MAX_LISTED_DAYS, #115) - #122

Merged
yanivil merged 1 commit into
mainfrom
feat/listing-limit
Sep 15, 2026
Merged

yanivil merged 1 commit into
mainfrom
feat/listing-limit

Conversation

@yanivil

@yanivil yanivil commented Sep 15, 2026

Copy link
Copy Markdown
Owner

Summary

The listing rule from #115: a confirmed row is retired after its sixth session on the list, a Wolfe after its fifth. Evidence: the eleven-year late-entry replay (runs 34323013559 to 34323039560), where a row on its second day was as good as new, from the third day the same signals paid about 0.1 R less than on day 1 in 10 of 11 years, and from day 7 (a Wolfe from day 6) nothing was left for a late buyer.

How it works

  • MAX_LISTED_DAYS (6, Wolfe 5; legacy profile: none). carry_listing carries each structure's first_listed session across nights through the previous signals.json, keyed on ticker, pattern and stop like the replay and the evaluator, so a pull-back to the watchlist does not restart the count; listed_day is counted from the bars (weekend re-runs of the same bar do not advance it); a previous row that predates the field counts from the previous report's session.
  • A confirmed row past the limit is retired once, as RETIRED in the close-out list with the detail "listed 7 sessions since 2026-09-02, limit 6", and remembered in the file's new retired list for as long as the detector still produces the structure, in any status. Without that memory a retired structure would come back the next night as "new today", since the age window can outlast the listing limit by two sessions. The memory is dropped when the structure is no longer produced.
  • The report gains a Day column (listed_day / limit, also for a watchlist row that was confirmed before) and a header and footer sentence; meta.max_listed_days; the close-out order places RETIRED after EXPIRED.
  • The page's day-on-the-list badge now reads the scanner's own count, falling back to the track record's for older files.
  • The breakout age limit still applies on top, so the rule binds only for an inverse H&S first seen at age 2 or younger and a Wolfe at age 3 or younger; a cup never reaches it. No first-seen row the replays score changes, so the yearly figures stand.

Tests (154): carry_listing (first listing set, inherited, inherited by a watchlist row, counted from a previous file without the field, retirement at the limit per pattern, the remembered structure kept silent and forgotten once no longer produced, legacy without the limit), close_out skipping today's retirements, the report's new column and sentences, a second run carrying the count to day 4, and a third run that retires a row and then keeps it silent and remembered.

Docs: wiki 01 (fields, column, RETIRED, the retired list), wiki 03 (the constant's row, the ledger of adopted values, the adoption paragraph under "Late entry, tested"), wiki 04, README, changelog.

Closes #115.

Test plan

  • ruff --select E,F,W --line-length 120 clean, 154 tests pass locally
  • tests workflow on this PR
  • tonight's scan writes first_listed, listed_day, retired and the Day column; today's report has no confirmed row, so the first retirement can only follow a new breakout's seventh session

🤖 Generated with Claude Code

…_LISTED_DAYS)

Adopted on the eleven-year late-entry replay (#115): a row on its second
day was as good as new, from the third the same signals paid about 0.1 R
less than on day 1 in 10 of 11 years, and from day 7 (a Wolfe from day 6)
nothing was left for a late buyer. carry_listing carries first_listed
across nights (keyed on ticker, pattern and stop, like the replay), counts
listed_day from the bars, retires a confirmed row past the limit once as
RETIRED in the close-out list and remembers it in the file's `retired`
list while the detector still produces the structure, so it neither
returns as new nor sits on the watchlist. The report gains a Day column
and the footer explains it; legacy profile: no limit. The page reads the
scanner's count. Tests (154), wiki 01, 03 (constant, ledger, adoption)
and 04, README, changelog.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@yanivil
yanivil merged commit 8969208 into main Sep 15, 2026
7 of 8 checks passed
@yanivil
yanivil deleted the feat/listing-limit branch September 15, 2026 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Late entry: buying a signal on its Nth day on the list versus at its first report

1 participant