---
name: kansoku-trade/trading-discipline
source: https://app.decimal.ai/s/kansoku-trade-trading-discipline@1/SKILL.md
source_sha256: a5e9e5f69e4a
---

# 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 the `references/` directory 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/us-market-data.md` — app runtime. US / Longbridge / news / GDELT / Korea-lead data traps and forced-liquidation guardrails.
> - `references/market-analysis.md` — app runtime. Post-mortem discipline, mindset, leveraged-ETF mechanics.
> - `references/journal.md` — app runtime. Write-rules for the `journal/` and `stocks/` directories.
> - `references/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/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/us-market-data.md` — US/Longbridge/news/Korea data rules (app only).
- `references/market-analysis.md` — post-mortem, mindset, leveraged-ETF mechanics (app only).
- `references/journal.md` — write rules for `journal/` and `stocks/` (app only).
- `references/episode-execution.md` — bench-only h1/session/fetch_kline rules.
- `stocks/_leveraged-etf-mechanics.md` — full derivation for TD-LEVERAGE-01 (in `references/market-analysis.md`).
- `.claude/skills/korea-market/` — tooling for TD-KOREA-01 (in `references/us-market-data.md`).