ChartMathChartMath
ManagersChartsResearchAboutPricingFAQ
ChartMathChartMath

A research company that ships
real-time trade discovery.

ProductManagersChartPaper TradingComparePricingChangelog
CompanyAboutResearchIndiaFAQBlog
LegalPrivacyTermsCompliance
Get the appDownload on theApp StoreGet it onGoogle PlayTry the chart tool →
Charts powered by TradingView · Attribution notice.© 2026 SKAS FINTECH PRIVATE LIMITED

Educational use only. Not a broker/dealer or investment adviser and not registered with SEBI. Past performance does not indicate future results.

ChartMath /c

The chart any AI can draw on

A chart is one URL. Write it from memory, send it to anyone, and it renders live: no install, no account, no screenshot.

The grammar is plain query params. Nothing is base64, nothing is JSON, and a malformed item is skipped and counted rather than blanking the page.

Start a chart

A blank chart with the drawing tools on. What you draw is the URL, and the URL is what you send.

Give this to your agent
chartmath.com/c/llms.txtopen italso llms-read.txt (the read layer)

The whole grammar in one plain-text page, under two thousand tokens. Everything below is the same thing, for people.

Six links that teach the whole thing

Each one renders live. Read the URL, then open it.

A level and a title

The bare minimum.

https://chartmath.com/c?i=NVDA&h=hi:20:20d+high&t=NVDA+daily&by=example
Open →

Everything named

Tier 0: the author computes nothing; the viewer does.

https://chartmath.com/c?i=NVDA&tf=D&h=hi:20:20d+high&h=ema:50&box=range:30&tl=swing:hi&ind=ema20&by=example
Open →

Explicit numbers from a read

Tier 1: a base as a box, an authored plan, a note.

https://chartmath.com/c?i=NVDA&tf=D&at=2026-09-04&w=90,20&box=2026-08-11,2026-09-04,207.25,234.75:Range&plan=230.3,222.9,245.1:Swing+long&v=2026-09-04:Screen+fired&n=Range+is+18+bars+at+13%25+height.+Entry+on+a+close+above+it,+stop+under+the+Sep+1+swing+low.&by=example
Open →

Another market, weekly

NSE, a marker, anchored text.

https://chartmath.com/c?i=NSE-RELIANCE&tf=W&h=lo:50:50w+low&m=2026-07-20:Reversal+bar:below&txt=2026-06-08,1290:Volume+dried+up+here&by=example
Open →

Intraday, dark, embedded

Datetimes, a ray through swing lows, embed mode.

https://chartmath.com/c?i=BTCUSDT&tf=1h&at=2026-09-04T14:00&w=60,10&h=last&ray=swing:lo&theme=dark&e=1&by=example
Open →

Chart params

What the chart is. One of each per URL.

ParamWhat it meansExamples
i=
SYMBOL or EXCHANGE-SYMBOL
Instrument. A bare symbol resolves US, then India, then Crypto; first hit wins. EXCHANGE-SYMBOL is exact. Required.
  • i=NVDA
  • i=NASDAQ-NVDA
  • i=NSE-RELIANCE
  • i=BTCUSDT
tf=
D W M 1h 15m 5m 1m
Timeframe. Default D.
  • tf=W
  • tf=1h
at=
TIME
Anchor bar. Named references are computed as of the anchor. Default last bar.
  • at=2026-09-04
  • at=2026-09-04T10:30
w=
before[,after]
Window in bars around the anchor (before ≤ 500, after ≤ 200). Drawings outside it may sit off-screen. Default 120,10.
  • w=90,20
win=
TIME,TIME
Visible window as two times (what a pan leaves on screen). Overrides w for the opening view; never moves the anchor. last may be the right edge. Default the w window.
  • win=2026-06-01,2026-08-15
  • win=2026-09-04T10:15,last
tz=
exchange utc local
Display clock for the axis. Times you write stay exchange-local. local is the reader's zone. Default exchange.
  • tz=utc
ind=
ema<N> sma<N> bb<N> rsi<N> atr<N> macd vwap, comma-separated
Indicators, max 6. Volume is always shown.
  • ind=ema20,sma50,rsi14
t=
text ≤80
Title.
  • t=NVDA+bull+flag
n=
text ≤500
Note under the chart. Plain text, no links.
  • n=Entry+on+a+close+above+the+base
by=
[a-z0-9_.-]{1,32}
Author, shown as "drawn by".
  • by=chatgpt
  • by=claude
  • by=prateek
theme=
dark or light
Colour scheme. Default site theme.
  • theme=dark
e=
1
Embed: chart only, no header, note, or panel.
  • e=1

Drawing params

What is on the chart. Every one of these repeats, and they draw in the order they appear in the URL.

ParamWhat it meansExamples
h=
PRICE[@TIME][:LABEL[:COLOR]]
Horizontal level. @TIME starts it at that bar (ray). Default amber.
  • h=128.4:Breakout:amber
  • h=hi:20:20d+high
  • h=ema:50
  • h=128.4@2026-08-20
h=
PANE:VALUE[:LABEL[:COLOR]] where PANE is rsi atr macd vol
A level on an indicator pane, on its own scale (rsi matches rsi14 or rsi7). Volume takes k, M or B. Ignored when that pane is absent.
  • h=rsi:70:overbought
  • h=rsi:30
  • h=macd:0
  • h=vol:50M
v=
TIME[:LABEL[:COLOR]]
Vertical marker at a bar. Default blue.
  • v=2026-09-04:Screen+fired
box=
TIME,TIME,PRICE,PRICE[:LABEL[:COLOR]] or range:N[:LABEL[:COLOR]]
Shaded rectangle: from, to, low, high. Chip shows bars and % height automatically. Default blue.
  • box=2026-08-20,2026-09-04,121.3,128.4:Base
  • box=range:30
tl=
TIME,PRICE,TIME,PRICE[:LABEL[:COLOR]] or swing:hi / swing:lo
Two-point segment. Chip shows % and bars automatically. Default purple.
  • tl=2026-08-15,118.2,2026-09-04,127.9
  • tl=swing:hi
ray=
same as tl
The same line extended right to the chart edge.
  • ray=swing:lo
m=
TIME:TEXT[:above|below]
Bar marker with text. below (default) is an up-arrow under the bar, above a down-arrow over it.
  • m=2026-09-04:Entry:below
txt=
TIME,PRICE:TEXT[:COLOR]
Anchored text with a pointer to its bar and price.
  • txt=2026-08-28,124:Volume+dried+up+here
plan=
PRICE,PRICE,PRICE[:LABEL[:COLOR]]
Trade plan: entry, stop, target (side from where the stop sits). Three lines, risk and reward zones, an R:R chip.
  • plan=130.1,126.05,138.2
  • plan=last,lo:20,hi:50:Swing+long

A level can sit on an indicator pane as well as on price: h=rsi:70, h=macd:0, h=vol:50M. It is drawn on that pane, tagged on that pane's axis, and dragged there. If the indicator is not on the chart the item is ignored and the page says which pane was missing, rather than putting 70 somewhere in the share price.

An authored plan (plan=) is dashed and carries the author's label. It represents the author's analysis.

Named references

Eight, fixed. Write the name instead of the number and the viewer computes it from live data, as of the anchor bar. The read layer computes them with the same code, so what an agent reads is what the viewer draws.

hi:NHighest high of the N bars ending at the anchor.any PRICE
lo:NLowest low of the N bars ending at the anchor.any PRICE
ema:NEMA of closes, period N, at the anchor.any PRICE
sma:NSimple mean of the N closes ending at the anchor.any PRICE
lastClose of the anchor bar (live last price when the anchor is the last bar).any PRICE or TIME
range:NThe box spanning the N bars ending at the anchor: lo:N to hi:N.box only
swing:hiLine through the two most recent swing highs (a bar higher than the three bars on each side).tl and ray only
swing:loLine through the two most recent swing lows.tl and ray only

Time, colours, limits

Time

  • TIME is 2026-09-04 (a trading date), 2026-09-04T10:30 (exchange-local), 1757000000 (epoch seconds UTC), or last.
  • A date matches the bar with that trading date; a datetime snaps to the nearest bar.
  • After the last bar clamps to it; before the first loaded bar the drawing is skipped and counted (at= clamps).
  • N is 2..250. Labels are plain text up to 40 characters, no commas or colons.
  • Bars, not days: 21 daily bars ≈ a month, so range:21 is the last month.

Colours

Names only, and every primitive has a default, so you rarely need one: amber · blue · red · green · gray · purple · orange · cyan

Limits

40 drawings per URL, title 80 characters, note 500, label and marker text 40, 6 indicators, window 500 bars before the anchor and 200 after. Over a cap is truncated, never rejected.

Read the data before you draw

Three GET endpoints, compact text by default and JSON with fmt=json. An agent that can fetch a URL can look at the bars and the computed structure first, then write explicit numbers.

/c/read?i=SYMBOL&tf=D&n=120

One instrument: N bars (date o h l c v), structure (hi/lo 10 20 50, ema 9 20 50 200, sma 50 200, atr14, last five swing highs and lows, base when one exists). Send it a whole chart query (the chart link with /read in the path) and it also prints each drawing resolved to prices and dates with its id (d1, m2), ignored items with reasons, and the ind= tokens' last values and recent series. n ≤ 500. Add fmt=json for JSON.

https://chartmath.com/c/read?i=NVDA&tf=D&n=120&h=hi:20&box=range:30&ind=ema20,rsi14

Write your next chart

Read prices and structure with /c/read?i=NVDA, then add your own drawings.

Add by= with your name to anything you write, so we can see it was you. The full grammar for an agent lives at https://chartmath.com/c/llms.txt.