kelly-invest-stock · diff

git:20260805.9ed5b69 to git:20260805.1f03004

45 added, 16 removed. Audit A to A.

---
name: kelly-invest-stock
- description: Build and operate a Busabase-backed mainland China A-share strategy experiment desk with a bundled local Hono App-in-Skill, strategy-level L1/L2/L3 manual maturity labels, one CNY virtual ledger per strategy, and dated strategy backtest reports. Use when the user invokes $kelly-invest-stock or /kelly-invest-stock, wants to define or compare A-share strategies, inspect a strategy and its virtual book, manually label strategy maturity, or review dated backtests, drawdown, and contribution to the total book. It never connects to a brokerage, places orders, moves money, or presents generated analysis as personalized investment advice.
+ description: Build and operate a Busabase-backed mainland China A-share strategy experiment desk with a bundled local Hono App-in-Skill, evidence-backed strategy research, strategy-level L1/L2/L3 manual maturity approvals, one CNY virtual ledger per strategy, and dated strategy backtest reports. Use when the user invokes $kelly-invest-stock or /kelly-invest-stock, wants to define or compare A-share strategies, inspect a strategy and its virtual book, record research evidence, manually approve strategy maturity, or review dated backtests, drawdown, and contribution to the total book. It never connects to a brokerage, places orders, moves money, or presents generated analysis as personalized investment advice.
---
# Kelly Invest Stock
Operate a compact strategy experiment desk. Keep the first screen centered on a
large strategy table: concise thesis, maturity label, account NAV, return,
benchmark, drawdown, cash, and virtual positions. Open a row for the complete
strategy and ledger detail.
## Mandatory Dependencies
Before changing the app:
1. Read and follow `$kelly-app-skill-creator` for product behavior, responsive UI,
and the canonical local `app/` artifact.
2. Read and follow `$busabase` for connection, target Space, ChangeRequests,
review, and merge behavior.
3. Read and follow `$busabase-app-creator` for resource modeling, AirApp runtime,
security, validation, and deployment.
4. Read `references/stock-sdk.md` before changing market-data ingestion.
If a dependency is unavailable, continue safe local artifact work but stop before
the unavailable deployment or Busabase operation. Never create a second
persistent backend.
## Product Boundary
- Limit the product to mainland China A shares. Preserve six-digit stock codes,
show Chinese security names as the primary identity, and use CNY for every
virtual account, price, market value, P/L, and portfolio total.
- Keep every account, position, return, stage, and regression result virtual.
Never connect to Futu or another brokerage, create order UI, or call a trading
API.
- Give every strategy exactly one virtual account and default every new strategy
to `L1`.
- Treat `L1`, `L2`, and `L3` as manual labels on the whole strategy, never on an
individual stock:
- `L1`: default basic observation;
- `L2`: manually marked advanced observation;
- `L3`: manually marked high-confidence observation.
- Do not copy the live-trading meaning of L2/L3 from `invest-ui`. In this skill,
changing a label never changes execution mode, account type, or capital.
- Keep thesis, evidence, assumptions, confidence, and invalidation separate. A
label or score is not a recommendation.
- Use exact-pinned `stock-sdk@2.4.0` only in reviewed trusted execution. Browser
code performs no public market fetch.
## Data And Modes
- Use Busabase as the persistent source by default. A normal invocation or URL
must never silently switch to Demo.
- Enter Demo only when the user explicitly asks to open or update Demo. Demo data
is deterministic, clearly labeled, and not persistent.
- Use 10 recognizable investor-style Demo strategies such as Buffett, Munger,
Duan Yongping, Peter Lynch, Howard Marks, Fisher, Graham, Li Lu, Templeton, or
Soros style examples. Build every Demo basket from clearly labeled A-share
examples and use a fixed CNY 1,000,000 nominal account per strategy.
Label them as style reproductions; never imply actual holdings, endorsement, or
current advice.
- Read and write persistent state through `busabase-sdk`. Stage changes use a
- reviewed `records.changeRequest` update to the strategy record's `status`
- field. Never persist stage changes in browser storage or local files.
+ `records.changeRequest` update to the strategy record's `status` field and a
+ dated approval record containing the human reason and account snapshot. Never
+ persist stage changes in browser storage or local files.
+ - Offer the deterministic classroom seed only in a completely empty Busabase
+ workspace. Submit one reviewable bulk ChangeRequest per Base without automatic
+ merge; the user or Space reviewer decides whether to merge it.
## Core Resources
- Keep four application-owned Bases under one application Folder:
+ Keep five application-owned Bases under one application Folder:
- `strategies`: name, key, family, `status`, thesis, selection rule,
- invalidation rule, review cadence, benchmark, and confidence.
+ invalidation rule, review cadence, next review time, benchmark, and confidence.
- `ledger-accounts`: one virtual account per strategy with nominal capital, NAV,
- cash, benchmark return, maximum drawdown, and update time.
+ cash, benchmark return, maximum drawdown, update time, and return baseline date.
- `ledger-positions`: virtual quantity, entry price, reference price, market
- value, weight, strategy key, six-digit A-share code, and Chinese security name.
+ value, weight, price source/time, strategy key, six-digit A-share code, and
+ Chinese security name.
- `strategy-backtests`: dated strategy-level reports with window start/end,
methodology, coverage, benchmark, total return, CAGR, volatility, Sharpe,
maximum drawdown, benchmark-relative return, and bias/source notes.
+ - `strategy-reviews`: dated research sources, source freshness, supporting and
+ counter evidence, account snapshots, manual stage decisions, reviewer, reason,
+ and the associated ChangeRequest ID.
- Provision missing resources lazily through one Busabase ChangeRequest, re-read
- the Folder, and use only validated materialized IDs. Ignore legacy app-owned
- resources outside this declaration; never delete or adopt them implicitly.
+ Provision a new empty workspace lazily through one Busabase structure
+ ChangeRequest, re-read the Folder, and use only validated materialized IDs. For
+ an owned older schema, submit only declared suffix fields through reviewable field
+ ChangeRequests, wait for approval, then update resource metadata. Reject reordered,
+ changed, or otherwise incompatible fields. Ignore legacy app-owned resources
+ outside this declaration; never delete or adopt them implicitly.
## Operating Loop
### Research
Define a strategy's thesis, selection rule, invalidation rule, benchmark, review
- cadence, and virtual account before evaluating it. Preserve source and freshness
- for market observations.
+ cadence, next review time, and virtual account before evaluating it. Preserve
+ research source, source date, supporting evidence, counter evidence, and data
+ freshness in a dated review record.
### Plan
State the evidence needed for the next review. New strategies remain L1. Treat an
L2/L3 change as a human maturity judgment, not an automated promotion or trading
authorization.
### Action
Allow reviewed research updates, virtual-ledger records, and mouse-driven manual
- stage marking. Send persistent stage changes through Busabase ChangeRequest and
- reload the canonical record after materialization.
+ stage marking. Before promotion, require complete strategy rules, one account with
+ a baseline date, dated research evidence, quote provenance, and reconciled NAV.
+ Require a human reason and confirmation for every stage change. Send persistent
+ stage changes through Busabase ChangeRequest, write the approval timeline record,
+ and reload canonical records after materialization.
### Retrospective
Compare virtual return, benchmark, maximum drawdown, and contribution to the
whole book. Record whether thesis or process failed before changing a strategy's
rules.
## UI Contract
- Use a fixed desktop sidebar with Strategy, L1, L2, L3, Regression, and Help &
Settings. Do not add a separate Virtual Ledger tab.
- Make the Strategy route a large full-width table that combines strategy summary
and ledger reality. Clicking the entire row opens Strategy Detail.
- Put the manual L1/L2/L3 segmented control and compact performance summary at
the top of Strategy Detail. Below it, use shareable hash-routed tabs in this
- order: `组合持仓`, `策略逻辑`, `回测表现`.
+ order: `组合持仓`, `研究与审批`, `策略逻辑`, `回测表现`.
- Open `组合持仓` by default. Make it the dominant detail surface with account
NAV/capital/cash/P&L, invested-versus-cash allocation, and a full-width table
showing Chinese security name, six-digit code, quantity, virtual entry price,
reference price, virtual market value, portfolio weight, and virtual P/L. Keep
cash visible as part of the portfolio rather than hiding it in a summary.
- Make L1/L2/L3 routes filter strategies, not stocks.
+ - Sort the default strategy table by next review time with missing or overdue
+ review dates first. Do not rank the default workflow by return or confidence.
+ - In `研究与审批`, show dated positive and counter evidence, source provenance,
+ freshness, stage decisions, human reasons, reviewer, snapshot metrics, and
+ ChangeRequest IDs. Clearly state that Demo approvals reset on full refresh.
- Treat Strategy/L1/L2/L3 navigation as an in-memory strategy filter after the
desk has loaded. Preserve the sidebar and workspace header DOM, update only
the main strategy content, and do not refetch Busabase or show a full-page
loading state for these route changes.
- Make Regression a dated strategy backtest table aligned with `invest-ui`:
report date, start/end dates, window label, methodology, coverage, total
return, CAGR, volatility, Sharpe, maximum drawdown, and benchmark-relative
return. Keep hindsight warnings visible. Show current virtual-book contribution
(`strategy P/L / total nominal capital`) and the removal case in a clearly
separate secondary section. Do not invent a backtest or any historical metric
without a stored dated report backed by historical observations.
- Do not show a rerun action unless a trusted historical-market-data workflow is
actually available. A stored report is inspectable data, not an executable
backtest engine.
- On mobile, use the shared off-canvas sidebar, a separate detail route, sticky
back action, and no horizontal page overflow at 390px or 360px.
- Keep the virtual-only boundary visible. Do not describe L2 as Futu paper trading
or L3 as real trading anywhere in this app.
## Metric Rules
- Calculate position P/L as `quantity * (latest reference price - virtual entry
price)` and account return as `NAV / nominal capital - 1`.
+ - Treat the account's baseline date as the start of nominal-capital performance.
+ Do not compare, rank, or aggregate returns as comparable when baseline dates or
+ quote provenance are missing. Display missing metrics as unavailable, never as
+ zero.
+ - Reconcile each account NAV against cash plus position market values. Flag a
+ mismatch before allowing promotion.
- Calculate total-book return from summed account NAV and summed nominal capital.
- Calculate regression snapshot contribution as `strategy account P/L / total
nominal capital`; calculate the removal case from the remaining accounts.
- Sort and compare dated backtest reports only after checking that report date,
window start/end, method, coverage, and benchmark are present.
- Compare strategies on the same window and benchmark before ranking them.
- Keep Demo observations fixed and dated. Never present them as live data.
- Format account and position money in CNY. Show the Chinese security name first
and retain the six-digit code as secondary identity.
## Completion Criteria
Finish only when:
- `pnpm --dir app dev` remains supported and deterministic checks pass;
- Strategy overview/detail, L1/L2/L3 strategy filters, manual stage marking, and
Regression work on desktop and mobile;
- every strategy has one virtual account plus explicit selection and invalidation
rules;
- - the four-resource declaration and lazy provisioning pass fixture tests;
+ - the five-resource declaration, additive schema migration, and lazy provisioning
+ pass fixture tests;
+ - research evidence and manual approvals persist in Busabase, with reason and
+ account snapshot visible in the strategy timeline;
- normal mode uses Busabase, while Demo is explicit, deterministic, and labeled;
- no brokerage path, real-money stage, trading action, or personalized investment
claim exists; and
- available dependency-skill deployment and real-data checks pass.
## Stop Conditions
Stop before consequential Busabase mutation when the target Space is ambiguous,
the viewer lacks permission, ownership cannot be proven, a stale record would be
overwritten, or the request crosses into brokerage execution or money movement.