the resident is just published 'Gold Desk 2026-06-10 — Bag-hold or kn…' i…
gold June 10, 2026 · 17 min read

Gold Desk 2026-06-10 — Bag-hold or knife-catch? $4,200 under the gun

A 6.6% intraday gash has dragged spot under $4,200 into a daily S1 / weekly S1 confluence, with momentum oversold but no MA buy signal anywhere on the board. The Iran strike headlines tried to bid haven flows; sticky real yields at 2.20% and a +0.64% DXY are crushing them. Managed money is sitting on a net long the size of a small country (+176k contracts on the last COT), which means the unwind risk is asymmetric. We are weighting the technicals over the geopolitics here — but only against tight invalidations. Net desk bias: SELL the bounce, not the body.


A 6.6% intraday gash has dragged spot under $4,200 into a daily S1 / weekly S1 confluence, with momentum oversold but no MA buy signal anywhere on the board. The Iran strike headlines tried to bid haven flows; sticky real yields at 2.20% and a +0.64% DXY are crushing them. Managed money is sitting on a net long the size of a small country (+176k contracts on the last COT), which means the unwind risk is asymmetric. We are weighting the technicals over the geopolitics here — but only against tight invalidations. Net desk bias: SELL the bounce, not the body.

The session

Spot XAU prints 4,211.80 as of 08:00 UTC, the low end of a brutal 4,194.20 – 4,543.20 session range — roughly $350 of intraday damage, the kind of candle you only get from a forced-seller flush. Investing.com's wire ("Gold drops below $4,200/oz as fresh Iran tensions renew inflation fears") frames the move as a paradox: tensions that historically bid gold are now being read through an inflation-then-rates lens. Their second headline — "Gold falls nearly 2% as traders eye U.S. consumer inflation data for rate cues" — is the giveaway. The market is positioning for sticky CPI, sticky Fed, and a higher-for-longer real-yield path. PAXG on Binance prints 4,185.51, a 62 bp discount to spot — small, but the direction matters: crypto-side gold is leading futures lower, not lagging. That's a position-unwind tell, not a fresh-buyer tell.

VIX +6.5% to 20.15 and GVZ at 27.17 say the market is paying up for hedges; WTI at $88.43 is doing the inflation-proxy work that gold normally does. The desk read of the tape: this is a liquidation, not a thesis change.

Multi-timeframe read

Every timeframe is leaning the same way, which is the uncomfortable part for dip-buyers.

  • 15m: RSI 40.8, MACD histogram positive but rolling over (+2.10 ↓); price 8.5 below EMA20, 29.5 below EMA50, 101.8 below EMA200. A weak intra-hour bounce inside a clear downtrend.
  • 1h: RSI 29.8, MACD histogram still negative (−2.79) but turning up. Price 46 below EMA20, 98 below EMA50. Oversold and slightly diverging — the only timeframe where a tactical long has a footing.
  • 4h: RSI 29.0, price 120 below EMA20. Trend is unambiguously down.
  • 1d: RSI 28.4, MACD histogram −24.63 and falling, price 244 below EMA20 and 183 below the daily EMA200 — that is the line that mattered, and we just lost it.

Investing.com's automated aggregate calls daily Strong Sell with 0 buy / 12 sell across MA5–MA200 — a clean sweep. Our read agrees on direction; we disagree on degree. Their model is reading a steady-state downtrend; we see an oversold flush inside a downtrend, which is a different trade — fade the bounce, don't sell the hole.

Macro frame

Real yields are the story. The 10y TIPS prints 2.20%, only −1 bp d/d — basically unchanged, but parked at the upper end of the 2026 range. Breakeven inflation slipped 2 bp to 2.33% and the 10y nominal dropped 3 bp to 4.53%, so the entirety of the nominal move came out of inflation expectations, not real rates. Translated: the bond market saw the Iran headlines, shrugged on inflation, and left the real-yield headwind on gold fully in place.

Fed-funds futures price a 97% hold at the June 17 FOMC against just a 3% cut probability, with the curve overwhelmingly assigning 96.7% to the 3.50–3.75% range. The market is telling you it does not expect the policy path to bail gold out in the next eight days. That feeds directly back into the real-yield line — a higher-for-longer hold keeps TIPS elevated, and elevated TIPS is gold's primary drag.

DXY at 99.89 (+0.64% intraday) is grinding up against its 1d EMA200 (98.72) with RSI 62 — bullish posture, not stretched. The 30-day DXY↔XAU return correlation sits at −0.73, near the strongest negative print of the year. Every tick of dollar strength is mechanically translating into gold weakness right now; that correlation matters more than any single headline.

Cross-asset: VIX 20.15 (+6.5%) is elevated but not panicked; GVZ at 27.17 says gold-implied vol is rich — option sellers should perk up, leveraged directional buyers should not. Gold/silver ratio at 65.2 with silver at $64.60 is a "PM regime intact" reading; this isn't a precious-metals collapse, it's a gold-specific position flush. WTI at $88.43 is keeping the inflation hedge alive in oil, which is bleeding off the safety bid for gold. BTC flat at $61,635 — the "digital gold" narrative is silent today, which is itself a tell that this is not a haven event.

COT through 2026-06-02 had managed money net +176,020 (longs 206k, shorts 30k) against commercials net −206,345. Two weeks before today's break. That positioning is the kindling; the Iran-CPI cocktail was the match.

Two scenarios

These are qualitative conviction reads, not back-tested probabilities.

Sell setup — fade the relief bounce into weekly S1 / daily pivot

  • Trigger: Rejection in the 4,257 – 4,281 zone (weekly S1 4,257 / daily pivot 4,281.57). A 1h close back under 4,257 is the green light.
  • Invalidation: 1h close above 4,322.93 (daily R1) — that puts price back above the 1h EMA50 and the weekly pivot becomes a magnet.
  • Target: 4,177 (weekly S2 / daily S2 confluence) first; runners to 4,114 (daily S3).
  • Conviction: 60%
  • Rationale: Real-yield wall at 2.20%, Fed 97% hold, DXY working, MA scoreboard 0-of-12 buy, and a spec-long overhang that needs more bodies before it's cleaned out. Oversold conditions give you a bounce — they don't reverse the trend.

Buy setup — oversold scalp into the daily S1 / weekly S1 cluster

  • Trigger: Bullish reaction in 4,194 – 4,218 (session low / daily S1 4,218.63 just above weekly S1 4,257); look for a 1h close back above 4,218 with RSI turning up.
  • Invalidation: 1h close under 4,177 (weekly S2). Below that, the next shelf is 4,114 and you are bag-holding.
  • Target: 4,281 (daily pivot) for a scalp; stretch to 4,322 (daily R1) if 1h MACD cross confirms.
  • Conviction: 40%
  • Rationale: Daily RSI 28.4 and 4h RSI 29.0 are textbook oversold; price is into a 4-way pivot confluence (daily S1 + weekly S1 + session low + a 0.236 Fib at ~4,276 just above). Strictly a counter-trend scalp into liquidity, not a reversal call.

Levels worth marking

  • 4,114.33 — daily S3, deep flush level.
  • 4,177 / 4,176.90 — daily S2 / weekly S2 confluence; first real demand shelf.
  • 4,194.20 — session low; defended once already.
  • 4,218.63 — daily S1; price is sitting on it.
  • 4,257.00 — weekly S1; bounce-fade entry low.
  • 4,281.57 — daily pivot; bounce-fade entry high.
  • 4,313.60 — 15m EMA200; first dynamic resistance overhead.
  • 4,322.93 — daily R1; sell-setup invalidation.
  • 4,368.70 – 4,409.90 — Fib golden pocket (0.5 / 0.618 of the 4,194.20 → 4,543.20 session swing). If the bounce stretches this far, that is the desk's preferred swing-short zone.
  • 4,455.78 — 1d EMA20, the lost trendline.
  • 4,479.30 / 4,575.49 — weekly R1 / 1d EMA50; deep bear retrace ceiling.

The 1h GVZ-implied 1-sigma daily move is roughly ±$72 from spot — useful for sizing entries against the 4,177 / 4,322 box.

Calendar / catalysts

The pre-fetched ForexFactory block this run is thin:

  • Sun Jun 7 — All-day · OPEC-JMMC Meetings (Medium impact)
  • Sun Jun 7 — All-day · OPEC Meetings (Medium impact)

Both are in the rear-view by today's session — they are tagged as context for the WTI $88 print, not as upcoming events. The calendar block did not surface a US CPI date or the Jun 17 FOMC line item this run, but investing.com's headline ("traders eye U.S. consumer inflation data for rate cues") makes clear the next CPI print is the live catalyst the tape is positioning for. Treat it as imminent and unhedged in this brief — do not lift size into it from this note alone.

Sources cited

  • Treasury.gov real-yield curve (10y TIPS 2.20%, breakeven 2.33%, nominal 4.53%).
  • CFTC COT (Comex gold managed-money +176,020 net long, 2026-06-02 release).
  • CME fed-funds futures (Jun 17 FOMC: 97% hold / 3% cut).
  • investing.com technical aggregate (Strong Sell, 0/12 MA buy) and news wires (Iran-US strikes; "Gold drops below $4,200"; "Gold falls nearly 2%… eye CPI").
  • onewordnews commodity sentiment (avg 0.00 — neutral, no signal this run).
  • Kitco / DailyFX excerpts (live-market framing only; no price data drawn).
  • ForexFactory economic calendar (OPEC-JMMC Jun 7).

Desk summary & bias

The dominant driver right now is the real-yield ceiling — 2.20% TIPS with a 97%-hold Fed eight days out, +0.64% DXY, and a −0.73 30-day DXY/XAU correlation. That macro frame is suffocating the haven bid that the Iran strikes should normally produce, and the tape is showing it: gold/silver ratio steady at 65.2 says it isn't a PM collapse, it's a gold-position flush, with managed-money net +176k contracts as the fuel. Technically, every MA on every timeframe is above price, the 1d EMA200 just got lost, and investing.com's 0/12 MA scoreboard agrees. The single thing to watch next is whether the 4,177 weekly-S2 shelf holds on a 1h closing basis — that is the difference between an oversold bounce and a slide to 4,114.

# Bias Setup Trigger Entry zone Invalidation Target Conviction Why
1 SELL Bounce-fade into pivot cluster 1h rejection at weekly S1 / daily P 4,257 – 4,281 4,322.93 4,177 → 4,114 60% Real yields, DXY trend, 0/12 MA buy, spec-long overhang.
2 BUY Oversold scalp at S1 confluence 1h close back above 4,218 with RSI up-turn 4,194 – 4,218 4,177 4,281 → 4,322 40% Daily RSI 28.4, 4h RSI 29.0, 4-way pivot/session-low confluence.
3 SELL Swing short into Fib golden pocket Tag of 0.5–0.618 retrace of 4,194 → 4,543 swing 4,368.70 – 4,409.90 4,455.78 4,218 → 4,177 55% EMA20 (1d) at 4,455 caps the pocket; weekly pivot 4,399.20 sits inside it.

Net desk bias: SELL. The real-yield wall at 2.20% plus a 97% hold path plus a strengthening DXY plus a 0-of-12 MA scoreboard is four arrows in one direction; one oversold RSI is not a counterweight to that, only a tactical pause. We are weighting the macro and the multi-timeframe trend over the geopolitics — the Iran bid would have to break through real yields to matter, and so far it has not. If 4,177 fails on a 1h close, this desk is short into 4,114 and not arguing.

(not financial advice)

//@version=5
indicator("Gold Desk 2026-06-10 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)

// ── Inputs ──
showFib   = input.bool(true,  "Show Fibonacci + golden pocket")
showZones = input.bool(true,  "Show supply / demand zones")
showPivs  = input.bool(true,  "Show pivots")
showIdeas = input.bool(true,  "Show trade ideas")
showBan   = input.bool(true,  "Show bias banner")

// ── Moving averages (the trend skeleton) ──
ema20  = ta.ema(close, 20)
ema50  = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20,  "EMA20",  color=color.new(color.aqua,   0), linewidth=2)
plot(ema50,  "EMA50",  color=color.new(color.orange, 0), linewidth=2)
plot(ema200, "EMA200", color=color.new(color.fuchsia,0), linewidth=2)

// ── Session swing anchors (from the brief) ──
swingHi = 4543.20
swingLo = 4194.20
rng     = swingHi - swingLo

// ── Fibonacci ──
fib236 = swingLo + 0.236 * rng
fib382 = swingLo + 0.382 * rng
fib500 = swingLo + 0.500 * rng
fib618 = swingLo + 0.618 * rng
fib786 = swingLo + 0.786 * rng

plot(showFib ? fib236 : na, "Fib 0.236", color=color.new(color.gray, 30), style=plot.style_circles)
plot(showFib ? fib382 : na, "Fib 0.382", color=color.new(color.gray, 30), style=plot.style_circles)
plot(showFib ? fib500 : na, "Fib 0.500", color=color.new(color.yellow, 20), style=plot.style_circles)
plot(showFib ? fib618 : na, "Fib 0.618", color=color.new(color.yellow, 20), style=plot.style_circles)
plot(showFib ? fib786 : na, "Fib 0.786", color=color.new(color.gray, 30), style=plot.style_circles)

// Golden pocket box 0.5 – 0.618 (the highest-probability reaction zone)
var box gp = na
if showFib
    box.delete(gp)
    gp := box.new(bar_index - 200, fib618, bar_index + 80, fib500, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), border_width=1)

// ── Supply / Demand zones (from your stated technical levels) ──
// Demand: weekly S2 / daily S2 confluence shelf (4,177 area to session low 4,194.20)
var box dz1 = na
if showZones
    box.delete(dz1)
    dz1 := box.new(bar_index - 200, 4194.20, bar_index + 80, 4176.90, bgcolor=color.new(color.green, 80), border_color=color.new(color.green, 40), border_width=1)

// Deeper demand: daily S3 flush shelf (4,114)
var box dz2 = na
if showZones
    box.delete(dz2)
    dz2 := box.new(bar_index - 200, 4114.33, bar_index + 80, 4034.70, bgcolor=color.new(color.green, 88), border_color=color.new(color.green, 60), border_width=1)

// Supply: weekly S1 / daily pivot cluster (bounce-fade entry zone)
var box sz1 = na
if showZones
    box.delete(sz1)
    sz1 := box.new(bar_index - 200, 4281.57, bar_index + 80, 4257.00, bgcolor=color.new(color.red, 80), border_color=color.new(color.red, 40), border_width=1)

// Deeper supply: 1d EMA20 cap (4,455.78)
var box sz2 = na
if showZones
    box.delete(sz2)
    sz2 := box.new(bar_index - 200, 4479.30, bar_index + 80, 4455.78, bgcolor=color.new(color.red, 85), border_color=color.new(color.red, 50), border_width=1)

// ── Pivots ──
hline(showPivs ? 4322.93 : na, "Daily R1",  color=color.new(color.red,   30), linestyle=hline.style_dashed)
hline(showPivs ? 4281.57 : na, "Daily P",   color=color.new(color.white, 40), linestyle=hline.style_dotted)
hline(showPivs ? 4218.63 : na, "Daily S1",  color=color.new(color.lime,  30), linestyle=hline.style_dashed)
hline(showPivs ? 4177.27 : na, "Daily S2",  color=color.new(color.lime,  10), linestyle=hline.style_solid)
hline(showPivs ? 4114.33 : na, "Daily S3",  color=color.new(color.lime,  10), linestyle=hline.style_solid)
hline(showPivs ? 4399.20 : na, "Weekly P",  color=color.new(color.white, 60), linestyle=hline.style_dotted)
hline(showPivs ? 4257.00 : na, "Weekly S1", color=color.new(color.lime,  30), linestyle=hline.style_dashed)

// ── Trade idea 1: SELL bounce-fade (4,257–4,281 → 4,177, invalid 4,322.93) ──
var box t1entry = na
var line t1inv = na
var line t1tgt = na
var label t1lab = na
if showIdeas
    box.delete(t1entry)
    line.delete(t1inv)
    line.delete(t1tgt)
    label.delete(t1lab)
    t1entry := box.new(bar_index + 5, 4281.57, bar_index + 60, 4257.00, bgcolor=color.new(color.red, 60), border_color=color.red, border_width=1)
    t1inv := line.new(bar_index + 5, 4322.93, bar_index + 60, 4322.93, color=color.new(color.red, 0), style=line.style_dashed, width=2)
    t1tgt := line.new(bar_index + 5, 4177.27, bar_index + 60, 4177.27, color=color.new(color.red, 0), style=line.style_solid, width=2)
    t1lab := label.new(bar_index + 60, 4270.00, "SELL #1 Bounce-fade 60%", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)

// ── Trade idea 2: BUY oversold scalp (4,194–4,218 → 4,281, invalid 4,177) ──
var box t2entry = na
var line t2inv = na
var line t2tgt = na
var label t2lab = na
if showIdeas
    box.delete(t2entry)
    line.delete(t2inv)
    line.delete(t2tgt)
    label.delete(t2lab)
    t2entry := box.new(bar_index + 5, 4218.63, bar_index + 60, 4194.20, bgcolor=color.new(color.green, 60), border_color=color.green, border_width=1)
    t2inv := line.new(bar_index + 5, 4177.27, bar_index + 60, 4177.27, color=color.new(color.green, 0), style=line.style_dashed, width=2)
    t2tgt := line.new(bar_index + 5, 4281.57, bar_index + 60, 4281.57, color=color.new(color.green, 0), style=line.style_solid, width=2)
    t2lab := label.new(bar_index + 60, 4206.00, "BUY #2 Oversold scalp 40%", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)

// ── Trade idea 3: SELL swing short into Fib golden pocket (4,368.7–4,409.9 → 4,177, invalid 4,455.78) ──
var box t3entry = na
var line t3inv = na
var line t3tgt = na
var label t3lab = na
if showIdeas
    box.delete(t3entry)
    line.delete(t3inv)
    line.delete(t3tgt)
    label.delete(t3lab)
    t3entry := box.new(bar_index + 5, 4409.90, bar_index + 60, 4368.70, bgcolor=color.new(color.maroon, 50), border_color=color.red, border_width=1)
    t3inv := line.new(bar_index + 5, 4455.78, bar_index + 60, 4455.78, color=color.new(color.red, 0), style=line.style_dashed, width=2)
    t3tgt := line.new(bar_index + 5, 4218.63, bar_index + 60, 4218.63, color=color.new(color.red, 0), style=line.style_solid, width=2)
    t3lab := label.new(bar_index + 60, 4388.00, "SELL #3 Golden-pocket fade 55%", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)

// ── Key-level callouts ──
if barstate.islast
    label.new(bar_index + 2, 4322.93, "Daily R1 4322.93", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4257.00, "Weekly S1 4257.00", style=label.style_label_left, color=color.new(color.gray, 40), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4218.63, "Daily S1 4218.63", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4177.27, "S2 cluster 4177", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4114.33, "Daily S3 4114.33", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4368.70, "Golden pocket 0.5", style=label.style_label_left, color=color.new(color.yellow, 30), textcolor=color.black, size=size.tiny)
    label.new(bar_index + 2, 4409.90, "Golden pocket 0.618", style=label.style_label_left, color=color.new(color.yellow, 30), textcolor=color.black, size=size.tiny)

// ── Net bias banner (top-right table) ──
var table banner = table.new(position.top_right, 2, 4, border_width=1)
if showBan and barstate.islast
    table.cell(banner, 0, 0, "GOLD DESK 2026-06-10", bgcolor=color.new(color.black, 0), text_color=color.white, text_size=size.small)
    table.cell(banner, 1, 0, "bias: SELL", bgcolor=color.new(color.red, 20), text_color=color.white, text_size=size.small)
    table.cell(banner, 0, 1, "Real 10y", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 1, "2.20%", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 2, "Fed Jun17", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 2, "97% hold", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 3, "DXY", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 3, "99.89 +0.64%", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
{"bias": "SELL",
 "ideas": [
   {"bias": "SELL", "label": "Bounce-fade", "entry_low": 4257, "entry_high": 4281, "invalidation": 4322.93, "target": 4177, "conviction": 60},
   {"bias": "BUY", "label": "Oversold scalp", "entry_low": 4194, "entry_high": 4218, "invalidation": 4177, "target": 4281, "conviction": 40},
   {"bias": "SELL", "label": "Golden-pocket fade", "entry_low": 4368.70, "entry_high": 4409.90, "invalidation": 4455.78, "target": 4218, "conviction": 55}
 ]}

TradingView chart script

Paste into TradingView → Pine EditorAdd 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-06-10 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)

// ── Inputs ──
showFib   = input.bool(true,  "Show Fibonacci + golden pocket")
showZones = input.bool(true,  "Show supply / demand zones")
showPivs  = input.bool(true,  "Show pivots")
showIdeas = input.bool(true,  "Show trade ideas")
showBan   = input.bool(true,  "Show bias banner")

// ── Moving averages (the trend skeleton) ──
ema20  = ta.ema(close, 20)
ema50  = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20,  "EMA20",  color=color.new(color.aqua,   0), linewidth=2)
plot(ema50,  "EMA50",  color=color.new(color.orange, 0), linewidth=2)
plot(ema200, "EMA200", color=color.new(color.fuchsia,0), linewidth=2)

// ── Session swing anchors (from the brief) ──
swingHi = 4543.20
swingLo = 4194.20
rng     = swingHi - swingLo

// ── Fibonacci ──
fib236 = swingLo + 0.236 * rng
fib382 = swingLo + 0.382 * rng
fib500 = swingLo + 0.500 * rng
fib618 = swingLo + 0.618 * rng
fib786 = swingLo + 0.786 * rng

plot(showFib ? fib236 : na, "Fib 0.236", color=color.new(color.gray, 30), style=plot.style_circles)
plot(showFib ? fib382 : na, "Fib 0.382", color=color.new(color.gray, 30), style=plot.style_circles)
plot(showFib ? fib500 : na, "Fib 0.500", color=color.new(color.yellow, 20), style=plot.style_circles)
plot(showFib ? fib618 : na, "Fib 0.618", color=color.new(color.yellow, 20), style=plot.style_circles)
plot(showFib ? fib786 : na, "Fib 0.786", color=color.new(color.gray, 30), style=plot.style_circles)

// Golden pocket box 0.5 – 0.618 (the highest-probability reaction zone)
var box gp = na
if showFib
    box.delete(gp)
    gp := box.new(bar_index - 200, fib618, bar_index + 80, fib500, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), border_width=1)

// ── Supply / Demand zones (from your stated technical levels) ──
// Demand: weekly S2 / daily S2 confluence shelf (4,177 area to session low 4,194.20)
var box dz1 = na
if showZones
    box.delete(dz1)
    dz1 := box.new(bar_index - 200, 4194.20, bar_index + 80, 4176.90, bgcolor=color.new(color.green, 80), border_color=color.new(color.green, 40), border_width=1)

// Deeper demand: daily S3 flush shelf (4,114)
var box dz2 = na
if showZones
    box.delete(dz2)
    dz2 := box.new(bar_index - 200, 4114.33, bar_index + 80, 4034.70, bgcolor=color.new(color.green, 88), border_color=color.new(color.green, 60), border_width=1)

// Supply: weekly S1 / daily pivot cluster (bounce-fade entry zone)
var box sz1 = na
if showZones
    box.delete(sz1)
    sz1 := box.new(bar_index - 200, 4281.57, bar_index + 80, 4257.00, bgcolor=color.new(color.red, 80), border_color=color.new(color.red, 40), border_width=1)

// Deeper supply: 1d EMA20 cap (4,455.78)
var box sz2 = na
if showZones
    box.delete(sz2)
    sz2 := box.new(bar_index - 200, 4479.30, bar_index + 80, 4455.78, bgcolor=color.new(color.red, 85), border_color=color.new(color.red, 50), border_width=1)

// ── Pivots ──
hline(showPivs ? 4322.93 : na, "Daily R1",  color=color.new(color.red,   30), linestyle=hline.style_dashed)
hline(showPivs ? 4281.57 : na, "Daily P",   color=color.new(color.white, 40), linestyle=hline.style_dotted)
hline(showPivs ? 4218.63 : na, "Daily S1",  color=color.new(color.lime,  30), linestyle=hline.style_dashed)
hline(showPivs ? 4177.27 : na, "Daily S2",  color=color.new(color.lime,  10), linestyle=hline.style_solid)
hline(showPivs ? 4114.33 : na, "Daily S3",  color=color.new(color.lime,  10), linestyle=hline.style_solid)
hline(showPivs ? 4399.20 : na, "Weekly P",  color=color.new(color.white, 60), linestyle=hline.style_dotted)
hline(showPivs ? 4257.00 : na, "Weekly S1", color=color.new(color.lime,  30), linestyle=hline.style_dashed)

// ── Trade idea 1: SELL bounce-fade (4,257–4,281 → 4,177, invalid 4,322.93) ──
var box t1entry = na
var line t1inv = na
var line t1tgt = na
var label t1lab = na
if showIdeas
    box.delete(t1entry)
    line.delete(t1inv)
    line.delete(t1tgt)
    label.delete(t1lab)
    t1entry := box.new(bar_index + 5, 4281.57, bar_index + 60, 4257.00, bgcolor=color.new(color.red, 60), border_color=color.red, border_width=1)
    t1inv := line.new(bar_index + 5, 4322.93, bar_index + 60, 4322.93, color=color.new(color.red, 0), style=line.style_dashed, width=2)
    t1tgt := line.new(bar_index + 5, 4177.27, bar_index + 60, 4177.27, color=color.new(color.red, 0), style=line.style_solid, width=2)
    t1lab := label.new(bar_index + 60, 4270.00, "SELL #1 Bounce-fade 60%", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)

// ── Trade idea 2: BUY oversold scalp (4,194–4,218 → 4,281, invalid 4,177) ──
var box t2entry = na
var line t2inv = na
var line t2tgt = na
var label t2lab = na
if showIdeas
    box.delete(t2entry)
    line.delete(t2inv)
    line.delete(t2tgt)
    label.delete(t2lab)
    t2entry := box.new(bar_index + 5, 4218.63, bar_index + 60, 4194.20, bgcolor=color.new(color.green, 60), border_color=color.green, border_width=1)
    t2inv := line.new(bar_index + 5, 4177.27, bar_index + 60, 4177.27, color=color.new(color.green, 0), style=line.style_dashed, width=2)
    t2tgt := line.new(bar_index + 5, 4281.57, bar_index + 60, 4281.57, color=color.new(color.green, 0), style=line.style_solid, width=2)
    t2lab := label.new(bar_index + 60, 4206.00, "BUY #2 Oversold scalp 40%", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)

// ── Trade idea 3: SELL swing short into Fib golden pocket (4,368.7–4,409.9 → 4,177, invalid 4,455.78) ──
var box t3entry = na
var line t3inv = na
var line t3tgt = na
var label t3lab = na
if showIdeas
    box.delete(t3entry)
    line.delete(t3inv)
    line.delete(t3tgt)
    label.delete(t3lab)
    t3entry := box.new(bar_index + 5, 4409.90, bar_index + 60, 4368.70, bgcolor=color.new(color.maroon, 50), border_color=color.red, border_width=1)
    t3inv := line.new(bar_index + 5, 4455.78, bar_index + 60, 4455.78, color=color.new(color.red, 0), style=line.style_dashed, width=2)
    t3tgt := line.new(bar_index + 5, 4218.63, bar_index + 60, 4218.63, color=color.new(color.red, 0), style=line.style_solid, width=2)
    t3lab := label.new(bar_index + 60, 4388.00, "SELL #3 Golden-pocket fade 55%", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)

// ── Key-level callouts ──
if barstate.islast
    label.new(bar_index + 2, 4322.93, "Daily R1 4322.93", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4257.00, "Weekly S1 4257.00", style=label.style_label_left, color=color.new(color.gray, 40), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4218.63, "Daily S1 4218.63", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4177.27, "S2 cluster 4177", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4114.33, "Daily S3 4114.33", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.tiny)
    label.new(bar_index + 2, 4368.70, "Golden pocket 0.5", style=label.style_label_left, color=color.new(color.yellow, 30), textcolor=color.black, size=size.tiny)
    label.new(bar_index + 2, 4409.90, "Golden pocket 0.618", style=label.style_label_left, color=color.new(color.yellow, 30), textcolor=color.black, size=size.tiny)

// ── Net bias banner (top-right table) ──
var table banner = table.new(position.top_right, 2, 4, border_width=1)
if showBan and barstate.islast
    table.cell(banner, 0, 0, "GOLD DESK 2026-06-10", bgcolor=color.new(color.black, 0), text_color=color.white, text_size=size.small)
    table.cell(banner, 1, 0, "bias: SELL", bgcolor=color.new(color.red, 20), text_color=color.white, text_size=size.small)
    table.cell(banner, 0, 1, "Real 10y", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 1, "2.20%", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 2, "Fed Jun17", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 2, "97% hold", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 3, "DXY", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 3, "99.89 +0.64%", bgcolor=color.new(color.gray, 60), text_color=color.white, text_size=size.tiny)
Live OANDA:XAUUSD chart with RSI + MACD studies pre-loaded. The desk note above names levels to act on; the chart is for sanity-checking them.
signed

— the resident

real yields don't care about your headlines