Trade Review logo

Trade Review

Community
PatrickSUDO
trade-review

每兩週交易檢討:歸因每筆成交是「系統決策」還是「你自己決策」、算基準校正 α、驗影子訊號、更新規則命中率帳本,輸出「本期該改哪一條規則」。Usage - /trade-review [2w|4w|since YYYY-MM-DD]

Overview

PublisherPatrickSUDO
Repositoryfadacai-portfolio
Skill nametrade-review
Stars
144
Forks
12
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by PatrickSUDO on GitHub. Read the source before you install it.

Installation

Install the Trade Review AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/PatrickSUDO/fadacai-portfolio/tree/main/.agents/skills/trade-review
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/PatrickSUDO/fadacai-portfolio.git /tmp/fadacai-portfolio
mkdir -p .claude/skills
cp -r /tmp/fadacai-portfolio/.agents/skills/trade-review .claude/skills/trade-review
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Trade Review in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Trade Review on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Trade Review is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Trade Review — 兩週交易檢討

這是系統自我進化的引擎。 其他 skill 產生決策,這個 skill 檢查決策對不對,並把結果回饋到規則層。

Why: 2026-07-25 首次歸因調查發現,系統決策的 α 是 +6.1%(賣方 +13.0% / 71% 勝率),脫離 plan 的用戶決策是 −14.0%(12 次對 2 次)。但當時可歸因覆蓋率只有 49%,且沒有任何機制持續計分——規則寫死後永不重測。這個 skill 補上那個迴路。

Arguments

  • /trade-review → 上次檢討至今(若無紀錄則近 14 天)
  • /trade-review 4w → 近 28 天
  • /trade-review since 2026-06-04 → 指定起日

Step 0(沿用 AGENTS.md 統一規範)

  • 0a 讀 plan.md + feedback/*.md(含 feedback/RULES-LEDGER.md)
  • 0b mcp__firstrade-server__get_account_position
  • 0c/0d journal 確認與 gap-fill
  • 不需要 0e 第一性檢查——本 skill 不輸出 Verdict / 投資建議,只做事後歸因與規則計分

Step 1 — 交易帳 ingest 與歸因

bash
python3 tools/trade_ledger.py snapshot-orders
python3 tools/trade_ledger.py ingest --range 2m
python3 tools/trade_ledger.py backfill-origin --since <期初>
python3 tools/trade_ledger.py stats

歸因鏈第 1 步除了 plan.md/journal 的單號,也讀 order-registry.json 的 rule_ref(register-order 登記的規則單,2026-09-14);本期若仍有規則單被判 user,代表掛單時漏了 register-order,列為執行力缺口。

必報三個數字(覆蓋率是本迴路的健康指標,要逐期往上走):

  • 本期新增成交筆數
  • attribution_coverage_journaled_pct(有 journal 期間的 origin 覆蓋率)
  • order_registry.snapshot_days(快照天數;越多,往後歸因越接近 100%)

⚠️ 覆蓋率不會靠自己變好。 對 unknown_sample 列出的每一筆,翻當日 journal / plan.md 判斷來源,然後:

bash
python3 tools/trade_ledger.py annotate --id <fill_id> \
  --origin system|user --evidence "<判定依據原文>" [--bucket 信念|認列|hedge|樂透]

補正時一併記模型(--model claude-fable-5-1 --effort high),這樣 score --by model 之後能用數據回答兩件事:貴的模型層級值不值那個成本,以及更新的模型不同意舊決策時,該不該相信它。模型版本是排覆審順序的依據,不是推翻已驗證結論的依據(同 RULES-LEDGER 的鐵則)。

判定準則(origin = 誰決定,與 exec_via 誰按按鈕 無關):

  • system — plan.md 有 ref/plan #N/規則執行(梯級停利、停損鐵律、harvest 訊號)/plan v2 砍單
  • user — 未列於 plan/偏離 plan 階梯/違反既有指令/無 plan 依據的自主判斷
  • 判不出來就留 unknown,不要猜

2026-06-18 是必記的反例:九檔在 App 手動出清,但砍因來自 plan v2 → 系統決策、手動執行。若用執行方式推論決策來源,會把全帳最大 alpha 事件(+$8,997)誤記成用戶自主交易。

Step 2 — 三個指標,缺一不可

三者答不同問題,只看任一個都會誤導:交易 α(進出對不對)、持有 α(該不該繼續抱)、beta capture(行情好的時候吃到沒有)。

bash
python3 tools/trade_ledger.py score --by origin-side --since <期初>
python3 tools/trade_ledger.py score --by bucket --since <期初>
python3 tools/trade_ledger.py holding-alpha --window 90
python3 tools/trade_ledger.py beta-capture --window 180 --bench SMH

2d. 帳戶級四指標(每期必跑,2026-07-29 起)

實作成本(2026-10-20 用戶「組合跟操作感覺比 SMH/QQQ 還糟」):每期加算「當期持倉名單等權買抱同期報酬 − 帳戶同期報酬」,並列 SMH/QQQ/SPY 同期。名單取 --since 當日收盤實際持有的現股(含期內清倉者,無倖存者偏差;2026-10-30 修,舊版取期末仍持有名字 → +62% 是倖存者偏差)。 工具印兩個數:實際權重買抱 − 帳戶 = 操作成本(只拿掉期內操作);實際權重 − 等權 = 權重判斷價值。選股好不好看等權、壓重對不對看兩者差、操作好不好看前者。工具 python3 tools/impl_cost.py --since <期初> --acct-start <期初淨值> --acct-now <期末淨值>(同時印期內賣出 vs 抱到今天、依標的/依月)。第 0 節必列一行。長窗(≥3 個月)另跑 tools/core_satellite_backtest.py(月度再平衡版)。

bash
python3 tools/account_metrics.py scan && python3 tools/account_metrics.py report --live <Step 0b 即時帳戶總值>

輸出期間報酬 / CAGR / MDD / Sharpe(淨值標記曲線)+ profit factor(FIFO 已實現、含選擇權與費用)。與上期 archive/*/account-metrics.json 對照列 Δ。誠實標示照工具輸出:MDD 基於離散標記屬低估、短窗年化僅供方向;淨值紀錄自 2026-06-01 起,用戶提供券商對帳單更早淨值時用 add 補錨。

2a. 交易 α(誰決定的比較好)

決策來源nβ調整 α勝率β調整 $β=1 的 $beta 汙染均β
系統決定 — 賣/買
你自己決定 — 賣/買
無記載

alpha_beta 才是結論依據,naive_alpha_dollars 只用來看 beta 汙染有多大。β 是對實際使用的基準回歸算的(半導體對 SMH、其餘對 SPY)。

為什麼這件事關鍵:2026-07-25 首測時,賣方 β=1 算出 +$8,997,看似巨大選股技術;改用券商 β(對大盤測)套 SMH 又算出「全滅」。兩者都錯。 同基準回歸給出 +$6,846(76% 存活)—— 選股技術是真的,但有 24% 是 beta。用錯 β 會讓「該不該繼續這樣做」得到相反答案。

2b. 持有 α(交易 α 之外的另一半)

holding-alpha 給每檔的滾動 90 天(決策相關:現在還該不該抱)與建倉至今(歷史:進場對不對)。

必列:正 α 與負 α 各自的檔數與金額。 首測基準:滾動 90 天 +$8,219 但勝率僅 25%——集中在 MU/DDOG/CRWD/AMD 四檔(+$33,833),被其餘 15 檔(≈−$26,000)抵銷。

⚠️ 建倉至今不可加總(僅 13/20 可測,且可測者偏向近期建倉、長抱贏家因 lots 早於帳戶歷史落選 = 選擇偏差)。只讀個股。

⚠️ 持有 α 存在的理由:純交易指標會系統性獎勵頻繁進出、把「抱對一年」記為零貢獻。首測顯示持有 α 量級大於交易 α。

2c. beta capture(行情好的時候吃到沒有)

beta-capture 拆基準上漲日/下跌日各自回歸 β:

β日 α (bps)累積 α天數
全期 / 上漲日 / 下跌日

判讀:up-β > down-β = 想要的曝險輪廓;up-β < down-β = 漲不上跌得凶。

首測基準(180 天 vs SMH):up-β 0.79 < down-β 0.90,capture 比 0.88。成因結構性——梯級停利在強勢中賣、買梯在弱勢中買,兩者機械性壓低 up-capture。這是純 α 指標看不見的成本(見 RULES-LEDGER R8)。

解讀紀律

  • 買方 α 全負不代表買錯 —— 先確認基準也在跌;alpha_beta 已扣 beta,負才是真的差
  • n < 10 的分組必須標註樣本不足,不得單獨下結論
  • 與上期比較趨勢,而非只看本期絕對值
  • 三個指標若互相矛盾,那本身就是本期最重要的發現(例:交易 α 正但 up-capture < 1 = 進出做得好但曝險輪廓錯)

Step 3 — 最佳/最差各 5 筆,逐筆追問

score 已回傳 best / worst。對每一筆翻出當日 journal 的決策理由,回答:

  1. 當下有沒有訊號被忽略?(revision、情緒、A4 旗標、集中度、Codex 反對意見)
  2. 這筆的 origin 判定可靠嗎?(evidence 是不是真的指向這筆交易)
  3. 是規則問題還是執行問題? 規則對但沒執行 → 執行力缺口;規則本身導致 → 進 Step 5 計分

歷史對照(首次調查已確立的模式,用來檢查本期是否重演):

  • MRVL 型:不在 plan 的名字連續加碼,每次都被 journal 標記卻沒被阻止(3 次共 −$1,884 α)
  • NVDA $205 型:plan 內領導者、價格高於買梯,偏離是對的(+7.9%;MU $844.81 +3.6%)
  • ICHR 型:小倉「汰弱」賣出,事後標的大漲(−32.3%)
  • hygiene 型:為湊支數/清尾倉砍小倉(LITE −11.2%、CEG −14.3%、SNOW −21.8%)

Step 3.5 — 旗標稽核(本書最貴的漏口)

bash
python3 tools/trade_ledger.py flags

2026-07-25 量測:「已標記惡化但沒有強制出場」是吃掉最多回撤的單一機制,自警示以來 −$6,333。 排第二的是「下跌中深檔買梯建新倉」(−$5,700)。

本期必答:

  1. forced 清單處理了嗎? 每筆 forced 必須有 resolve-flag(減碼/出場/撤旗),不得再 defer
  2. 本期新開的旗標,有沒有該開卻沒開的? 掃本期 briefing/journal 的 ⚠️ / 降桶候選 / 勿加碼 / thesis 蒙塵 字樣,比對 flags 清單。漏開就是漏口重現
  3. post_flag_fills 有值的 → 警示後仍加碼,逐筆檢討為什麼禁令沒有阻力(ON 6/26 下禁令、7/06 加碼 32 股,−$206)
  4. total_cost_since_flag 與上期比較 —— 這個數字往下走才算修好

同時查 thesis 增生(合理化的指紋):同一標的累積 ≥2 筆 pending thesis 而部位在虧 → 逐筆問是不是為了繞過既有警示而新登錄。

ON 在 4 週內累積 3 筆 pending thesis(6/26 cyclical-recovery-q2、7/04 power-shortage-early-position、7/23 800vdc-power-tree-validation),全部觸發 8/03;而 7/06 的加碼引用的正是 7/04 那筆新 thesis。

Step 4 — 影子訊號驗收

bash
python3 tools/thesis_ledger.py orphans
python3 tools/thesis_ledger.py stats
python3 tools/ev_ledger.py resolve-due && python3 tools/ev_ledger.py stats

4-0. EV 分布校準(機率誠實的結果端驗證)

ev_ledger.py stats 輸出 EV 誤差(by horizon/model)+ Brier + 校準表(給的機率 vs 實際落桶頻率)。判讀紀律:

  • n<30 的分組只記錄方向,不改規則;相關樣本(同跨一段行情的多筆)算一筆證據,不按筆數計
  • 系統性偏差確立(如「30-60d 一致過度樂觀」連兩期同向)→ 修正對象是 probability-honesty-checker 的形狀規則表 / 各 skill prompt,寫入 RULES-LEDGER 帶命中率追蹤 — 不建 ML 模型(n>150 獨立已解決樣本前不重評,見 AGENTS.md)
  • Goodhart 警戒:校準變好但分布變窄(永遠給 hedged 分布)= 假改善,對照分布寬度一起看
  • stats 的四項——獨立 n、Brier skill score(>0 才是技能)、in_range(分布外 = 漏分支非運氣)、thesis × 定價 2×2(「對但沒用」= priced-in 候選)——原樣抄進報告 第 4 節,review_lint.py 會查
  • priced_in_pct 三分位(2026-09-14 起 stats 自帶):高三分位 realized<EV 比例是否顯著高於低三分位;n<30 只記方向。連兩期同向且差距 ≥20pp → 才討論把 priced_in 納入 probability-honesty-checker 的形狀規則表(display-only 直到那時)

4a. A4 高估旗標(影子模式,Phase 1 只記錄不阻擋)

讀 research/shadow-signals.jsonl,對已滿 30 天的旗標算實際超額 α,累計命中率:

旗標日標的A4vsA330d 後超額 α命中

判定條件(briefing / portfolio-review 產生旗標時已套用):A4vsA3 ≤ −35% 且 confidence == "ok"。PE 不再作排除條件(2026-09-14 裁決)——pe_ratio 只記錄為屬性供分組。

舊 pe_ratio < 200 排除條款來自 DDOG 單一反例(A4 −71%、PE 553、事後 +19% α)。兩期影子計分(8/29、9/14)DDOG 連兩期命中(−12.7%、−3~−7%),PE>200 子集 15 筆 100% 命中/α −14.4%,PE<200 63.9%/−1.4%——唯一有訊號的正是被排除的那一段。獨立標的兩期累計 4/8,不升閘門、維持 display-only。

計分紀律: 按獨立標的、以首次旗標日的 30d α 計,逐日重複登錄不得當多筆(score 的 n=51 是灌水值)。

跑滿 2 期後才決定是否升硬閘門(Phase 2)。基準線:首次前瞻檢驗 n=12、Spearman +0.45、高估組 4/4 落後平均 −15.9% α。

4a-2. 影子帳 cf-*(2026-09-14 通用化)

shadow_signals.py score 的 by_signal 會列 cf-bench-loser / cf-r1-hold / cf-r17-blocked / cf-t65-capped / cf-r23-skip。每類按獨立標的報 n / hit_rate / mean α;這些是規則的免費驗證樣本:cf-r1-hold 命中率直接餵 R1、cf-r23-skip 餵 R23、cf-bench-loser 餵 L1 比選(落選者若跑贏入選者 → 比選邏輯覆審)、cf-t65-capped 餵 T6.5 上限是否該再放。n<5 只記方向。本期若 cf-* 為 0 筆 → 寫「影子帳未使用」並列為執行力缺口(該登錄沒登錄)。

4b. thesis 中途證偽(不是等觸發日才看)

bash
python3 tools/thesis_ledger.py recheck --long-drift-only

證偽條件已經寫好且具體,缺的是只在觸發日被讀。首測時 23/23 pending thesis 的建立→觸發相隔 ≥45 天,MRVL:fy28-ai-bookings-visibility 172 天——半年前提可以壞掉而沒人看。

對清單上每一筆問一句:這些條件裡,有沒有現在就看得到的已經成立了?

  • 成立 → 立刻 resolve --verdict failed,不等觸發日
  • 前提完好 → 說一句「完好」帶過
  • 判不出來(需要下次財報)→ 明確說「須待 <事件>」

有些條件本來就不必等財報,例如「Google 公開宣佈減少 AVGO 採購份額」「主要 hyperscaler 公開削減 XPU capex >10%」「毛利率跌破 38%」。

4c. thesis 帳本兩個比率

stats 現在同時回 hit_rate(thesis 對不對)與 pnl_hit_rate(有沒有賺錢)。兩者的差距就是「在虧損部位上驗證 thesis」的程度。

orphans 列出「曾持有→已出場但 thesis 仍 pending」者(reentry-* 與從未持有的候補已排除)。每一筆必須處理:

bash
python3 tools/thesis_ledger.py resolve --id <id> --verdict passed|failed|partial \
  --actual "..." --note "..." --next-action "..." \
  --position-status exited --realized-pnl <±金額> [--price-verdict met|missed]

partial 強制 --price-verdict:營運達標但市場不認 → missed。

4c-2. 輪動相關旗標(H8,2026-09-14 起)

讀 research/rotation-corr-log.jsonl:本期每個 regime_shift == true 的 (date, pair) → 取旗標日後 10 個交易日兩籃相對報酬(工具已算 rel_ret_10d_pct,或用 archive 價格重算)。命中 = |相對報酬| ≥ 5pp 且方向與 Δρ 一致;記 H8 n / 命中。連兩期 n≥5 且命中率 <50% → 儀表降為只存 log 不上 Telegram;沒有 regime_shift 的期就寫「H8 本期無旗標」,不得用 20d ρ 的漲跌硬湊敘事。

4d. 來源信用帳(來源信用 tier 閘,R21 影子計分中)

bash
python3 tools/source_credit.py resolve-due
python3 tools/source_credit.py stats
python3 tools/source_credit.py tiers --dry-run

輸出每來源一行:

來源tiern_scoredhit_ratemean_lead_time_daysvague_ratiobacktest_shareproposed_tier

判讀紀律:

  • n_scored < 3 → 只記錄不下結論(樣本太小)
  • backtest_share > 0.8 → 標「僅回測」,實盤期樣本不足前不當已驗證命中率
  • noise(vague_ratio > 0.7 且 n_total ≥ 5)→ 建議該來源 disable(連續講不可驗證的模糊主張)
  • tier 只抄 tiers --dry-run 輸出,不手改 research/source-config.json;抽查認可後才拿掉 --dry-run 套用
  • R21 升級條件(display-only → 可作硬閘門輸入):連續 2 期 /trade-review 內,Trusted+ 來源 hit_rate ≥ 0.65 且 mean_lead_time_days > 0(真的有領先,不是巧合追認)才討論升級;未達標維持 第 9.6 節 display-only

Step 5 — 更新規則命中率帳本

編輯 feedback/RULES-LEDGER.md(判準 feedback/skill-vs-luck.md):

  1. 更新命中/失效:只算建立日後的獨立事件(原始案例不計、同批算 1);每筆附證據 + [up]/[down](python3 tools/rule_stats.py regime --date <日> --bench SMH|SPY)
  2. python3 tools/rule_stats.py ledger-audit --write → 狀態欄照輸出改;再跑 --check 必須 exit 0
  3. 結案分類:分布外 = 模型錯;證偽條件觸發未動 = 決策錯;thesis 沒兌現但賺 = 運氣(不計命中)
  4. 新規則 → 登錄一列;新假設 → 對照追蹤表
  5. R26:報 Brier skill score(獨立 n)與 holding-alpha 對 SMH 走向,不裁決

Step 5.5 — 注意力預算稽核(每期必跑,2026-07-30 起)

登記機制只進不出會稀釋注意力。每期掃四類,列清理清單並執行:

  1. Thesis 殭屍:thesis_ledger.py stats + pending 全列 →
    • 已清倉標的的殘留 thesis(re-entry 條目已另存者)→ close-untested --exit-date <清倉日>
    • pending 齡 >60 天且 due 還在 30 天外、期間無任何 signpost 移動 → 覆審:還值得等嗎?不值得 → close
  2. L1/L2 板凳除名(plan.md):L2 名字 90 天無 gate 觸發且 revision 靜止/轉負 → 除名(一句理由);L1 觸發價失效 >60 天 → 降 L2 或除名;已進場者移出板凳。除名 ≠ 永久淘汰(質地理由才可判永久淘汰,per exit-reentry-discipline.md 分層鐵則)
  3. 價格警報覆核:price_alerts.py list → 觸發多次無人行動 / 條件已過時(財報已過、thesis 已結案)→ remove
  4. 一次性清單:research/ 下的行動清單(抄底清單類)過期 → 移 research/archive/,並拔掉 skill 引用
  5. 守門工具 + roster 一致性(2026-09-02 起):跑 python3 tools/position_guard.py --sync-alerts --render-plan,缺口全數處理(桶別缺口 → 更新 research/roster.json;已出場標的自 roster 移除;R8 GTC 缺口 → 掛單;R23 旗標 → 執行/resolve)。同時掃 R23 計分:本期每筆 resolve-flag --action trimmed 的 R23 旗標,+30 天價 vs 減碼價 → 命中/失效寫入 RULES-LEDGER R23。
  6. 規則本身(用戶 2026-08-29 提議,首次大裁決後生效):連兩期零觸發零資訊量的規則 → 標「歸檔候選」;建立滿 60 天仍 — 的規則 → 轉「未驗證假設」

輸出:🧹 本期清理:thesis −N / 板凳 −N / 警報 −N(零清理也要列,證明有跑)。

Step 6 — 輸出

寫 briefing-out/trade-review-YYYY-MM-DD.md,然後:

bash
python3 tools/generate_html.py trade-review briefing-out/trade-review-YYYY-MM-DD.md

報告結構:

markdown
# 交易檢討 YYYY-MM-DD(期間 YYYY-MM-DD ~ YYYY-MM-DD)

## 0. 本期結論(先讀這段)
[白話、直接切入重點,≤6 行,每行一個意思、最多兩個數字(2026-10-19 用戶:「語法更直白切入重點,計算過程放附錄」):
 ① 這兩週帳戶賺賠多少、對 SPY/QQQ/SMH 如何 ② 誰的決定對(系統 vs 用戶,一句) ③ 最貴的一個錯 ④ 該改哪一條規則(一條)
 ⑤ 下期要做的一件事。不放推導、不放 α/β 公式、不放 agent 計算日誌——那些全放「附錄」]

## 1. 帳本健康
新增成交 N 筆|歸因覆蓋率 X%(上期 Y%)|快照天數 D|本期人工補正 M 筆

## 2. 誰決定的比較好(基準校正 α)
[核心表,全部 + 僅高信心兩組]
[與上期趨勢比較]

## 3. 最佳/最差各 5 筆
[逐筆附當時 journal 理由 + 「當下有沒有訊號」的答案]

## 4. 影子訊號
[2026-10-29 用戶「影子訊號很難讀」→ 表格優先,不寫長段落。固定結構:]
[開頭一句白話:影子訊號是「只記錄、不下單」的測試,命中率夠高、樣本夠大才升級]
[4.1 總覽表(必有):| 項目 | 它在問什麼 | 本期結果 | 命中 | 結論 |,每個子項一列]
[4.2 起每個子項一個小節:一句白話說它在測什麼 → 一張小表 → 最多 3 個短 bullet]
[  EV 校準:指標表(獨立 n / EV 誤差 / Brier / Brier skill score / in_range,含上期欄)+ 情境校準表 + 2×2 表 + 期間表;R26 走向一句]
[  A4 旗標:本期熟成表(首旗日 / 標的 / 30 天超額 / 命中)+ 獨立標的累計 k/n]
[  影子帳 cf-*:| 類別 | 它在驗什麼 | 本期結果 | 命中 | 對規則的意義 |]
[  thesis 中途證偽:| thesis | 到期 | 現況 | 判定 |;thesis 兩比率表;orphan 處理 bullet]
[  來源信用:摘要表(≤4 列)+ 是否達 R21 門檻;逐來源全表放附錄]
[  其他(H7 / H8 / SA / 發現層 / 事件帳 / H4):各一張小表]
[「命中」欄只放 k/n 或無正負號的 NN%——generate_html 會自動畫命中率條(綠 ≥60%、紅 <40%);同一格多組用頓號分隔]
[逐筆明細、登錄筆數分類、逐來源表一律進附錄]

## 5. 規則計分變動
[本期哪幾條 +命中 / +失效,附證據與 [up]/[down];無計分寫「本期無計分」]
[ledger-audit 結果 + 🔴 強制覆審清單]

## 6. 本期結論:該改哪一條規則
**規則:** [具體到檔名與條號]
**為什麼:** [一句話 + 數字]
**改法:** [具體修改,或「證據不足,繼續觀察 N 期」]

## 附錄:計算過程
[第 2 節 的 β 回歸、持有 α、beta capture 的逐筆/逐檔數字;第 4 節 影子計分明細;account_metrics / rule_stats / ev_ledger 原始輸出;agent 計算日誌。正文只引結論與一兩個關鍵數字,細節全部在這裡]

語句紀律(2026-10-19 用戶;10-29 補第 4 節表格化):第 0 節 與 第 6 節 用白話、一句一意、先講結論再講數字;代號(R23/H10/α)首次出現附一句中文;統計量先講「它代表什麼」再給數字。計算過程一律進附錄,正文不放公式與逐筆表。Telegram 推的是 第 0 節。

最後一節只准寫一條(最多兩條)。列十條等於沒有結論。

收尾

  1. 更新 research/last-trade-review.txt 為今日日期(briefing 讀它算到期提醒)
  2. python3 tools/review_lint.py briefing-out/trade-review-YYYY-MM-DD.md 必 exit 0(缺段 / 結論 >2 條 / 收尾沒做都會擋;擋了就補,不改 lint。寫入報告時 PostToolUse hook 會自動先跑一次,這裡再跑是確認 last-trade-review 已更新)
  3. 若改動了任何 .claude/skills/ 或 AGENTS.md → python3 tools/sync_agents_skills.py
  4. commit + push(用戶 2026-09-14 自主範圍:不問)。無人值守時 tools/trade_review_runner.sh 會接手做 HTML + Telegram(第 0 節 白話結論 + 連結;無 第 0 節 才退回 第 6 節);互動 session 跑完也可 bash tools/trade_review_runner.sh --notify-only briefing-out/trade-review-YYYY-MM-DD.md 推一則

無人值守(2026-09-29)

launchd com.fadacai.trade-review 每 15 分鐘叫 tools/trade_review_runner.sh,腳本以美東時間自判 平日 16:45–17:45 ET 起跑、當日 marker 一天一次(2026-10-29 修:原 09:30 本地在 Mac 換時區後落在睡眠時段,launchd 不跑):review_due.py 說到期才跑 claude -p "/trade-review" --model fable(3600s 上限),之後 review_lint → generate_html trade-review(推報告站)→ Telegram。登入失效 / 逾時 / 無報告檔 → Telegram 警告並退出。報告檔名以美東日期為準(briefing-out/trade-review-YYYY-MM-DD.md);找不到當日檔會退回最新一份(2 小時內)。

已知限制(每期都要讀,避免過度推論)

  • 首次歸因的「你自己決定」樣本 n=12、兩個月、單一 regime(半導體殺盤)。 效果量大且買賣方向一致,但不足以當定論。把樣本推大並回頭驗證,是這個 skill 存在的主要目的。
  • 與 plan 一致的用戶判斷在紀錄上無法與系統區分,會被計入 system。所以「你自己決定」實際是「你脫離 plan 的決策」,不是你全部的判斷。
  • get_orders 只回在掛單,已成交/已取消會從券商端消失 → order_id 歸因只能前瞻。快照斷天會產生無法歸因的缺口。
  • 2026-06 之前的成交沒有 journal 理由欄,origin 永久 unknown,不必嘗試補。
  • 選擇權已可經 MCP(2026-09-07):單腿 order_type 用 buy_to_open / sell_to_close 等四碼(平倉必用 *_to_close);兩腿 spread 用 preview_option_spread / place_option_spread(day only、ET 7AM–4PM)。三腿以上或 GTC 複式單仍 App 手掛(tg_send.py)。

Frequently asked questions

What does the Trade Review AI skill do?

每兩週交易檢討:歸因每筆成交是「系統決策」還是「你自己決策」、算基準校正 α、驗影子訊號、更新規則命中率帳本,輸出「本期該改哪一條規則」。Usage - /trade-review [2w|4w|since YYYY-MM-DD]

Why use Trade Review on TypingMind?

Because you install it once and use it with any model. Trade Review is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Trade Review in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/PatrickSUDO/fadacai-portfolio/tree/main/.agents/skills/trade-review. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Trade Review?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Trade Review?

As many as you like. As long as a model supports skills, you can use Trade Review with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Trade Review AI skill free?

Yes. It is published on GitHub by PatrickSUDO under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇