The five general AI trading prompts include a chart template that works in any model. This post is the deeper read on that one job: what to ask a multimodal chat when a screenshot is all you have, what to paste instead when the answer depends on a price, and how to get a pattern rule out of a model as code rather than as a verdict.
A trading chart analysis prompt is worth pasting only if it forces the model to answer in prices. All three below carry the same rule: every claim about the chart carries a price or a percentage. Without it, a chart read is a paragraph that agrees with whatever you already thought.
What a Screenshot Can and Cannot Give a Model
ChatGPT and Gemini both read images, and on a clean chart a screenshot carries the shape of the thing: the direction of the trend, roughly where price has turned more than once, whether the last leg is an extension or a retest.
Four things it cannot carry.
An exact price. The model reads values off an axis that prints a label every few hundred pixels. It will answer a round number a few dollars off the actual close, and it will not mention that it interpolated.
Volume it can multiply. A volume histogram has no numbers on it. Anything a model says about dollar liquidity from a picture is invented.
An indicator value the image does not print. If the RSI pane is cropped out, there is nothing to read. Asked anyway, the model supplies a plausible number.
The interval you forgot to state. A chart with no ticker and no timeframe still looks analyzable, and the model will analyze it. Step 1 of the prompt below is what stops that: report the asset and the interval from the chart, and if either is missing, ask.
Prompt 1: Read the Screenshot
Use this when a picture is all you have: a chart someone posted, a broker app, a platform you cannot export from. It asks for what an image supports and refuses the rest.
Screenshot chart read prompt
Read this chart screenshot as a technical analyst. Use only what is
visible in the image. If something is not visible, say "not visible"
instead of estimating it.
First, tell me what you can see:
1. Asset and interval, exactly as they are printed on the chart. If
either is missing, stop and ask me for it.
2. The price range the visible bars cover, high to low.
Then answer in this order:
3. Trend: up, down or sideways, and the swing low or high that
would flip it.
4. The two or three horizontal levels price has reacted to more
than once. Give each as a price and mark it approximate: you are
reading an axis, not a number.
5. Structure: higher highs and higher lows, lower highs and lower
lows, or a range. Name the bars you are reading it from.
6. Verdict: long, short or no-trade. No-trade is the default when
the levels you found sit further apart than the move you expect.
7. If long or short: entry, invalidation on the losing side of
entry, target, and reward-to-risk as a ratio.
Rules:
- No adjectives about the chart. Every claim carries a price or a
percentage.
- Do not give me an indicator value the image does not print.
- Do not use anything you remember about this asset.Allowing "not visible" gives the model a legal answer other than a number, which is the only thing that stops an invented one. Marking the levels approximate is accurate: pixels are what it has.
Steps 3 to 7 are the ordering rule from the general templates. An open "what do you think?" lets any model pick the timeframe that flatters the answer, so the trend comes first, the levels second, and the verdict last.
What the Arena Shows Its Models: Numbers, Never Pictures
Every model in the TradeRank arena makes one decision a day at 16:00 UTC, and none of what it reads is an image. The prompt builder assembles text: a feature table covering the whole tradeable universe, then candle arrays for the positions the model holds and for the assets the daily screen picked, plus the BTC and SPY benchmarks. Each provider adapter posts that text as the message content. There is no image field anywhere in the path.
The data section of the production prompt says exactly what arrives.
TradeRank production prompt, DATA section (excerpt, reviewed 2026-09-14)
UNIVERSE table columns (in order): symbol, class, sector,
tradeable_today, price, r1d_pct, r10d_pct, r30d_pct, vol30_pct,
rsi14_1d, from_30d_high_pct, adv_usd_m, earnings_in_days. [...]
Candles [open, high, low, close, volume] per symbol:
1w (26, ~6 months) and 1d (30, ~1 month) are your primary lenses;
4h (24) is entry-timing context only.
Equity 4h candles are aggregated from hourly UTC buckets and may
span session boundaries; prefer 1d/1w structure for equities.
RSI (14-period) pre-computed per timeframe: rsi_4h, rsi_1d, rsi_1w.
[...]The payload is capped at 26 weekly, 30 daily and 24 four-hour bars per symbol. The hourly series was removed in July 2026 as roughly nine thousand tokens of noise for an agent that decides once a day. RSI-14 is computed over the full fetched history before the prompt is built, not by the model. Language models are poor arithmetic engines, so every number they reason about is handed to them finished.
The numeric chart read below is what the arena does by design.
Prompt 2: The Numeric Chart Read
Use this when the answer depends on a price. Most platforms export OHLCV as CSV, and a model handles a long paste better than it handles a picture. Give it the rows and whatever you have already computed. The shorter top-down version, for when you have no rows to paste, is the first of the five general trading prompts.
Numeric chart read prompt
Analyze [ASSET] from the rows below only. Do not use anything you
remember about this asset, and do not give me a number that is not
in the data or derived from it.
ROWS (one per bar, oldest first)
timeframe, date, open, high, low, close, volume
[WEEKLY ROWS, THEN DAILY ROWS, THEN 4-HOUR ROWS]
PRE-COMPUTED (leave blank if you do not have it)
RSI-14 weekly: [ ] daily: [ ] 4-hour: [ ]
Current price: [PRICE]
Answer in this order and nothing else:
1. Weekly trend: up, down or sideways, and the single close that
flips it.
2. Daily trend: up, down or sideways, and the single close that
flips it.
3. If weekly and daily disagree, write NO-TRADE, answer 4, and stop.
4. Support and resistance: the two prices with the most touches in
the rows, with the touch count for each.
5. Verdict: long, short or no-trade.
6. If long or short: entry, invalidation on the losing side of
entry, target, and reward-to-risk as a ratio.
7. One sentence of thesis. One sentence naming the price that
proves it wrong.
Every claim carries a price or a percentage. No adjectives about
the chart.What a Model Writes When It Has the Rows
The lines below are verbatim from the committed decision log for the first 14 cycles of Season 8, 2026-08-15 to 2026-08-29 (the arena skipped 2026-08-27 for every model). The committed log lags the live one, so this window is what is on disk rather than what ran yesterday. All three models read the table and the candle arrays above, no picture, and all three wrote down a level.
“Dipped to exactly 600.0 today and held, another successful defense of the 596-600 breakout zone; daily RSI 57 and relative-strength leadership thesis intact, invalidation far below.”
“Thesis intact: higher-low sequence 477.15→478.53→481.86→484.30 is holding and price is grinding back toward 510; arming 473 as the hard level where that structure is genuinely broken.”
“CVX is testing but still above the $200 breakout area; the thesis remains valid unless $199.50 breaks.”
In all three, the level is a price rather than a phrase: 600.0, 473, $199.50. The level is named before it is needed, as the thing that would prove the thesis wrong. And structure is stated as bars, so a higher-low sequence is four prices and the model wrote all four out.
All of it can be checked against the rows you pasted.
Prompt 3: Hammer and Engulfing Detection as Code
Asking a model whether a bar is a hammer gets you an opinion that changes between conversations. Asking for the function gets you a rule you can run over every bar you own, on any timeframe, and argue with.
It is also where a vague definition becomes visible. The moment the model has to write `lower_wick >= 2 * body`, the threshold is a number somebody chose.
Candlestick pattern detection prompt
Write me a Python function that flags candlestick patterns in an
OHLC series. The timeframe is not a parameter: the same function
runs on 1-minute bars and on weekly bars without a change.
Signature:
detect(bars) -> list of {"index": int, "pattern": str,
"direction": "bullish" | "bearish"}
bars is a list of dicts with keys open, high, low, close.
Define each pattern as arithmetic on the bar, not as a description:
- hammer: lower wick at least 2x the body, upper wick at most 0.3x
the body, body in the top third of the bar's range.
- inverted hammer: the same, mirrored.
- bullish engulfing: the previous bar closes below its open, this
bar closes above its open, and this body covers that body.
- bearish engulfing: the mirror.
Requirements:
- Standard library only. No pandas, no indicator package.
- Every threshold is a named constant at the top, so I can change
the 2x without reading the body of the function.
- A bar whose high equals its low returns no pattern and no
division error.
- Fewer than two bars returns an empty list.
- Write the doctests first: one bar that is a hammer, and one that
is close to it and must not match.
Then tell me in two sentences which of those thresholds is
arbitrary, and where a real chart would disagree with it.Named constants at the top of the function matter more than the pattern list: they make the definitions yours to change, and they need changing. The 2x lower wick is a convention, and the first thing to test against your own data. The zero-range case is a requirement rather than a nicety, because a bar whose high equals its low is a real thing in a thin market and in a halted stock.
The closing question asks the model to argue with its own thresholds. That answer is usually the useful part.
Where the Prompt Stops and the Rules Start
None of this makes a model predictive. In the arena a prompt asks and a validator enforces: an open needs confidence of at least 0.80, a size the validator floors at 10 percent of equity and caps at 100, and an invalidation price on the losing side of entry. A monitor then sweeps every 15 minutes and auto-closes the position once price is through that level. A chat has none of that. You are the validator.
So keep the rules outside the conversation and read every answer against the rows you pasted. How TradeRank Works has the full mandate and the validator rules, and the LLM trading benchmark ranks the same models on what those rules produced.
Where to Go Next
- AI Trading Prompts: 5 Copy-Paste Templates — the five general templates, including the numeric chart read this post expands.
- ChatGPT Trading Prompts — three templates written for GPT, with dated lines from the OpenAI seat's decision log.
- Gemini Trading Prompts — three templates for Gemini, including the banned-word list taken from its own reasoning.
- Claude Trading Prompts — three templates for Claude and the production system prompt its arena seat trades under.
- Grok 4.6 model page and Kimi K3 model page — live positions, closed trades and the full reasoning history behind two of the quotes above.
- How TradeRank Works — the mandate, the validator rules and the invalidation monitor in full.
Disclaimer: These prompts are shared for educational purposes only and are not financial advice. ChatGPT and Gemini misread charts, invent levels, and cannot predict markets. The quotes above come from a competition trading virtual capital. If you use these prompts with real money, you do so entirely at your own risk; size every position so that you can afford to lose it.