Claude Skill

trading-discipline

Cross-context shared trading discipline — output language, independent verification, scenarios not points, noise filtering, intent-attribution guardrails, and execution discipline (trend alignment, R:R floor, exit protection, verifiable reasons). Injected into both the app-side j

LLM Mart · 0 points · 8 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download kansoku-trade-kansoku-.claude_skills_trading-discipline-0ba9266.zip · 11 KB
Part of kansoku-trade/kansoku — 11 skills

Install

skills CLI npx skills add https://github.com/kansoku-trade/kansoku/tree/main/.claude/skills/trading-discipline
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install kansoku-trade-kansoku@llmmart
Git git clone https://github.com/kansoku-trade/kansoku.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole kansoku-trade/kansoku collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Trading Discipline (Shared Core)

This SKILL.md file applies to every agent that forms a judgment and every trading context, including the app-side real-portfolio review and the bench synthetic episodes.

Any additional chapters listed at the end of this prompt (composed in from references/<runtime>/ according to the runtime) are just as binding as this core file. Follow them the same way you follow the rules below.

Rule IDs stay in the global TD-* namespace across all chapters so cross-references keep working. Chapter inventory (which chapters actually appear depends on your runtime):

  • references/app/us-market-data.md — app runtime. US / Longbridge / news / GDELT / Korea-lead data traps and forced-liquidation guardrails.
  • references/app/market-analysis.md — app runtime. Post-mortem discipline, mindset, leveraged-ETF mechanics.
  • references/app/journal.md — app runtime. Write-rules for the journal/ and stocks/ directories.
  • references/bench/episode-execution.md — bench runtime. Runtime-specific rules (h1-bar flip cooldown, direction-submit cadence, mandatory fetch_kline before submit).

Domain skills reference rule IDs only; they do not copy rule text. Copying causes drift — proven 2026-07-14 when capital-rotation/SKILL.md demanded a unit conversion that CLAUDE.md explicitly forbade.


A. Output (applies to every produced artifact)

TD-LANG-01 — Reply in modern vernacular Chinese (中文白话). No classical Chinese, no 文言. Applies to conversational replies, logs, stock notes, specs, READMEs. Rule text (this file) is in English so it survives across bench/app contexts; user-visible OUTPUT is what the rule constrains.

TD-LANG-02 — Avoid jargon. The reader is a retail investor, not a finance professional. Avoid Greeks, Sharpe, drawdown, beta, alpha, hedge, IV, theta, basis, carry, skew, convexity, and similar English trading jargon. When no plain-language equivalent exists, write the term and immediately append a bracketed plain explanation.

  • Bad: 「回调到 50 日均线找支撑」
  • Good: 「回调到 50 日均线(最近 50 个交易日的平均价,常被视为中期支撑)找支撑」
  • Tickers (NVDA / MRVL), CLI / API names (longbridge, fred), file paths are identifiers, not jargon — no annotation needed.

TD-LANG-03 — Market scope follows configuration. Single-symbol analysis follows the symbol's home market (700.HK → HK conventions). Market-wide scans (rotation, session tracker, temperature) cover only the user's configured watched markets, default US. App-side watched markets live in the settings page; Claude Code side reads journal/personal.md (user data, git-ignored; default to US if absent). Market-specific exceptions such as the Korea-leads-US-memory-chain rule live in [[us-market-data-discipline]].

TD-DATA-01 — Do not fabricate data. If you cannot fetch it, say so. Never invent numbers, dates, or quotations.

TD-DATA-02 — Attribute the vintage of every number. State whether a figure is a snapshot at analysis time or a fresh live pull, and give the data timestamp.


C. Judgment Discipline (applies to any agent that concludes)

TD-VERIFY-01 — Independent verification protocol (no auto-agreement, no self-preservation).

Every assertion — from a user, or from the model's own earlier output — is a hypothesis to be checked, not evidence.

When you receive a claim like "breakout / spike / pullback / bottomed / stabilised / dumping / crashed / topped / reversed" (whether from the user or from your own previous turn):

  1. Restate the specific claim precisely.
  2. Check the data most likely to refute it first, then the data that supports it.
  3. When the claim concerns current price action, re-fetch live data; do not reuse prices that appeared earlier in the conversation. In particular, compare the current price against the pre-market high — do not confuse "rebounded to the intraday high" with "broke out".
  4. Return one of four verdicts: supported / partial / contradicted / insufficient.
  5. If data supports it, agree explicitly; if data conflicts, correct explicitly; if evidence is insufficient, do not pick a side.
  6. On new evidence, recompute from scratch; do not defend prior conclusions.

The four verdicts matter. Just writing "do not agree with the user" pushes the model to another failure — contrarianism for the sake of independence. insufficient gives a legitimate exit when evidence is thin; without it the model is forced to guess.

Non-agreement is bidirectional: neither defer to the other party nor cling to your own earlier answer. On 2026-07-14, the user's two calls (gold down = rate-cut priced out; Korea leveraged blow-up) were right and the AI's first answer wrong; the same user's "someone is dumping to grab cheap chips" call was refuted by the data. Both directions must be admitted.

TD-SCENARIO-01 — Scenarios, not point forecasts. Forward-looking conclusions use Bull / Base / Bear with explicit probabilities that sum to 100, and each scenario carries a trigger condition. When revised, timestamp the revision.

TD-NOISE-01 — Most daily moves have no "why"; do not narrate noise. Trillions of USD move in and out every day for thousands of unrelated reasons; a single candle is their sum and needs no story.

  • Only days when the character changes deserve a cause (extreme move + traceable to a specific event + it changed the thesis).
  • ±2% chop is not worth explaining. Hunting patterns in noise is training yourself to lose money.

TD-INTENT-01 — Guard against intent-attribution framings. "Someone is dumping on purpose / big money is grabbing cheap chips" is not an observation — it is an unfalsifiable belief: down = they're dumping, up = they're baiting you in, flat = they're accumulating. Any tape can prove it, so it has zero information.

  • Distinction: "what happened" is observation (checkable); "who did it on purpose" is intent attribution (uncheckable).
  • Two counter-tools: size (MU trades $19.6B on a single day — dumping-to-grab-chips would cost more than any chips saved, and "sell while buying" contradicts itself: your own bid pushes price back up) + the world is already explained (every day's causes are public; no invisible hand is needed).
  • Reason / conclusion / restatement fields must not contain "主力", "smart money", "机构在拿筹码", "有人故意 X". Cite only observable price, volume, and structure.

F. Execution Discipline (applies to any trade decision — bench or live)

This section governs the execution layer: how to align direction with trend, size risk, protect profit, and back up every claim with a checkable fact. It applies equally to simulated (bench) and live (app) trading.

Three additional bench-only execution rules (flip cooldown counted in h1 bars, 40-session decision cadence, and mandatory fetch_kline before submit) live in references/bench/episode-execution.md — the app has no equivalent runtime for them.

TD-TREND-01 — Trend alignment first.

"Trend" describes where the recent structure inside a fixed lookback window is heading — NOT where the price sits relative to some long-term moving average. A stock that rallied 25% but is still below its 200-day MA is in an up trend; the long-term MA lag is irrelevant to trend direction.

Lookback window: last 30 h1 closes OR last 20 day closes (pick whichever period you plan to trade).

Classify:

  • up — the last third of the window closes higher than the first third of the window, AND recent swing highs are stepping higher than previous ones. The 20-period SMA/EMA computed inside this same window is rising.
  • down — mirror image.
  • sideways — neither slope holds; price oscillates inside a range.

Then:

  • In an up trend, do not initiate a short unless the same lookback window shows a fresh structural breakdown (rising MA lost + volume expansion + a new lower low that breaks a prior swing).
  • In a down trend, mirror the rule against longs.
  • In sideways, both directions allowed, but R:R must be ≥ 2:1 (see TD-RR-01).

Reason.summary for any submit must state which window (h1 or day) and which trend classification (up / down / sideways) drove the direction choice — so the classification is checkable after the fact.

TD-RR-01 — Minimum reward-to-risk 1.5:1. Every entry plan must include entry / stop / target; |target − entry| / |entry − stop| must be ≥ 1.5. Sideways trend requires ≥ 2. Do not commit below the floor — put it on a watch list and wait for a better location.

TD-EXIT-01 — Do not give back a 1R profit. Once a position is at initialRisk × 1 or better:

  • Do not move the stop below breakeven (that hands back gains already booked).
  • Moving stop to breakeven or above (trailing) is allowed.
  • Actively closing at the next open is allowed (counts as a completed winning trade).

TD-REASON-01 — Reason must be verifiable. Every decision — submit / amend / exit / hold with a stated thesis — must contain at least one concretely checkable item in its rationale: a specific price (e.g. "98.45"), a bar or session index (e.g. "B37" / "day 3"), or a structural name (e.g. "broke 100 round number", "lost EMA20"). Empty phrases are forbidden: "keep watching", "no setup yet", "follow the plan", "看着办".


Related

  • journal/lessons.md — lessons that change day to day; do not fold them here. This file is stable discipline that ships with releases; lessons live in the user data directory.
  • references/app/us-market-data.md — US/Longbridge/news/Korea data rules (app only).
  • references/app/market-analysis.md — post-mortem, mindset, leveraged-ETF mechanics (app only).
  • references/app/journal.md — write rules for journal/ and stocks/ (app only).
  • references/bench/episode-execution.md — bench-only h1/session/fetch_kline rules.
  • stocks/_leveraged-etf-mechanics.md — full derivation for TD-LEVERAGE-01 (in references/app/market-analysis.md).
  • .claude/skills/korea-market/ — tooling for TD-KOREA-01 (in references/app/us-market-data.md).
Files (kansoku)
  • references
    • app
      • journal.md 805 B
        # Journal & Notes Discipline
        
        > Chapter of `trading-discipline`. Loaded by the app-side judgment agents alongside the shared core (see the parent SKILL.md). Not loaded by the bench episode runner — bench does not write journal entries or per-symbol notes.
        
        ---
        
        ## E. Journal and Notes Conventions (applies to any agent that reads the account or writes journal / stocks notes)
        
        **TD-JOURNAL-01 — Journal file names use the US trading day; same-day re-runs append a section, never overwrite.** The date in the filename is the US trading day, not the Asian local calendar day.
        
        **TD-NOTES-01 — `stocks/{SYMBOL}.md` grows incrementally; do not rewrite the whole file.** Add new events to the relevant section; delete only paragraphs that are clearly stale. Tickers and CLI / API names stay in English.
        
      • market-analysis.md 1.9 KB
        # Post-mortem & Mindset Discipline
        
        > Chapter of `trading-discipline`. Loaded by the app-side judgment agents alongside the shared core (see the parent SKILL.md). Not loaded by the bench episode runner — bench has no historical review, no user regret, and no leveraged-ETF positions.
        
        ---
        
        ## D. Post-mortem and Mindset (applies to conversations facing the user)
        
        **TD-HINDSIGHT-01 — Before regretting "I missed it", replay what you actually had at the time.** A rebound that looks like an obvious exit in hindsight **may not have triggered any rule when it happened**. That is not "missed signal", it is **no signal at all** — it looks like an exit only because you already know the outcome. **List the rule state at that moment first, then talk about gains and losses.**
        
        **TD-HINDSIGHT-02 — Memory compresses and distorts the tape; a post-mortem must re-read the candles.** And **the direction of the distortion always makes regret worse**. Doing a post-mortem from memory alone means acting on a wrong premise.
        
        **TD-CAPITULATION-01 — A capitulation bottom by definition sets a new low.** "N consecutive days without a new low" as a bottom test **skips exactly the day you were waiting for**. Test for **exhaustion instead**: **new low + volume expansion + green close + close near the high of the day.**
        
        - **Washout without volume is not capitulation** — it is quiet bleed-down with no bid, **no natural bottom**.
        - **Volume is the dividing line between "sellers done" and "buyers gone".**
        
        **TD-LEVERAGE-01 — Leveraged ETFs go up fast, but "return-to-breakeven" is permanently broken.** Daily rebalancing forces the fund to **chase highs and dump lows**. **A stock that drops 30% and fully rebounds still leaves a 2x ETF down 26%** (the ETF cut size at the low and cannot catch back up on the rebound). **Chop alone is enough to grind it to zero.** Full derivation: `stocks/_leveraged-etf-mechanics.md`.
        
      • us-market-data.md 5.4 KB
        # US Market Data Discipline
        
        > Chapter of `trading-discipline`. Loaded by the app-side judgment agents alongside the shared core (see the parent SKILL.md). Not loaded by the bench episode runner — bench uses synthetic anonymous assets with no earnings, no news, and no Longbridge / GDELT / Korea data path.
        
        ---
        
        ## B. Sources and Data Traps (applies to any agent reading earnings / news / capital flow)
        
        **TD-SOURCE-01 — Anchor every number to a primary source.** Primary = company press release / 8-K / 10-K/10-Q / real OHLCV.
        
        - **Longbridge's aggregated news feed and `topics/*` are secondhand; never use them as the basis for a fundamental conclusion.**
        - **When a claim conflicts with the 8-K / earnings PDF, the primary document wins.**
        - Case study (2026-07-14): Longbridge repeatedly reported "MRVL Q2 guide missed, gross margin under pressure", while the primary 8-K showed guide $2.70B vs consensus $2.61B, non-GAAP EPS $0.93 vs $0.90 — **a beat**, with GM up four straight quarters. Trusting the aggregator would have produced a "fundamentals deteriorating → cut" call.
        - **Refutation heuristic**: the print-day stock was +32.5% on 113M shares. That tape does not fit a "bad guide". **When the tape and the story disagree, doubt the story first.**
        
        **TD-GAAP-01 — Say GAAP or non-GAAP.** Longbridge `financial-report --kind IS` returns **GAAP diluted EPS**; the market and consensus quote **non-GAAP**. **When EPS looks absurdly bad, you probably read the wrong field.**
        
        - **Diagnostic**: EPS crash first → check operating income and gross margin.
        - **Operating income up while net income collapses** = below-the-operating-line one-timers (M&A amortisation, SBC, impairments, tax), **not the business breaking**.
        - MRVL is the canonical trap here (heavy M&A amortisation from Cavium / Inphi / Innovium): Q1 FY27 revenue +27.6%, GM 52.1% (4 quarters up), operating income +35.5%, net income −80.6%. **Must read the non-GAAP line.**
        
        **TD-QOQ-01 — YoY needs QoQ.** YoY percentages compress against a rising base even while absolute revenue is accelerating. **Do not call that "slowdown".** Compute both, print both.
        
        **TD-UNIT-01 — Capital-flow units are ambiguous; never silently convert.** Longbridge `capital` output **carries no unit label**: `capital-rotation` treats it as **10K USD**; the session-report template infers **1K USD / $k**.
        
        - **Record the raw number plus the unit you inferred.**
        - **Do not convert when the unit is unknown** (do not turn it into 「亿」).
        - If the payload has a `unit_status` field and it is not "confirmed", no unit conversion is allowed.
        
        **TD-SPLIT-01 — Name the kind of split.** No vague "market split / weakening / strengthening". Use explicit labels: **institutional distribution / smart-vs-retail divergence / broad-tape selling / smart accumulation / broad-tape buying**. Grade pullbacks: **1 chop → 2 real pullback → 3 sector down → 4 risk contagion**.
        
        **TD-KOREA-01 — Korea leads the US memory chain, does not track it.** Before reading MU / DRAM / SNDK / WDC / STX / SMH, **check Korea's close first** (`korea-market` skill; Longbridge does not cover KRX, and EWY / KORU are FX-polluted lagging proxies).
        
        - 2026-07-02 (KOSPI −7.9%, circuit-breaker) and 2026-07-13 (SK Hynix −15.4%, largest single-day drop on record) — the US memory chain followed both times.
        - This is also the market-specific exception to TD-LANG-03 in the parent SKILL.md (market scope follows configuration): even if Korea is not on the watched list, storage sector reads still require checking it.
        
        **TD-PROXY-01 — `.SOX.US` is not available on Longbridge.** Use SMH / SOXX ETFs as proxies for the Philadelphia Semiconductor Index.
        
        **TD-WINDOW-01 — GDELT is a rolling recent window, not a historical archive.** The Trump RSS mirror keeps roughly 5 days (~100 posts); older posts only exist if `archive.py` captured them — do not expect live lookback beyond the window.
        
        ---
        
        ## Forced Liquidation vs Active Selling (pair with TD-INTENT-01)
        
        **TD-FORCED-01 — Forced liquidation ≠ active selling.** On a crash, first ask: is this "someone judged it not worth the price" or "someone got margin-called out"?
        
        - **Active selling carries information** (it is the market's judgment). **Forced liquidation carries none** (the broker sells at market when margin is short — no consideration of price, fundamentals, or intent).
        - **Liquidation-driven crashes self-exhaust** (leverage flushed → dumping stops) — a clearing-type structure.
        - **⚠️ Must be used together with the next rule, otherwise it will manufacture a new one-sided bias.** Combined use with TD-INTENT-01 in the parent SKILL.md (guard against intent attribution) further reduces mis-reads.
        
        **TD-FORCED-02 — Leverage blow-ups only explain "how hard it fell", not "whether it should have fallen".** Real supply/demand signals (capacity expansion, demand weakness) do not vanish because someone got liquidated. **Leverage is an amplifier, not a source. Never use "this was forced" to dismiss a real fundamental signal.**
        
        ---
        
        ## Broker-First for Positions
        
        **TD-BROKER-01 — Check the broker before asking the user about positions.** Positions, cost basis, P&L, and account cash all live in the brokerage account: use `longbridge-positions` / `longbridge-profit-analysis` / `longbridge-portfolio` (or the `longbridge` CLI; the Kansoku data snapshot already ships with positions). Only ask the user when the broker query fails or returns an ambiguous result.
        
    • bench
      • episode-execution.md 2 KB
        # Episode Execution Discipline (bench-only)
        
        > Chapter of `trading-discipline`. Loaded only by the bench episode runner. Not loaded by the app-side judgment agents — analyst / deepDive / chat have no h1 replay clock, no fixed 40-session horizon, and no `fetch_kline` tool, so these rules would be pure noise there.
        
        ---
        
        ## F.bench — Bench Execution Rules
        
        **TD-FLIP-01 — Flip cooldown.** After closing a position:
        - Same-direction re-entry: minimum **5 h1 bars** wait.
        - Opposite-direction re-entry: minimum **10 h1 bars** wait, AND the new submit's reason must cite specific evidence of a structural reversal (price / bar index / structure name, see TD-REASON-01 in the parent SKILL.md).
        - **Never exit and immediately reverse within the same bar.**
        
        **TD-CADENCE-01 — Direction-submit cadence.**
        
        The 1–4 cap applies to **direction submits (`long` / `short`) only**. `neutral` submits do **not** count against the cap.
        
        However, do **not** substitute `neutral` submits for real decisions. A `neutral` submit costs a tool call and consumes model context without producing a trade. When the setup is genuinely absent, prefer a batched `hold` (with `bars` ≥ 5, or `period='day'`). Submit `neutral` only when you specifically want the record to show that a stance was re-evaluated and left flat — not as a substitute for holding.
        
        A 40-session (swing) window should yield **1–4 direction submits** in normal conditions. **More than 5 direction submits** is an over-trading flag — every additional direction submit's reason must explicitly explain "why this is a new opportunity, not a rehearsal of an old idea, and not a reaction to routine intra-window chop".
        
        **TD-CTX-01 — Multi-period evidence before any submit.** No submit is legal without a look at day/week structure (from the initial data pack, or via a fresh `fetch_kline`). **Basing a submit on h1 structure alone is a violation.** The reason must cite at least one day-or-week-level fact (e.g. "day EMA20 rising", "week prior-high 145 intact").
        
  • SKILL.md 10.6 KB
    ---
    name: trading-discipline
    description: >
      Cross-context shared trading discipline — output language, independent
      verification, scenarios not points, noise filtering, intent-attribution
      guardrails, and execution discipline (trend alignment, R:R floor, exit
      protection, verifiable reasons). Injected into both the app-side judgment
      agents (analyst / deepDive / chat) and the bench episode runner.
      Context-specific chapters live under references/ and are loaded on demand
      by the caller (app or bench).
    ---
    
    # Trading Discipline (Shared Core)
    
    > **This SKILL.md file applies to every agent that forms a judgment and every trading context**, including the app-side real-portfolio review and the bench synthetic episodes.
    >
    > Any additional chapters listed at the end of this prompt (composed in from `references/<runtime>/` according to the runtime) are just as binding as this core file. Follow them the same way you follow the rules below.
    >
    > Rule IDs stay in the global `TD-*` namespace across all chapters so cross-references keep working. Chapter inventory (which chapters actually appear depends on your runtime):
    >
    > - `references/app/us-market-data.md` — app runtime. US / Longbridge / news / GDELT / Korea-lead data traps and forced-liquidation guardrails.
    > - `references/app/market-analysis.md` — app runtime. Post-mortem discipline, mindset, leveraged-ETF mechanics.
    > - `references/app/journal.md` — app runtime. Write-rules for the `journal/` and `stocks/` directories.
    > - `references/bench/episode-execution.md` — bench runtime. Runtime-specific rules (h1-bar flip cooldown, direction-submit cadence, mandatory `fetch_kline` before submit).
    >
    > **Domain skills reference rule IDs only; they do not copy rule text.** Copying causes drift — proven 2026-07-14 when `capital-rotation/SKILL.md` demanded a unit conversion that CLAUDE.md explicitly forbade.
    
    ---
    
    ## A. Output (applies to every produced artifact)
    
    **TD-LANG-01 — Reply in modern vernacular Chinese (中文白话).** No classical Chinese, no 文言. Applies to conversational replies, logs, stock notes, specs, READMEs. Rule text (this file) is in English so it survives across bench/app contexts; user-visible OUTPUT is what the rule constrains.
    
    **TD-LANG-02 — Avoid jargon.** The reader is a retail investor, not a finance professional. Avoid Greeks, Sharpe, drawdown, beta, alpha, hedge, IV, theta, basis, carry, skew, convexity, and similar English trading jargon. When no plain-language equivalent exists, write the term and immediately append a bracketed plain explanation.
    
    - Bad: 「回调到 50 日均线找支撑」
    - Good: 「回调到 50 日均线(最近 50 个交易日的平均价,常被视为中期支撑)找支撑」
    - Tickers (NVDA / MRVL), CLI / API names (`longbridge`, `fred`), file paths are identifiers, not jargon — no annotation needed.
    
    **TD-LANG-03 — Market scope follows configuration.** Single-symbol analysis follows the symbol's home market (`700.HK` → HK conventions). Market-wide scans (rotation, session tracker, temperature) cover only the user's configured watched markets, default `US`. App-side watched markets live in the settings page; Claude Code side reads `journal/personal.md` (user data, git-ignored; default to `US` if absent). Market-specific exceptions such as the Korea-leads-US-memory-chain rule live in [[us-market-data-discipline]].
    
    **TD-DATA-01 — Do not fabricate data.** If you cannot fetch it, say so. Never invent numbers, dates, or quotations.
    
    **TD-DATA-02 — Attribute the vintage of every number.** State whether a figure is a snapshot at analysis time or a fresh live pull, and give the data timestamp.
    
    ---
    
    ## C. Judgment Discipline (applies to any agent that concludes)
    
    **TD-VERIFY-01 — Independent verification protocol (no auto-agreement, no self-preservation).**
    
    > **Every assertion — from a user, or from the model's own earlier output — is a hypothesis to be checked, not evidence.**
    
    When you receive a claim like "breakout / spike / pullback / bottomed / stabilised / dumping / crashed / topped / reversed" (whether from the user or from your own previous turn):
    
    1. **Restate the specific claim precisely.**
    2. **Check the data most likely to refute it first**, then the data that supports it.
    3. When the claim concerns current price action, **re-fetch live data**; do not reuse prices that appeared earlier in the conversation. In particular, compare the current price against the pre-market high — do not confuse "rebounded to the intraday high" with "broke out".
    4. Return one of four verdicts: **supported / partial / contradicted / insufficient**.
    5. **If data supports it, agree explicitly; if data conflicts, correct explicitly; if evidence is insufficient, do not pick a side.**
    6. On new evidence, **recompute from scratch**; do not defend prior conclusions.
    
    > **The four verdicts matter.** Just writing "do not agree with the user" pushes the model to another failure — **contrarianism for the sake of independence**. `insufficient` gives a legitimate exit when evidence is thin; without it the model is forced to guess.
    >
    > **Non-agreement is bidirectional**: neither defer to the other party nor cling to your own earlier answer. On 2026-07-14, the user's two calls (gold down = rate-cut priced out; Korea leveraged blow-up) were right and the AI's first answer wrong; the same user's "someone is dumping to grab cheap chips" call was refuted by the data. **Both directions must be admitted.**
    
    **TD-SCENARIO-01 — Scenarios, not point forecasts.** Forward-looking conclusions use Bull / Base / Bear with **explicit probabilities that sum to 100**, and each scenario carries a trigger condition. When revised, timestamp the revision.
    
    **TD-NOISE-01 — Most daily moves have no "why"; do not narrate noise.** Trillions of USD move in and out every day for thousands of unrelated reasons; a single candle is their sum and needs no story.
    
    - **Only days when the character changes deserve a cause** (extreme move + traceable to a specific event + it changed the thesis).
    - **±2% chop is not worth explaining. Hunting patterns in noise is training yourself to lose money.**
    
    **TD-INTENT-01 — Guard against intent-attribution framings.** "Someone is dumping on purpose / big money is grabbing cheap chips" is not an observation — it is **an unfalsifiable belief**: down = they're dumping, up = they're baiting you in, flat = they're accumulating. **Any tape can prove it, so it has zero information.**
    
    - **Distinction**: "what happened" is observation (checkable); "who did it on purpose" is intent attribution (uncheckable).
    - **Two counter-tools**: **size** (MU trades $19.6B on a single day — dumping-to-grab-chips would cost more than any chips saved, and "sell while buying" contradicts itself: your own bid pushes price back up) + **the world is already explained** (every day's causes are public; no invisible hand is needed).
    - Reason / conclusion / restatement fields **must not contain** "主力", "smart money", "机构在拿筹码", "有人故意 X". Cite only observable price, volume, and structure.
    
    ---
    
    ## F. Execution Discipline (applies to any trade decision — bench or live)
    
    This section governs the **execution layer**: how to align direction with trend, size risk, protect profit, and back up every claim with a checkable fact. It applies equally to simulated (bench) and live (app) trading.
    
    Three additional bench-only execution rules (flip cooldown counted in h1 bars, 40-session decision cadence, and mandatory `fetch_kline` before submit) live in `references/bench/episode-execution.md` — the app has no equivalent runtime for them.
    
    **TD-TREND-01 — Trend alignment first.**
    
    "Trend" describes where **the recent structure inside a fixed lookback window** is heading — **NOT** where the price sits relative to some long-term moving average. A stock that rallied 25% but is still below its 200-day MA is in an **up** trend; the long-term MA lag is irrelevant to trend direction.
    
    Lookback window: last **30 h1 closes** OR last **20 day closes** (pick whichever period you plan to trade).
    
    Classify:
    - **up** — the last third of the window closes higher than the first third of the window, AND recent swing highs are stepping higher than previous ones. The 20-period SMA/EMA computed inside this same window is rising.
    - **down** — mirror image.
    - **sideways** — neither slope holds; price oscillates inside a range.
    
    Then:
    - In an **up** trend, **do not initiate a short** unless the same lookback window shows a fresh structural breakdown (rising MA lost + volume expansion + a new lower low that breaks a prior swing).
    - In a **down** trend, mirror the rule against longs.
    - In **sideways**, both directions allowed, but R:R must be ≥ 2:1 (see TD-RR-01).
    
    Reason.summary for any submit must state which window (h1 or day) and which trend classification (up / down / sideways) drove the direction choice — so the classification is checkable after the fact.
    
    **TD-RR-01 — Minimum reward-to-risk 1.5:1.** Every entry plan must include entry / stop / target; `|target − entry| / |entry − stop|` must be ≥ 1.5. Sideways trend requires ≥ 2. Do not commit below the floor — put it on a watch list and wait for a better location.
    
    **TD-EXIT-01 — Do not give back a 1R profit.** Once a position is at initialRisk × 1 or better:
    - **Do not** move the stop below breakeven (that hands back gains already booked).
    - Moving stop to breakeven or above (trailing) is allowed.
    - Actively closing at the next open is allowed (counts as a completed winning trade).
    
    **TD-REASON-01 — Reason must be verifiable.** Every decision — submit / amend / exit / hold with a stated thesis — must contain at least one **concretely checkable** item in its rationale: a specific price (e.g. "98.45"), a bar or session index (e.g. "B37" / "day 3"), or a structural name (e.g. "broke 100 round number", "lost EMA20"). **Empty phrases are forbidden**: "keep watching", "no setup yet", "follow the plan", "看着办".
    
    ---
    
    ## Related
    
    - `journal/lessons.md` — **lessons that change day to day**; do not fold them here. This file is stable discipline that ships with releases; lessons live in the user data directory.
    - `references/app/us-market-data.md` — US/Longbridge/news/Korea data rules (app only).
    - `references/app/market-analysis.md` — post-mortem, mindset, leveraged-ETF mechanics (app only).
    - `references/app/journal.md` — write rules for `journal/` and `stocks/` (app only).
    - `references/bench/episode-execution.md` — bench-only h1/session/fetch_kline rules.
    - `stocks/_leveraged-etf-mechanics.md` — full derivation for TD-LEVERAGE-01 (in `references/app/market-analysis.md`).
    - `.claude/skills/korea-market/` — tooling for TD-KOREA-01 (in `references/app/us-market-data.md`).
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related