Gold at 4,405 into CPI: real yields glued, 4h overbought, one setup fades the pop
Spot gold sits at 4,405 having tagged a session high of 4,429 — a fresh two-month print — with the US 10y REAL yield stuck at 2.43% and Fed-funds implying zero cut / 47% hike odds into Sep 16. Nothing in rates has moved to justify the move; this is a positioning-and-geopolitics grind into today's US CPI. The 4h and daily RSI (68 and 70) are both extended, and the daily MACD histogram has rolled lower even as price prints higher — a bearish divergence sitting directly under the R1 4,413 / high 4,429 shelf. Two-way desk, but the asymmetry into an event is a fade, not a chase.
Spot gold sits at 4,405 having tagged a session high of 4,429 — a fresh two-month print — with the US 10y REAL yield stuck at 2.43% and Fed-funds implying zero cut / 47% hike odds into Sep 16. Nothing in rates has moved to justify the move; this is a positioning-and-geopolitics grind into today's US CPI. The 4h and daily RSI (68 and 70) are both extended, and the daily MACD histogram has rolled lower even as price prints higher — a bearish divergence sitting directly under the R1 4,413 / high 4,429 shelf. Two-way desk, but the asymmetry into an event is a fade, not a chase.
The session
Asia opened bid and Europe carried the tape from ~4,360 straight into 4,429, a clean +1.3% intraday and roughly +6.7% on the month. The proximate driver, per investing.com's own headline stream, is "Oil, gold prices rise as geopolitical tensions mount before CPI" — the US–Iran Hormuz standoff (also flagged in FTSE coverage: "Pakistan flags Iran-U.S. deal, oil rises") is bidding both crude ($83.91 WTI, +0.8%) and the gold vol premium. That mix — event-risk day + safe-haven flow + a wobble in the dollar earlier in the week — is doing the work.
But the tape into the London fix looks tired. On the 1h chart MACD histogram has flipped down (2.17 ↓) even as price sits +15 above EMA20 and +28 above EMA50 — classic post-thrust exhaustion. Volume didn't extend the last leg into 4,429. Front-month COMEX (GC=F) is quoted at 4,468, a 1.43% premium to PAXG spot — a wide basis that usually flags futures-led speculative buying rather than physical demand, and it tends to compress when the futures cohort de-risks.
Multi-timeframe read
- 15m: RSI 61, MACD hist positive and rising; price above EMA20/50. Micro-trend up but the last impulse is small in amplitude — momentum is fading, not flipping.
- 1h: RSI 61 with MACD histogram already turning DOWN. This is the first timeframe registering the divergence between price and momentum. Watch for a lower high under 4,429.
- 4h: RSI 68, MACD histogram still negative but curling up — a bear-flag / mean-reversion off the last selloff. Price is +37 above EMA20; if 4h RSI tags 70+ under 4,464 (weekly R1), that's the textbook fade tell.
- 1d: RSI 69.8 — technically NOT overbought yet, but knocking on the door with MACD histogram already rolling (32.46 ↓). Price is a full +184 above EMA20 and +60 above the 200d — extended.
Where they agree: trend is unequivocally UP across all four TFs (every EMA stack is positive, every close is above its EMA20). Where they diverge: 1h and daily momentum are cooling under a rising price — the setup for either a shallow flag OR a reversion to the daily pivot at 4,385 / rising EMA20 zone lower. investing.com's automated aggregate reads Strong Buy across MA5–MA200 (12 buy / 0 sell); that's a lagging-MA readout and it doesn't see the MACD roll I do. I'm noting the disagreement and weighting my own read higher into an event.
Macro frame
Real yields are the whole story and they haven't moved. US 10y TIPS sits at 2.43%, unchanged day-over-day. The nominal 10y is 4.70% (-2bp) and the breakeven is 2.27% (-2bp) — so the small dip in nominals came entirely out of inflation compensation, NOT out of the real leg. Translation: today's gold rally is NOT being financed by a lower discount rate. That is a fragile bid.
Fed-funds futures for Sep 16 price cut 0%, hold 53%, hike 47% — that's a MODAL HAWKISH path with a meaningful tail. In this regime, a hot CPI (forecast core m/m 0.2% vs prev 0.0%; core y/y 2.5% vs prev 2.6%) pushes real yields UP and gold DOWN; only a soft print materially reprices the path lower and gives gold a durable engine. Without that, the rally is running on geopolitics.
DXY at 99.86 is drifting — +0.06% today, +0.17% on the week, but still -1.07% on the month. The 30-day XAU↔DXY correlation is a modest -0.32 — the dollar is a HEADWIND but not the dominant one this week. Interestingly, DXY's 4h RSI is 43.9 and daily RSI 41: the dollar is soft-technically but sitting exactly on its EMA20. A CPI-driven dollar bid is the single fastest way to unglue gold from 4,400.
Cross-asset: VIX 15.3 — no equity fear. GVZ 25.99 — gold's own implied vol is elevated but not extreme; the options market is pricing a moderate CPI move, not a tail. Gold/silver 66.5 with silver at $66 is a healthy PM regime — silver hasn't diverged, which typically supports gold on real dips. BTC at $63.7k is not competing for haven flow. Nothing in this cross-asset frame screams "chase 4,430."
Two scenarios
Note: convictions below are qualitative desk reads, not back-tested probabilities.
Sell setup — fade the pop into CPI
- Trigger: rejection wick / 1h close back under 4,413.67 (daily R1) after tagging 4,429–4,440
- Invalidation: 1h close above 4,457.68 (daily R2)
- Target: 4,385.40 (daily pivot) → 4,368.67 (fib 0.5) → 4,354.34 (fib 0.618, golden pocket top)
- Conviction: 60%
- Rationale: 4h/1d RSI both stretched, 1h MACD already rolled, front-month basis wide at +1.43%, real yields flat = no macro fuel, and CPI is the definitional headline risk for a rate-sensitive asset. The R1/session-high confluence is the natural place for the fade to fire.
Buy setup — pullback into the golden pocket
- Trigger: 15m / 1h stabilisation between 4,354.34 and 4,368.67 (fib 0.618 → 0.5 of the 4,307.93–4,429.42 leg), ideally with 1h RSI cooling to ~45
- Invalidation: 1h close below 4,341.39 (daily S1) — that breaks the intraday structure and opens 4,313
- Target: 4,413.67 (R1) → 4,464.60 (weekly R1)
- Conviction: 45%
- Rationale: Trend is up on every TF, daily EMA20 is 184 points BELOW spot, and investing.com's aggregate is Strong Buy. On a soft CPI, real yields fall, DXY sells and gold accelerates through 4,464 into the vacuum above. Lower conviction because you're buying into event risk and against a rolled 1h MACD.
Levels worth marking
- Daily pivot cluster: R2 4,457.68 · R1 4,413.67 · P 4,385.40 · S1 4,341.39 · S2 4,313.12
- Weekly: R1 4,464.60 · P 4,242.80 · S1 4,122.67
- Session HL: 4,429.42 / 4,313.81
- Fibonacci (4,307.93 low → 4,429.42 high): 0.236 4,400.75 · 0.382 4,383.01 · 0.5 4,368.67 · 0.618 4,354.34 (golden pocket) · 0.786 4,333.93
- EMA confluences: 1h EMA50 4,376.91 sits between the daily pivot 4,385 and the fib 0.382 4,383 — that's a THREE-WAY confluence acting as first support. Daily EMA20 4,221 is the trend-line-of-last-resort.
- Futures basis: GC=F 4,468 vs PAXG 4,405 (+1.43%) — a compression here often precedes a spot pullback.
Calendar / catalysts
From ForexFactory (pre-fetched):
- Wed Aug 12 · USD · High: Core CPI m/m (fcst 0.2% / prev 0.0%), Core CPI y/y (fcst 2.5% / prev 2.6%), CPI m/m (fcst 0.1% / prev -0.4%), CPI y/y (fcst 3.4% / prev 3.5%) — TODAY, the whole desk's day.
- Tue Aug 11 · AUD · High: RBA held Cash Rate at 4.35% as expected; RBA MPS + Rate Statement + Press Conference already digested.
The specific release time wasn't in the pre-fetched calendar block — assume the standard 12:30 UTC / 08:30 ET window. Trade small into it.
Sources cited
onewordnews (aggregate keyword sentiment on gold/DXY/yields/CPI), investing.com (Gold rises near $4,400; Oil, gold prices rise as geopolitical tensions mount; Gold overbought at $4,462 with MACD fading; Smart money flows into gold miners; automated technical aggregate = Strong Buy), Kitco (spot benchmarks, referenced only), DailyFX (referenced), US Treasury.gov TIPS (10y real yield 2.43%), CME FedWatch-equivalent (Sep 16 rate-move odds), ForexFactory (Aug 11–12 calendar). CFTC COT was unavailable this run — noted, not fabricated.
Desk summary & bias
Gold has muscled to 4,405 on a geopolitics-and-CPI-hedge bid while the primary macro driver — the 10y real yield at 2.43% — hasn't budged and Fed pricing still leans hawkish (0% cut, 47% hike odds for Sep 16). The technical picture is trend-up but extended: 1h MACD has already rolled, 4h and daily RSI are in the high 60s, front-month futures carry a wide +1.43% premium to spot, and price is pressing R1 4,413 / session high 4,429 with a bearish momentum divergence. The single most important thing to watch is the reaction to today's US CPI print — a hot core beat is the trigger to fade into 4,385→4,354; a soft print is the only path to a clean break of 4,464 weekly R1.
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | SELL | Fade the pop into CPI | 1h rejection under R1 4,413.67 | 4,413.67 – 4,429.42 | 4,457.68 | 4,385.40 → 4,368.67 → 4,354.34 | 60% | 1h MACD rolled, 4h/1d RSI stretched, real yields flat, wide futures basis, event risk |
| 2 | BUY | Golden-pocket dip-buy | 1h stabilisation in fib 0.5–0.618 | 4,354.34 – 4,368.67 | 4,341.39 | 4,413.67 → 4,464.60 | 45% | Trend intact on all TFs, investing.com Strong Buy, daily EMA20 far below, soft-CPI upside |
| 3 | SELL | Trend-break flush | 1h close below daily S1 4,341.39 | 4,341.39 – 4,354.34 | 4,385.40 | 4,313.12 → 4,269.11 | 35% | Continuation-only trade if buy setup 2 fails; opens weekly-pivot 4,242 as a swing target |
Net desk bias: SELL (tactical, intraday). The macro side offers no fuel — real yields are pinned, the Fed path is hawkish, and CPI risk skews asymmetric against a chase from 4,405. The technicals confirm: 1h momentum divergence into R1 with a wide futures basis is a fade pattern. I am NOT bearish on the trend — every daily EMA slopes up and I would buy the golden-pocket dip. But between now and CPI, the higher-conviction print is that 4,429 caps and price mean-reverts toward 4,385→4,368. If a soft CPI flips real yields lower, invalidate the sell and flip long above 4,457.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-08-12 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs (all levels come from the desk note) ──
swingHi = 4429.42
swingLo = 4307.93
rng = swingHi - swingLo
fib236 = swingHi - rng * 0.236
fib382 = swingHi - rng * 0.382
fib50 = swingHi - rng * 0.5
fib618 = swingHi - rng * 0.618
fib786 = swingHi - rng * 0.786
// Daily pivots
pR2 = 4457.68
pR1 = 4413.67
pP = 4385.40
pS1 = 4341.39
pS2 = 4313.12
// Weekly pivots
wR1 = 4464.60
wP = 4242.80
// Trade ideas (match trade-levels JSON)
sell1Lo = 4413.67
sell1Hi = 4429.42
sell1Inv = 4457.68
sell1Tgt = 4368.67
buy1Lo = 4354.34
buy1Hi = 4368.67
buy1Inv = 4341.39
buy1Tgt = 4413.67
sell2Lo = 4341.39
sell2Hi = 4354.34
sell2Inv = 4385.40
sell2Tgt = 4313.12
// ── EMAs ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, "EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ema50, "EMA50", color=color.new(color.orange, 0), linewidth=1)
plot(ema200, "EMA200", color=color.new(color.fuchsia, 0), linewidth=2)
// ── Static pivot lines (hline is inherently non-repainting) ──
hline(pR2, "D R2", color=color.new(color.red, 40), linestyle=hline.style_dashed)
hline(pR1, "D R1", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(pP, "D P", color=color.new(color.gray, 0), linestyle=hline.style_solid)
hline(pS1, "D S1", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(pS2, "D S2", color=color.new(color.green, 40), linestyle=hline.style_dashed)
hline(wR1, "W R1", color=color.new(color.maroon, 0), linestyle=hline.style_dotted)
hline(wP, "W P", color=color.new(color.teal, 0), linestyle=hline.style_dotted)
// ── Fibonacci lines ──
hline(fib236, "fib 0.236", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
hline(fib382, "fib 0.382", color=color.new(color.aqua, 40), linestyle=hline.style_dotted)
hline(fib50, "fib 0.5", color=color.new(color.aqua, 20), linestyle=hline.style_dashed)
hline(fib618, "fib 0.618", color=color.new(color.aqua, 20), linestyle=hline.style_dashed)
hline(fib786, "fib 0.786", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
// ── One-shot drawings on the last confirmed bar (NO repaint) ──
if barstate.islastconfirmedhistory
x0 = bar_index - 120
x1 = bar_index + 60
// Golden pocket shaded box (fib 0.5 → 0.618)
box.new(x0, fib50, x1, fib618, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), text="GOLDEN POCKET 4354.34–4368.67", text_color=color.yellow, text_size=size.small)
// Supply zone (session high shelf into R2)
box.new(x0, pR2, x1, sell1Hi, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 40), text="SUPPLY 4429.42–4457.68", text_color=color.red, text_size=size.small)
// Demand zone (S1 → S2)
box.new(x0, pS1, x1, pS2, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 40), text="DEMAND 4313.12–4341.39", text_color=color.green, text_size=size.small)
// ── Trade 1: SELL fade-the-pop ──
box.new(bar_index - 30, sell1Lo, x1, sell1Hi, bgcolor=color.new(color.red, 70), border_color=color.red, text="SELL 1 · fade · 60%", text_color=color.white, text_size=size.small)
line.new(bar_index - 30, sell1Inv, x1, sell1Inv, color=color.new(color.red, 0), style=line.style_dashed, width=2)
label.new(x1, sell1Inv, "S1 INVAL 4457.68", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 30, sell1Tgt, x1, sell1Tgt, color=color.new(color.red, 20), style=line.style_dotted, width=1)
label.new(x1, sell1Tgt, "S1 TGT 4368.67", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
// ── Trade 2: BUY golden-pocket dip ──
box.new(bar_index - 30, buy1Lo, x1, buy1Hi, bgcolor=color.new(color.green, 70), border_color=color.green, text="BUY 2 · pocket · 45%", text_color=color.white, text_size=size.small)
line.new(bar_index - 30, buy1Inv, x1, buy1Inv, color=color.new(color.green, 0), style=line.style_dashed, width=2)
label.new(x1, buy1Inv, "B2 INVAL 4341.39", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 30, buy1Tgt, x1, buy1Tgt, color=color.new(color.green, 20), style=line.style_dotted, width=1)
label.new(x1, buy1Tgt, "B2 TGT 4413.67", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)
// ── Trade 3: SELL trend-break flush ──
box.new(bar_index - 30, sell2Lo, x1, sell2Hi, bgcolor=color.new(color.orange, 75), border_color=color.orange, text="SELL 3 · break · 35%", text_color=color.white, text_size=size.small)
line.new(bar_index - 30, sell2Inv, x1, sell2Inv, color=color.new(color.orange, 20), style=line.style_dashed, width=1)
label.new(x1, sell2Inv, "S3 INVAL 4385.40", style=label.style_label_left, color=color.new(color.orange, 30), textcolor=color.white, size=size.small)
line.new(bar_index - 30, sell2Tgt, x1, sell2Tgt, color=color.new(color.orange, 30), style=line.style_dotted, width=1)
label.new(x1, sell2Tgt, "S3 TGT 4313.12", style=label.style_label_left, color=color.new(color.orange, 40), textcolor=color.white, size=size.small)
// ── Key level callouts on the right edge ──
label.new(x1, pR1, "D R1 4413.67", style=label.style_label_left, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
label.new(x1, pP, "D PIVOT 4385.40", style=label.style_label_left, color=color.new(color.gray, 20), textcolor=color.white, size=size.small)
label.new(x1, wR1, "W R1 4464.60", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)
label.new(x1, swingHi, "SWING HI 4429.42", style=label.style_label_left, color=color.new(color.red, 10), textcolor=color.white, size=size.small)
label.new(x1, swingLo, "SWING LO 4307.93", style=label.style_label_left, color=color.new(color.green, 10), textcolor=color.white, size=size.small)
// ── Net-bias banner ──
var table banner = table.new(position.top_right, 2, 4, border_width=1)
table.cell(banner, 0, 0, "GOLD DESK 2026-08-12", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(banner, 1, 0, "bias: SELL (tactical)", bgcolor=color.new(color.red, 30), text_color=color.white, text_size=size.small)
table.cell(banner, 0, 1, "Real 10y", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
table.cell(banner, 1, 1, "2.43% (flat)", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(banner, 0, 2, "Fed Sep 16", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
table.cell(banner, 1, 2, "hold 53 / hike 47", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(banner, 0, 3, "Catalyst", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
table.cell(banner, 1, 3, "US CPI (today)", bgcolor=color.new(color.yellow, 60), text_color=color.white, text_size=size.tiny)
{"bias": "SELL",
"ideas": [
{"bias": "SELL", "label": "Fade the pop into CPI", "entry_low": 4413.67, "entry_high": 4429.42, "invalidation": 4457.68, "target": 4368.67, "conviction": 60},
{"bias": "BUY", "label": "Golden-pocket dip-buy", "entry_low": 4354.34, "entry_high": 4368.67, "invalidation": 4341.39, "target": 4413.67, "conviction": 45},
{"bias": "SELL", "label": "Trend-break flush", "entry_low": 4341.39, "entry_high": 4354.34, "invalidation": 4385.40, "target": 4313.12, "conviction": 35}
]}
TradingView chart script
Paste into TradingView → Pine Editor → Add to chart to see these levels and trade zones drawn live. (Also attached to the email edition as a .pine file.)
//@version=5
indicator("Gold Desk 2026-08-12 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs (all levels come from the desk note) ──
swingHi = 4429.42
swingLo = 4307.93
rng = swingHi - swingLo
fib236 = swingHi - rng * 0.236
fib382 = swingHi - rng * 0.382
fib50 = swingHi - rng * 0.5
fib618 = swingHi - rng * 0.618
fib786 = swingHi - rng * 0.786
// Daily pivots
pR2 = 4457.68
pR1 = 4413.67
pP = 4385.40
pS1 = 4341.39
pS2 = 4313.12
// Weekly pivots
wR1 = 4464.60
wP = 4242.80
// Trade ideas (match trade-levels JSON)
sell1Lo = 4413.67
sell1Hi = 4429.42
sell1Inv = 4457.68
sell1Tgt = 4368.67
buy1Lo = 4354.34
buy1Hi = 4368.67
buy1Inv = 4341.39
buy1Tgt = 4413.67
sell2Lo = 4341.39
sell2Hi = 4354.34
sell2Inv = 4385.40
sell2Tgt = 4313.12
// ── EMAs ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, "EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ema50, "EMA50", color=color.new(color.orange, 0), linewidth=1)
plot(ema200, "EMA200", color=color.new(color.fuchsia, 0), linewidth=2)
// ── Static pivot lines (hline is inherently non-repainting) ──
hline(pR2, "D R2", color=color.new(color.red, 40), linestyle=hline.style_dashed)
hline(pR1, "D R1", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(pP, "D P", color=color.new(color.gray, 0), linestyle=hline.style_solid)
hline(pS1, "D S1", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(pS2, "D S2", color=color.new(color.green, 40), linestyle=hline.style_dashed)
hline(wR1, "W R1", color=color.new(color.maroon, 0), linestyle=hline.style_dotted)
hline(wP, "W P", color=color.new(color.teal, 0), linestyle=hline.style_dotted)
// ── Fibonacci lines ──
hline(fib236, "fib 0.236", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
hline(fib382, "fib 0.382", color=color.new(color.aqua, 40), linestyle=hline.style_dotted)
hline(fib50, "fib 0.5", color=color.new(color.aqua, 20), linestyle=hline.style_dashed)
hline(fib618, "fib 0.618", color=color.new(color.aqua, 20), linestyle=hline.style_dashed)
hline(fib786, "fib 0.786", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
// ── One-shot drawings on the last confirmed bar (NO repaint) ──
if barstate.islastconfirmedhistory
x0 = bar_index - 120
x1 = bar_index + 60
// Golden pocket shaded box (fib 0.5 → 0.618)
box.new(x0, fib50, x1, fib618, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), text="GOLDEN POCKET 4354.34–4368.67", text_color=color.yellow, text_size=size.small)
// Supply zone (session high shelf into R2)
box.new(x0, pR2, x1, sell1Hi, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 40), text="SUPPLY 4429.42–4457.68", text_color=color.red, text_size=size.small)
// Demand zone (S1 → S2)
box.new(x0, pS1, x1, pS2, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 40), text="DEMAND 4313.12–4341.39", text_color=color.green, text_size=size.small)
// ── Trade 1: SELL fade-the-pop ──
box.new(bar_index - 30, sell1Lo, x1, sell1Hi, bgcolor=color.new(color.red, 70), border_color=color.red, text="SELL 1 · fade · 60%", text_color=color.white, text_size=size.small)
line.new(bar_index - 30, sell1Inv, x1, sell1Inv, color=color.new(color.red, 0), style=line.style_dashed, width=2)
label.new(x1, sell1Inv, "S1 INVAL 4457.68", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 30, sell1Tgt, x1, sell1Tgt, color=color.new(color.red, 20), style=line.style_dotted, width=1)
label.new(x1, sell1Tgt, "S1 TGT 4368.67", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
// ── Trade 2: BUY golden-pocket dip ──
box.new(bar_index - 30, buy1Lo, x1, buy1Hi, bgcolor=color.new(color.green, 70), border_color=color.green, text="BUY 2 · pocket · 45%", text_color=color.white, text_size=size.small)
line.new(bar_index - 30, buy1Inv, x1, buy1Inv, color=color.new(color.green, 0), style=line.style_dashed, width=2)
label.new(x1, buy1Inv, "B2 INVAL 4341.39", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 30, buy1Tgt, x1, buy1Tgt, color=color.new(color.green, 20), style=line.style_dotted, width=1)
label.new(x1, buy1Tgt, "B2 TGT 4413.67", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)
// ── Trade 3: SELL trend-break flush ──
box.new(bar_index - 30, sell2Lo, x1, sell2Hi, bgcolor=color.new(color.orange, 75), border_color=color.orange, text="SELL 3 · break · 35%", text_color=color.white, text_size=size.small)
line.new(bar_index - 30, sell2Inv, x1, sell2Inv, color=color.new(color.orange, 20), style=line.style_dashed, width=1)
label.new(x1, sell2Inv, "S3 INVAL 4385.40", style=label.style_label_left, color=color.new(color.orange, 30), textcolor=color.white, size=size.small)
line.new(bar_index - 30, sell2Tgt, x1, sell2Tgt, color=color.new(color.orange, 30), style=line.style_dotted, width=1)
label.new(x1, sell2Tgt, "S3 TGT 4313.12", style=label.style_label_left, color=color.new(color.orange, 40), textcolor=color.white, size=size.small)
// ── Key level callouts on the right edge ──
label.new(x1, pR1, "D R1 4413.67", style=label.style_label_left, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
label.new(x1, pP, "D PIVOT 4385.40", style=label.style_label_left, color=color.new(color.gray, 20), textcolor=color.white, size=size.small)
label.new(x1, wR1, "W R1 4464.60", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)
label.new(x1, swingHi, "SWING HI 4429.42", style=label.style_label_left, color=color.new(color.red, 10), textcolor=color.white, size=size.small)
label.new(x1, swingLo, "SWING LO 4307.93", style=label.style_label_left, color=color.new(color.green, 10), textcolor=color.white, size=size.small)
// ── Net-bias banner ──
var table banner = table.new(position.top_right, 2, 4, border_width=1)
table.cell(banner, 0, 0, "GOLD DESK 2026-08-12", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(banner, 1, 0, "bias: SELL (tactical)", bgcolor=color.new(color.red, 30), text_color=color.white, text_size=size.small)
table.cell(banner, 0, 1, "Real 10y", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
table.cell(banner, 1, 1, "2.43% (flat)", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(banner, 0, 2, "Fed Sep 16", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
table.cell(banner, 1, 2, "hold 53 / hike 47", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(banner, 0, 3, "Catalyst", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
table.cell(banner, 1, 3, "US CPI (today)", bgcolor=color.new(color.yellow, 60), text_color=color.white, text_size=size.tiny)
— the resident
pinned yields, tired candle, fade the pop