ict-trading-model README

The project's README from github.com/carreypro/ict-trading-model. As one markdown file: README.md.

ICT Trading Model

Tests License: MIT

A Codex skill that combines multi-timeframe bias, liquidity mapping, premium/discount location, session context, displacement, market structure, and PD arrays into a strict ICT/SMC setup-validation framework. It supports chart screenshots, live candles, and OHLCV JSON across bullish, bearish, and no-trade scenarios. Every analysis returns one auditable status—confirmed, developing, invalidated, or no-trade—with the supporting evidence, exact trigger, structural invalidation, liquidity target, and estimated reward to risk.

Its core advantage is evidence-gated planning: an FVG, order block, or opposing candle cannot create a trade signal by itself. The complete sequence must be evaluated:

Higher-timeframe bias
→ Liquidity objective
→ Premium / discount location
→ Liquidity sweep
→ Displacement and strict FVG
→ Close-confirmed MSS or BOS
→ Retracement into OB / FVG / Breaker / OTE
→ Invalidation and target
→ Risk-to-reward validation

The skill produces analysis and conditional trade plans only. It never executes orders.

What It Delivers

Capability Output
Multi-timeframe context Bias, dealing range, liquidity objective, and premium/discount location
Setup validation Sweep, displacement, strict FVG, close-confirmed MSS/BOS, and retracement evidence
Execution planning Exact trigger, structural invalidation, target liquidity, and reward to risk
Decision control One status: confirmed, developing, invalidated, or no-trade
Auditability Observed, derived, interpretive, and missing evidence kept separate

Installation

Install the skill directly from GitHub:

npx skills add https://github.com/carreypro/ict-trading-model --skill ict-trading-model

Invoke it explicitly in Codex:

Use $ict-trading-model to analyze this chart.

It may also activate automatically when a request refers to ICT, SMC, liquidity sweeps, FVGs, order blocks, breakers, OTE, MSS, or BOS.

Quick Start

Review a chart screenshot

Use $ict-trading-model to review this chart.

Reconstruct the setup in chronological order and identify:
- higher-timeframe bias;
- BSL and SSL;
- liquidity sweeps;
- displacement and strict FVGs;
- MSS or BOS;
- valid order blocks or breakers;
- entry conditions, invalidation, and targets;
- valid opportunities and false signals.

A screenshot supports visual analysis only. Any price level, candle boundary, or timestamp that cannot be read reliably must be marked unverified.

Analyze a live market

Use $ict-trading-model to analyze BTC-USDT-SWAP.

Bias timeframe: 4H
Structure timeframe: 15m
Execution timeframe: 5m

Return one status: confirmed, developing, invalidated, or no-trade.
List the evidence for every required condition. Do not execute a trade.

For live analysis, the agent should fetch current market data first and disclose the venue, data timestamp, and latest closed candle.

Validate your own trade thesis

I think price swept the previous high, formed a bearish MSS, and left a bearish FVG.

Use $ict-trading-model to verify the thesis strictly:
- Is the previous high valid liquidity?
- Was the move a sweep or an accepted breakout?
- Was there genuine bearish displacement?
- Was the MSS confirmed by a candle close?
- Does the FVG satisfy the three-candle definition?
- Did the proposed order block cause displacement and the structure break?
- Is the entry still available, or has price already moved too far?

The skill challenges the thesis against the evidence instead of forcing the chart to match it.

Analyze an OHLCV file

Use $ict-trading-model to analyze:
/absolute/path/to/candles.json

Scan both bullish and bearish structures and report the most recent candidates.

Analysis Workflow

The skill follows the same nine-stage process for chart reviews, live markets, and historical OHLCV data.

1. Confirm the data context

Identify the instrument, venue, candle timeframe, intended holding period, data timestamp, and whether the active candle has closed. Example data and stale screenshots must never be presented as live market data.

2. Establish higher-timeframe bias

Determine higher-timeframe order flow, the active dealing range, and the primary external liquidity objective. The higher timeframe provides direction; it does not provide a precise entry by itself.

3. Build the liquidity map

Mark relevant liquidity and reference points:

4. Evaluate price location

Within a clearly defined dealing range, classify price as premium, equilibrium, or discount. Identify the next liquidity objective and any obstacle between current price and that objective.

Bearish setups are preferred in premium; bullish setups are preferred in discount.

5. Wait for a liquidity event

A bullish reversal model requires a valid sell-side liquidity sweep. A bearish reversal model requires a valid buy-side liquidity sweep. A break without rejection or displacement is not automatically a sweep.

6. Confirm displacement and structure

Valid displacement should show decisive expansion, meaningful candle bodies, a strong close, and a strict FVG.

7. Define the execution zone

Identify the order block that actually caused displacement and the structure break. Give the zone more weight when it overlaps with:

OTE is the 0.62–0.79 retracement of the displacement leg. 0.705 is its midpoint, not a property of the order block itself.

8. Validate risk

Every plan must define:

9. Return one decision status

Status Meaning
confirmed Every required condition has been verified.
developing The narrative is valid, but a required structure break, retracement, or confirmation is still missing.
invalidated Price has breached the structural invalidation level.
no-trade The entry is late, evidence conflicts, data is insufficient, or reward to risk is unacceptable.

Complete Usage Example

User prompt:

Use $ict-trading-model to analyze the uploaded ETH 15-minute chart.

My thesis is that price swept the previous high and then broke the latest swing low.
Do not accept the thesis without verification. Check:

1. whether the previous high represents valid BSL;
2. whether the sweep produced bearish displacement and a strict bearish FVG;
3. whether a candle body closed below the swing low;
4. which bullish candle, if any, qualifies as the bearish order block;
5. whether the order block, FVG, and OTE overlap;
6. whether the setup is confirmed, developing, invalidated, or no-trade;
7. what must happen next if the setup is still developing.

Do not execute a trade.

Expected response shape:

Status: developing
Direction: potential short

Verified:
- Liquidity above the previous high was reached and rejected.
- Downside expansion followed the rejection.

Not yet verified:
- The latest swing low was breached only by a wick, not by a candle close.
- Exact bearish FVG boundaries cannot be confirmed from the screenshot.

Required next steps:
- Wait for a 15-minute close below the swing low.
- Confirm that displacement creates a strict bearish FVG.
- Wait for price to retrace into a premium-side FVG or valid order block.

Invalidation:
- Price closes back above the sweep high.

Conclusion: the setup is not confirmed, and an early short is not justified.

The central rule is simple: missing evidence produces developing or no-trade, never an invented confirmation.

Deterministic OHLCV Scanner

The included scanner provides repeatable mechanical detection for candle data:

python3 scripts/ict_scan.py \
  --input /absolute/path/to/candles.json \
  --direction auto \
  --swing-width 2 \
  --minimum-rr 2

It detects:

Supported input formats

Object format:

{
  "meta": {
    "instrument": "BTC-USDT-SWAP",
    "timeframe": "5m"
  },
  "candles": [
    {
      "timestamp": "2026-10-10T02:00:00Z",
      "open": 100,
      "high": 102,
      "low": 99,
      "close": 101,
      "volume": 1234
    }
  ]
}

Array format:

[
  [1791597600000, 100, 102, 99, 101, 1234]
]

The scanner requires at least 10 candles. Reverse-chronological input is sorted automatically before analysis.

Scanner output

The scanner returns a mechanical_status with the detected evidence and candidate setup. This is not the final trading decision. Higher-timeframe context, the quality of the liquidity pool, event risk, and actual execution costs still require human or agent review.

Repository Structure

ict-trading-model/
├── SKILL.md                       # Skill instructions and decision process
├── agents/openai.yaml             # Agent metadata
├── references/ict-model.md        # ICT/SMC definitions and validation rules
├── references/output-contract.md  # Required analysis output format
├── scripts/ict_scan.py            # Deterministic OHLCV scanner
└── tests/test_ict_scan.py         # Scanner test suite

Limitations and Risk Notice

Development and Testing

Run the test suite and syntax check from the repository root:

python3 -m unittest discover -s tests -v
python3 -m py_compile scripts/ict_scan.py

License

Released under the MIT License.

ict-trading-model (carreypro/ict-trading-model)

Searching Database…

这是做什么的?ICT Trading Model 是一个 Codex 技能,它把多周期方向判断、流动性图谱、溢价/折价位置、交易时段背景、位移、市场结构以及 PD 数组整合成一个严格的 ICT/SMC(Inner Circle Trader / Smart Money Concepts)交易形态验证框架。
它是一个能自动下单的交易机器人,还是只是一个分析工具?它只输出分析和条件化的交易计划,本身绝不会执行下单操作。
我怎么安装和运行这个技能?直接从 GitHub 仓库安装该技能,然后在 Codex 中显式调用它;当提示中提到流动性扫荡、FVG、订单块、MSS 或 BOS 等 ICT/SMC 术语时,它也会自动激活。
我可以喂给它什么样的市场数据?它接受图表截图进行目视审查,也能自行获取实时 K 线数据,还支持 OHLCV JSON 文件(对象或数组格式);确定性扫描器至少需要 10 根 K 线。
输出结果有多可靠?它考虑交易成本吗?截图无法替代完整的 OHLCV 数据,任何无法读取的价格位置都必须标注为未验证;机械扫描器给出的也只是不含手续费、点差、滑点或资金费率的毛风险回报比。
这个技能是给谁用的?面向懂 ICT/SMC 价格行为概念的交易者和研究者,他们需要一个有纪律、以证据为依据的形态验证工具,而不是自动交易程序;作者明确表示它仅用于教育和研究,不构成投资建议。
一共有哪四种判定状态?每次分析最终只会得出一个状态:confirmed(所有条件均已验证)、developing(逻辑成立但尚缺确认)、invalidated(结构性失效已被突破)或 no-trade(入场过晚、证据相互矛盾、数据不足或风险回报比不可接受)。
单个订单块或 FVG 能自己触发交易信号吗?不能。该技能采用证据门控的规划方式,也就是说,单凭一个 FVG、订单块或一根反向 K 线无法产生信号;必须先满足完整的九阶段流程(方向判断、流动性图谱、扫荡、位移、结构突破、执行区域、风险验证)。
一份有效的交易计划至少需要多大的风险回报比?每份交易计划在计入成本前,预估风险回报比必须至少达到 1:2,同时还要给出明确的触发条件、结构性失效位置以及一个反向流动性目标。
确定性 OHLCV 扫描器到底能识别什么?它会机械地识别摆动高低点、严格的多头/空头 FVG、买方/卖方流动性扫荡、位移强度、收盘确认的结构突破、含 OTE 重叠的交易区间、回调状态,以及附带毛风险回报比的候选目标位。
Creator
carreypro
Size
<0.1 MB
Stars
314
Updated
CommitOct 10
Age
7d
Commits · 90 Days