# Daily A-share systematic research v9

Current implementation status: this workflow is declared in
`moonpack/pack.json`, mirrored by `suitepack/manifest.mbt`, and executable as
`daily-a-share-ideas.workflow.json`. In version `0.20.0`, the verified installed
workflow runs one native `systematic.run` command through MoonClaw. It consumes
the checked-in fixture, computes deterministic factor scores, regime, ranking,
watchlist and one focus candidate, then reports readiness blockers. Every run
must bind the exact installed trading-policy ID, version, content hash,
quarterly-extreme-upside objective, 10x extreme bull multiple and
40-to-65-session horizon. The durable job remains with MoonClaw and operator
request/result records are written through MoonBook. The Python localhost
pilot has been removed.

The numbered sequence below remains the full governed product contract. The
current executable slice covers deterministic fixture scoring, ranking, regime,
watchlist and focus-candidate production. Its fixed fixture session is
`2026-07-24`; app requests for any other session fail closed because the
MoonClaw command workflow currently consumes the installed fixture file.
`moonfish_sina` and `moonfish_market_store` bootstrap and incrementally commit
permissioned daily market sessions. Tushare is not an installed provider.
After full price-history completion, `moonfish_sina_enrichment_import` builds
an explicitly bounded price-only acquisition shortlist and retrieves Sina
fundamentals, valuation inputs, actions, disclosures, and accessibility only
for selected symbols. Market regime and breadth are acquired once per session.
These artifacts still do not satisfy the full policy evidence contract.

The enrichment importer can bind an exact `candidates[].symbol` selection
artifact. In that mode, readiness is checked only for those symbols, including
the 120-completed-bar gate and requested completed-through session. A young
listing outside the frozen selection cannot block bounded downstream evidence
acquisition. Completed per-symbol fundamentals, actions, and disclosure files,
plus the shared selected-symbol accessibility batch, are preserved and skipped
when a bounded run resumes.

`moonfish_policy_filter` consumes the frozen selection and enrichment root. Its
v2 output binds both policy-file digests and evaluates a fixed 33-rule catalog
across 14 groups. Each rule is `pass`, `fail`, `unknown`, or
`not_applicable`; any unknown blocks qualification. The filter separates
observed hard-gate rejections from candidates still awaiting complete evidence
and never promotes a partial Sina evidence pass into a policy-qualified or
recommendation-eligible result. An optional refreshed regime root records a
proxy observation without substituting broad-market proxies for the required
CSI All Share series. An optional announcement cutoff classifies GBK
announcement-index titles as risk, catalyst, pledge, or audit document
candidates; titles remain secondary alerts with `policy_failure: false` and
never establish clearance. The liquidity gate computes a median only from
exactly 20 amount-bearing completed sessions.

For daily data operations, a preserved permissioned full snapshot can update
the security universe and daily session, then feed
`moonfish_sina_regime breadth-snapshot` without a duplicate full-market
download. Exact non-trading rows remain universe evidence but do not become
synthetic bars. The session transaction advances only traded symbol-history
cursors.

The quarterly 10x objective is an extreme bull-scenario search constraint, not
the expected return or a guarantee. The current one-security fixture can only
demonstrate deterministic ordering. It cannot identify the best current A-share
or support an investment-ready conclusion.

The separately versioned `technical-alert-v1` momentum calculation is retained
only as a risk-attention signal. It is not an investment score and is not part
of the trading policy. Every alert and systematic decision must explicitly
report whether the complete policy was followed. Partial evaluation lists the
missing rules, preserves unknown metrics, and can produce only `monitor_only`,
`no_qualified_idea`, or a non-investment alert.

The closed-session 2026-07-27 run froze 45 SSE/SZSE main-board acquisition
candidates and completed Sina fundamentals, actions, disclosures, and
accessibility artifacts for all 45. The full catalog produced 1,485 rule
outcomes. Every candidate failed overall: all 45 fail the complete licensed
point-in-time evidence rule and the missing policy-owner parameters rule; nine
also fail the observed RMB 5 billion float-cap gate. All 45 retain 29 unknown
composite rules, including exact 20-session median amount, policy score,
strategy mode, industry strength, exact CSI All Share regime, quarterly
scenarios, named review, and operating controls. Twelve carry non-blocking
announcement-title alerts. Zero are policy-qualified or recommendation
eligible, and no investment score was evaluated.

The native `moonfish_candidate_learning` experiment command is deliberately
downstream of this basic filter. It accepts only an explicit frozen candidate
selection and cannot scan or change the whole-stock universe. The first
45-name price-only cohort pilot evaluated 648 bounded configurations over a
1,022-session timeline. Its selected challenger earned 194 bps in training and
351 bps in validation after base costs. It returned 52 bps in the untouched
holdout and 25 bps under stressed costs, but its drawdown-and-turnover-adjusted
objectives were -46 bps in training, -233 bps in holdout, and -278 bps under
stress. The proposal was rejected. This survivor-selected pilot is
implementation evidence only, follows neither the complete policy nor the
production historical-cohort standard, and cannot produce a recommendation.

Version `0.20.0` includes `moonfish_post_filter_rl`, which supersedes that 648-grid
pilot for full-policy post-filter research. It verifies the immutable cohort,
the expanded atomic policy catalog, and the provenance-labeled tuning form.
The 2026-07-27 run evaluated 5,832 actions over 45 names and 1,022 sessions.
The catalog contains 231 active atomic criteria; the current historical adapter
can execute one and masks the other 230 as unavailable. Both the declared
tuning baseline and learned challenger had negative drawdown/turnover-adjusted
holdout objectives, so the proposal was rejected. Four names passed the
learned price gate, but all four state `follows_policy: false` and
`recommendation_eligible: false`; no fifth name is padded into the result.

1. Resolve the request to the next valid SSE/SZSE session.
2. Acquire through the mode-specific pack provider: deterministic fixture in
   development, permissioned rate-limited Sina evidence, or the validated
   customer-owned licensed bundle in commercial mode. Never cross-fallback or
   promote incomplete data into complete evidence.
3. Freeze and digest the security master, market/fundamental inputs, disclosures,
   corporate actions, catalyst facts, and CSI All Share regime snapshot.
4. Fail closed on ST/abnormal/suspended/locked names, fewer than 120 trading
   days, float cap below RMB 5bn, audit/enforcement/corporate-action conflict,
   or incomplete/stale evidence. Persist every rejection with rule and observed
   evidence.
5. Winsorize and cross-sectionally normalize. Apply the exact fixed 100-point
   score, up to 30 risk-penalty points, final threshold 70, catalyst threshold
   12/20, deterministic ranking, 0-5 names, and at most two per industry.
6. Determine regime only from CSI All Share versus its 60-day average and 50%
   breadth: risk-on 60%, neutral 30%, risk-off 0% new-position capacity.
7. Materialize full evidence dossiers for the deterministic top 20 eligible
   candidates (or all when fewer). Each dossier separately records reported
   facts, deterministic calculations, model inference, peer comparison, dated
   catalysts, category-specific risks, primary and contradictory evidence,
   measurable invalidation, and every higher-ranked later-stage failure.
8. For the top 10 dossiers (or all when fewer), materialize separate immutable
   bull and bear requests and artifacts. Their generator identities, logical
   roles, prompt-policy versions, dossier digest, and evidence bindings must be
   distinct and exact. The bear artifact must challenge catalyst, accounting,
   governance, valuation, crowding, liquidity, and invalidation.
9. Require the named final reviewer to submit both exact artifact digests plus
   dossier and next plan revisions. No qualified/actionable plan can exist when
   that binding is absent or stale.
10. Materialize versioned `EquityResearchPlan` records. Before named approval,
   stock records are monitor-only and contain no target. Approval freezes the
   stock, entry range, three targets, selected goal, after-cost increase, risk,
   sale window, invalidation and exit rules. Rejection remains monitor-only;
   run-level abstention contains no stock or price fields.
11. Maintain zero to five simultaneously accepted plans, ordered by deterministic
   rank and capped at two per industry. Candidate rejection removes only that
   candidate. A named run-level “approve zero ideas” decision clears every
   accepted plan for the session and prevents a contradictory mixed outcome.
12. Assemble the Daily Brief as an ordered portfolio watchlist with entry range,
   bear/base/bull and selected targets, after-cost increase, sale window and
   invalidation for every accepted name. Authority remains false.
13. Create paper positions only from exact accepted plans. Determine A-share
   board-lot units from requested weight and enforce eight positions, 10% per
   security, 25% per industry, 0.5% NAV loss-to-invalidation and 60/30/0 regime
   gross caps; deny suspension and locked-limit entries.
14. Maintain cash/NAV, T+1 sellability, deterministic fees/tax/slippage,
   staged/full/invalidation/expiry exits, realized/unrealized P&L, transactions,
   benchmark comparison and industry attribution. Never transmit an order.
15. Persist dossier, review, plan, portfolio, transaction and attribution
   histories/events plus replay metadata.
16. Consume exactly one next-valid-session portfolio batch with point-in-time
   closes and accessibility for every open symbol, CSI All Share and industry
   returns, effective corporate actions, cutoff/source/license timestamps, and
   exact data/calendar/policy/plan/prior-portfolio digests. Development uses the
   deterministic multi-symbol fixture. Commercial mode requires this extension
   in the newly validated licensed snapshot and fails with an explicit readiness
   blocker when it is absent.
17. Apply cash dividends, splits/bonus shares, symbol changes and mandatory cash
   delisting/merger settlements before marking positions. Record rights offers
   as expired/unexercised unless an exact named paper-only subscription authority
   is present; never infer or automatically grant that authority.
18. Evaluate every open position against its retained exact plan for T+1,
   staged/full target, invalidation, expiry, suspension and locked-limit deferral.
   Record deterministic paper transactions and keep rejected/withdrawn plans
   exit-manageable through the immutable position-owned plan snapshot.
19. Seal the daily NAV, cash, gross/net exposure, realized/unrealized P&L,
   after-cost return, cumulative benchmark excess, Brinson-like industry
   allocation/selection/interaction, per-plan outcomes, adjustment ledger and
   replay chain. No step grants broker, order or cash-movement authority.
20. Keep the long-lived paper account independent from a daily run. It owns CNY
   cash/NAV, holdings and lots, retained plan snapshots, transactions,
   corporate actions, valuations, run bindings and a continuous NAV chain.
21. A new run may only propose reconciliation. Compare its zero-to-five exact
   accepted plans with current holdings and classify each name as hold, add,
   reduce, exit, replace or no-action. Bind old/new plan, dossier, bull, bear and
   final-review digests, then optimize weights within eight positions, 10% per
   name, 25% per industry, 0.5% NAV risk, regime gross, board-lot, cash, turnover
   and deterministic-cost constraints.
22. Require a named human paper-rebalance approval bound to the exact account
   revision and immutable proposal digest. Apply only simulated fills; enforce
   T+1 and accessibility, record deferred residuals, and never call a broker.
23. Account daily observations use a continuous pack fixture calendar across
   research runs. Each account outcome emits separate Bookkeeper acceptance and
   MoonFlow Three-Gap review payloads; neither can self-apply learning or policy.
24. Convert every approved action that cannot reach its sealed target units into
   a durable pending instruction. Retain the original proposal, named approval,
   plan/data/policy versions, target weight/units, price/slippage/cost ceilings,
   earliest/latest sessions, preconditions and expiry/cancel policy.
25. On each exact next-session account operation, observe pending buy and sell
   symbols, explicitly adjust or invalidate instructions for corporate actions,
   and simulate full/partial fills only inside the original authority envelope.
   Price, cost, plan, policy or adverse-regime drift moves the instruction to
   `needs_reapproval`; expiry never extends itself.
26. A named cancel, replace or re-authorization creates an immutable receipt.
   Replacements create a new instruction and preserve the superseded record.
   Route deferred, missed, expired and re-approval execution gaps to both
   Bookkeeper and MoonFlow without granting broker or learning authority.
