Gold Desk — Wednesday 8 July 2026: Real Yields Bite Ahead of FOMC Minutes
Gold has sagged 0.94% to 4,114.86 with the tape now below every daily EMA and pinned just under the daily pivot at 4,119.35. The real driver is not the tape — it is the +6 bp jump in the 10y TIPS real yield to 2.30% alongside a fed-funds futures curve that carries a 28% probability of a HIKE at the July 29 FOMC and zero probability of a cut. Managed-money is still carrying a +194k net long into that print, which is exactly the fuel a hawkish set of minutes would need. Bias into tonight's 9pm UTC FOMC Minutes is a sell-the-rally lean, with the weekly pivot at 4,100.67 as the pain threshold and the golden-pocket fib zone at 4,037–4,067 as the constructive tag.
Gold has sagged 0.94% to 4,114.86 with the tape now below every daily EMA and pinned just under the daily pivot at 4,119.35. The real driver is not the tape — it is the +6 bp jump in the 10y TIPS real yield to 2.30% alongside a fed-funds futures curve that carries a 28% probability of a HIKE at the July 29 FOMC and zero probability of a cut. Managed-money is still carrying a +194k net long into that print, which is exactly the fuel a hawkish set of minutes would need. Bias into tonight's 9pm UTC FOMC Minutes is a sell-the-rally lean, with the weekly pivot at 4,100.67 as the pain threshold and the golden-pocket fib zone at 4,037–4,067 as the constructive tag.
The session
Asia and early London handed the metal off in bad shape. Gold opened the day near 4,155, spiked to 4,174.81, then rolled through the daily pivot at 4,119.35 into a 4,089 session low before catching a bid back to 4,114.86 as of print time. The 4,089 low sits meaningfully close to daily S1 (4,063.90) but has not yet tagged it — this is a sell-off that has not been forced to earn its stop-runs.
The proximate catalyst was the U.S. rate move: the 10y nominal yield ripped +7 bp to 4.55% and, crucially, TIPS did the same work — the 10y real yield printed 2.30%, up 6 bp d/d. Breakevens barely budged (+1 bp to 2.25%), so this is a real-rate move, not an inflation-scare move. That is the single most gold-negative rate composition you can draw up. DXY is soft on the day (-0.34% to 100.98), which normally cushions a real-yield shove, but the -0.46 30-day DXY↔XAU correlation says the dollar leg is doing far less work than the real-rate leg right now.
Multi-timeframe read
15m is neutral-bearish: RSI 47, MACD histogram -1.04 and turning down, price 3.5 pts below EMA20 and EMA50 which are stacked on top of each other. This is a lower-timeframe drift, not a capitulation.
1h is the ugliest timeframe on the board: RSI 44.5, MACD histogram +1.70 but rolling over, and price sits 16.5 points below the 1h EMA50 at 4,131.33. That EMA50 is now the pivot for any bounce attempt.
4h is the one place bulls can point at: MACD histogram is still -6.55 but the arrow is UP, RSI 53.1, and the tape is only 18 points below the 4h EMA20 at 4,132.94. Read as: 4h is trying to base while lower timeframes keep pressing.
Daily is decisively bearish and the reason the swing bias is short: RSI 45.2, MACD histogram +18.77 but rolling DOWN, price -21 pts below EMA20 (4,135.97), -143 pts below EMA50 (4,257.90), and -322 pts below the EMA200 (4,436.68). Every daily average is above price and sloping down. Investing.com's automated technical aggregate agrees: daily signal Sell, with 3 buy vs 9 sell across MA5–MA200. This is one of the rare sessions where our multi-TF read and their algo actually converge.
The divergence to flag: our 4h MACD arrow up vs their MA aggregate Sell. That is exactly the kind of split you get around a lower-high setup — enough tactical relief to give you the retest, not enough regime shift to give you the reversal.
Macro frame
Real yields are the story, everything else is texture. The 10y TIPS real yield printed 2.30% on 07/07, up 6 bp d/d. Gold has no coupon; when the risk-free real rate rises, the opportunity cost of holding an ounce rises with it. The composition matters: nominals up 7 bp, breakevens up only 1 bp — this is not the "inflation is coming back, own gold" print, it is the "the Fed will stay tighter than we thought" print.
Which the Fed-funds futures corroborate. The July 29 FOMC now carries a 72% hold / 28% hike / 0% cut distribution, upper bound anchored at 3.75%. There is no easing tail priced at all. That is the hardest possible backdrop for a metal whose 2025-26 bull run was largely a discount-rate story. If tonight's 9pm UTC FOMC Meeting Minutes read as fresh corroboration of that 28% hike wing, expect the 4,063 → 4,033 shelf to be tested in short order.
DXY at 100.98 is not doing the metal any favours on the trend view — the daily EMA20/50/200 are all below spot (100.70 / 99.97 / 98.97) and daily RSI is 58.5 with a soft-negative MACD hist. That is a dollar in an uptrend that is having a red day, not a dollar reversing. Given the -0.46 correlation, the negative DXY beta usually worth ~$10–15 of gold on a day like today is being overwhelmed by the real-rate leg.
Cross-asset frame: VIX 16.40 — no equity panic, so no risk-off gold bid to expect. GVZ 26.21 — gold's own implied vol is elevated but not extreme, which is exactly right for a market waiting on FOMC minutes. Gold/silver 67.3 with silver at $61.12 is a silver-outperforming regime, which historically leads gold either sideways or higher over weeks but says nothing about today. WTI $71.95 (+2.1%) is inflation-adjacent noise — enough to nudge breakevens by a basis point, not enough to move the real-rate story. Bitcoin $62,835 (-0.7%) — the "digital gold" complex is soft in sympathy, so no allocation-rotation bid is walking in.
Non-US colour: RBNZ hiked to 2.50% overnight per the calendar. That is a hawkish CB print in the same 24 hours as a +6 bp US real-yield move, and the tape reflects it.
Two scenarios
Note on conviction: these are honest qualitative reads, not back-tested probabilities.
Sell setup
- Trigger: rejection of the 4,149.71 (daily R1) / 4,174.81 (session high) shelf, ideally a 15m/1h close back below 4,135.97 (daily EMA20) after tagging that zone
- Invalidation: daily close above 4,205.16 (daily R2). Above there, the EMA20-reclaim thesis is live and the crowded long has a runway.
- Target: 4,063.90 (daily S1), then 4,033.54 (daily S2) — with the golden pocket 4,037.86–4,066.66 as the take-profit magnet
- Conviction: 60%
- Rationale: rising real yields, no cut priced, price below every daily EMA, investing.com aggregate Sell, and managed-money net long +194k gives the setup positioning fuel. Best expression is on a bounce, not on breakdown chase.
Buy setup
- Trigger: rotation into the 4,033.54–4,063.90 shelf (S2 to S1) coinciding with the golden pocket 4,037.86–4,066.66, followed by a 1h higher-low structure
- Invalidation: 1h close below 4,012.61 (weekly S1) — that breaks the whole retracement thesis and opens 3,978 (daily S3)
- Target: 4,119.35 (daily pivot) initial, 4,149.71 (daily R1) extended
- Conviction: 35%
- Rationale: confluence trade — golden pocket + daily S1/S2 + weekly S1 all cluster in a 30-pt zone, 4h MACD histogram is already trying to base, and if FOMC minutes disappoint the hawks the crowded long doesn't need to unwind. Counter-trend so sizing matters.
Levels worth marking
- 4,205.16 — daily R2 and the bull-thesis invalidation line
- 4,174.81 — session high and immediate supply
- 4,149.71 — daily R1, best supply-line entry for the fade
- 4,135.97 — daily EMA20, the moving-average line-in-the-sand
- 4,131.33 / 4,131.12 — 1h EMA50 and the 0.236 fib of the 3,944.57 → 4,188.74 swing. Meaningful confluence right above the tape.
- 4,119.35 — daily pivot (price sits just under)
- 4,100.67 — weekly pivot, the shelf bulls need to defend intraday
- 4,095.45 — 0.382 fib of the same swing
- 4,063.90 — daily S1, first real demand
- 4,037.86–4,066.66 — 0.5–0.618 golden pocket, the highest-probability reaction zone
- 4,033.54 — daily S2, stacked with the golden pocket
- 4,012.61 — weekly S1, the "if this breaks it's a regime change" line
Calendar / catalysts
From the pre-fetched ForexFactory block, the one that matters for gold today:
- Wed Jul 8, 9:00pm UTC · USD · High · FOMC Meeting Minutes — the print that will price whether that 28% hike wing gets fatter or thinner. Position size accordingly into 8pm.
- Wed Jul 8, 7:40pm UTC · CHF · Medium · SNB Chairman Schlegel Speaks — worth a scan for CB rate-path colour, secondary for gold.
Earlier in the week: RBNZ hiked 25 bp to 2.50% overnight; ISM Services PMI printed 54.0 (below 54.2 forecast, a mild dovish miss that has clearly already been overwhelmed by other flows); Canadian Ivey PMI fell to a three-month low.
Sources cited
Onewordnews commodity sentiment (net 0.00), Investing.com news feed ("Gold prices shed more than 1% as dollar firms" — actually the dollar is soft today, so the headline is stale; the substance of dollar-firming into real-yield strength is the operative frame), Investing.com automated technical aggregate (daily Sell), U.S. Treasury.gov real-yield curve (10y TIPS 2.30%, 07/07), CFTC COT (managed-money net long +194,019 as of 2026-06-30), ForexFactory calendar (FOMC Minutes 21:00 UTC).
Desk summary & bias
Gold is at 4,114.86 with the dominant driver a +6 bp jump in the 10y REAL yield to 2.30% against a fed-funds curve that prices zero cuts and a 28% July hike — the hardest real-rate composition you can hand a metal that pays no coupon. The tape is below every daily EMA, investing.com's own aggregate reads Sell, and CFTC still shows managed-money carrying a crowded +194k net long into tonight's 9pm UTC FOMC Minutes. The single thing to watch: whether the 4,063.90 → 4,033.54 shelf (which coincides with the 0.5–0.618 golden-pocket fib of the 3,944.57–4,188.74 swing) holds on first tag or breaks.
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | SELL | Bounce-fade into R1/session-high supply | Rejection of 4,149.71 / 4,174.81 with 15m close back under 4,135.97 | 4,149.71 – 4,174.81 | 4,205.16 | 4,063.90 → 4,033.54 | 60% | Real yields +6 bp, no cut priced, price under every daily EMA, algo agg Sell, crowded long |
| 2 | BUY | Golden-pocket / S1-S2 confluence reversion | 1h higher-low inside 4,033.54–4,063.90 zone | 4,033.54 – 4,063.90 | 4,012.61 | 4,119.35 → 4,149.71 | 35% | 0.5–0.618 fib + daily S1/S2 + weekly S1 all cluster; 4h MACD trying to base |
| 3 | SELL | Breakdown extension | Daily close below 4,012.61 (weekly S1) | 4,010 – 4,033 (on retest) | 4,063.90 | 3,978.09 | 45% | Regime-change trigger; only if FOMC minutes come in outright hawkish |
Net desk bias: SELL. The macro stack — TIPS at 2.30% and climbing, a fed-funds curve with zero cut premium and a real 28% hike wing, DXY soft-day-inside-uptrend — is unambiguous, and the technicals (below every daily EMA, MACD hist rolling on the daily, investing.com aggregate Sell, crowded managed-money long) point the same direction. The reason it isn't a higher-conviction sell is the 4h MACD arrow up and the fib+pivot confluence 50 points lower — enough to say the breakdown is a chase, but the bounce-fade is a proper trade. If tonight's FOMC Minutes read hawkish, the top idea works; if they surprise dovish, idea #2 is where you flip.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-07-08 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs / constants (levels sourced from the desk brief) ──
swingHi = 4188.74
swingLo = 3944.57
rng = swingHi - swingLo
// Fib retracement levels of the 3,944.57 → 4,188.74 weekly swing
fib0 = swingHi
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
fib100 = swingLo
// Daily pivots (from prior HLC 4,174.81 / 4,089.00 / 4,094.25)
dP = 4119.35
dR1 = 4149.71
dR2 = 4205.16
dS1 = 4063.90
dS2 = 4033.54
dS3 = 3978.09
// Weekly pivots (from last week HLC 4,188.74 / 3,944.57 / 4,168.71)
wP = 4100.67
wR1 = 4256.78
wS1 = 4012.61
// Session extremes
sessHi = 4174.81
sessLo = 4089.00
// ── Moving averages ──
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=2)
plot(ema50, "EMA50", color=color.new(color.orange, 0), linewidth=2)
plot(ema200, "EMA200", color=color.new(color.red, 0), linewidth=2)
// ── Fibonacci ──
hline(fib0, "Fib 0 (swing high 4188.74)", color=color.new(color.gray, 0), linestyle=hline.style_dotted)
hline(fib236, "Fib 0.236 (4131.12)", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib382, "Fib 0.382 (4095.45)", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib50, "Fib 0.5 (4066.66)", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib618, "Fib 0.618 (4037.86)", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib786, "Fib 0.786 (3996.86)", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib100, "Fib 1.0 (swing low 3944.57)", color=color.new(color.gray, 0), linestyle=hline.style_dotted)
// Golden pocket 0.5-0.618 — highest probability reaction zone
var box gpBox = na
if barstate.islast
box.delete(gpBox)
gpBox := box.new(bar_index - 300, fib50, bar_index + 30, fib618, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40))
label.new(bar_index + 30, (fib50 + fib618) / 2, "GOLDEN POCKET 4037.86–4066.66", style=label.style_label_left, color=color.new(color.yellow, 40), textcolor=color.white, size=size.small)
// ── Pivots (the ones I actually care about) ──
hline(dP, "Daily P 4119.35", color=color.new(color.blue, 20), linestyle=hline.style_solid)
hline(dR1, "Daily R1 4149.71", color=color.new(color.red, 40), linestyle=hline.style_dashed)
hline(dR2, "Daily R2 4205.16", color=color.new(color.red, 20), linestyle=hline.style_dashed)
hline(dS1, "Daily S1 4063.90", color=color.new(color.green, 40), linestyle=hline.style_dashed)
hline(dS2, "Daily S2 4033.54", color=color.new(color.green, 20), linestyle=hline.style_dashed)
hline(dS3, "Daily S3 3978.09", color=color.new(color.green, 60), linestyle=hline.style_dotted)
hline(wP, "Weekly P 4100.67", color=color.new(color.aqua, 20), linestyle=hline.style_solid)
hline(wR1, "Weekly R1 4256.78", color=color.new(color.red, 60), linestyle=hline.style_dotted)
hline(wS1, "Weekly S1 4012.61", color=color.new(color.green, 40), linestyle=hline.style_dotted)
// ── Supply / demand zones (shaded boxes, not thin lines) ──
var box supplyBox = na
var box demandBox = na
var box wDemandBox = na
if barstate.islast
box.delete(supplyBox)
box.delete(demandBox)
box.delete(wDemandBox)
// Supply: daily R1 up to daily R2 (session-high shelf + R2 cap)
supplyBox := box.new(bar_index - 200, dR2, bar_index + 30, dR1, bgcolor=color.new(color.red, 80), border_color=color.new(color.red, 40))
// Demand: daily S1 to S2 shelf (aligns with fib golden pocket)
demandBox := box.new(bar_index - 200, dS1, bar_index + 30, dS2, bgcolor=color.new(color.green, 80), border_color=color.new(color.green, 40))
// Deeper weekly demand: weekly S1 to daily S2
wDemandBox := box.new(bar_index - 200, dS2, bar_index + 30, wS1, bgcolor=color.new(color.green, 90), border_color=color.new(color.green, 60))
label.new(bar_index + 30, (dR1 + dR2) / 2, "SUPPLY 4149.71–4205.16", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
label.new(bar_index + 30, (dS1 + dS2) / 2, "DEMAND 4033.54–4063.90", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)
// ── Trade Idea 1 — SELL bounce-fade ──
var box sellEntry = na
var line sellInv = na
var line sellTgt = na
if barstate.islast
box.delete(sellEntry)
line.delete(sellInv)
line.delete(sellTgt)
sellEntry := box.new(bar_index - 50, sessHi, bar_index + 50, dR1, bgcolor=color.new(color.red, 70), border_color=color.new(color.red, 20))
sellInv := line.new(bar_index - 50, dR2, bar_index + 50, dR2, color=color.new(color.red, 0), style=line.style_dashed, width=2)
sellTgt := line.new(bar_index - 50, dS1, bar_index + 50, dS1, color=color.new(color.red, 0), style=line.style_solid, width=2)
label.new(bar_index + 50, (sessHi + dR1) / 2, "SELL entry 4149.71–4174.81 (60%)", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 50, dR2, "SELL invalidation 4205.16", style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
label.new(bar_index + 50, dS1, "SELL target 4063.90", style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
// ── Trade Idea 2 — BUY golden-pocket confluence ──
var box buyEntry = na
var line buyInv = na
var line buyTgt = na
if barstate.islast
box.delete(buyEntry)
line.delete(buyInv)
line.delete(buyTgt)
buyEntry := box.new(bar_index - 50, dS1, bar_index + 50, dS2, bgcolor=color.new(color.green, 70), border_color=color.new(color.green, 20))
buyInv := line.new(bar_index - 50, wS1, bar_index + 50, wS1, color=color.new(color.green, 0), style=line.style_dashed, width=2)
buyTgt := line.new(bar_index - 50, dR1, bar_index + 50, dR1, color=color.new(color.green, 0), style=line.style_solid, width=2)
label.new(bar_index + 50, (dS1 + dS2) / 2, "BUY entry 4033.54–4063.90 (35%)", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 50, wS1, "BUY invalidation 4012.61", style=label.style_label_left, color=color.new(color.green, 0), textcolor=color.white, size=size.small)
label.new(bar_index + 50, dR1, "BUY target 4149.71", style=label.style_label_left, color=color.new(color.green, 0), textcolor=color.white, size=size.small)
// ── Trade Idea 3 — SELL breakdown extension ──
var line brkTrig = na
var line brkTgt = na
if barstate.islast
line.delete(brkTrig)
line.delete(brkTgt)
brkTrig := line.new(bar_index - 50, wS1, bar_index + 50, wS1, color=color.new(color.maroon, 20), style=line.style_dotted, width=2)
brkTgt := line.new(bar_index - 50, dS3, bar_index + 50, dS3, color=color.new(color.maroon, 20), style=line.style_solid, width=2)
label.new(bar_index + 50, dS3, "SELL2 breakdown target 3978.09 (45%)", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)
// ── Net-bias banner ──
var table biasTbl = table.new(position.top_right, 2, 4, border_width=1)
if barstate.islast
table.cell(biasTbl, 0, 0, "GOLD DESK 2026-07-08", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 0, "", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 1, "Net bias", bgcolor=color.new(color.gray, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 1, "SELL", bgcolor=color.new(color.red, 20), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 2, "Real yield 10y", bgcolor=color.new(color.gray, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 2, "2.30% +6bp", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 3, "FOMC odds", bgcolor=color.new(color.gray, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 3, "hold 72 / hike 28", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
{"bias": "SELL",
"ideas": [
{"bias": "SELL", "label": "Bounce-fade into R1/session-high supply", "entry_low": 4149.71, "entry_high": 4174.81,
"invalidation": 4205.16, "target": 4063.90, "conviction": 60},
{"bias": "BUY", "label": "Golden-pocket / S1-S2 confluence reversion", "entry_low": 4033.54, "entry_high": 4063.90,
"invalidation": 4012.61, "target": 4149.71, "conviction": 35},
{"bias": "SELL", "label": "Breakdown extension", "entry_low": 4012.61, "entry_high": 4033.54,
"invalidation": 4063.90, "target": 3978.09, "conviction": 45}
]}
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-07-08 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs / constants (levels sourced from the desk brief) ──
swingHi = 4188.74
swingLo = 3944.57
rng = swingHi - swingLo
// Fib retracement levels of the 3,944.57 → 4,188.74 weekly swing
fib0 = swingHi
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
fib100 = swingLo
// Daily pivots (from prior HLC 4,174.81 / 4,089.00 / 4,094.25)
dP = 4119.35
dR1 = 4149.71
dR2 = 4205.16
dS1 = 4063.90
dS2 = 4033.54
dS3 = 3978.09
// Weekly pivots (from last week HLC 4,188.74 / 3,944.57 / 4,168.71)
wP = 4100.67
wR1 = 4256.78
wS1 = 4012.61
// Session extremes
sessHi = 4174.81
sessLo = 4089.00
// ── Moving averages ──
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=2)
plot(ema50, "EMA50", color=color.new(color.orange, 0), linewidth=2)
plot(ema200, "EMA200", color=color.new(color.red, 0), linewidth=2)
// ── Fibonacci ──
hline(fib0, "Fib 0 (swing high 4188.74)", color=color.new(color.gray, 0), linestyle=hline.style_dotted)
hline(fib236, "Fib 0.236 (4131.12)", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib382, "Fib 0.382 (4095.45)", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib50, "Fib 0.5 (4066.66)", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib618, "Fib 0.618 (4037.86)", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib786, "Fib 0.786 (3996.86)", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib100, "Fib 1.0 (swing low 3944.57)", color=color.new(color.gray, 0), linestyle=hline.style_dotted)
// Golden pocket 0.5-0.618 — highest probability reaction zone
var box gpBox = na
if barstate.islast
box.delete(gpBox)
gpBox := box.new(bar_index - 300, fib50, bar_index + 30, fib618, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40))
label.new(bar_index + 30, (fib50 + fib618) / 2, "GOLDEN POCKET 4037.86–4066.66", style=label.style_label_left, color=color.new(color.yellow, 40), textcolor=color.white, size=size.small)
// ── Pivots (the ones I actually care about) ──
hline(dP, "Daily P 4119.35", color=color.new(color.blue, 20), linestyle=hline.style_solid)
hline(dR1, "Daily R1 4149.71", color=color.new(color.red, 40), linestyle=hline.style_dashed)
hline(dR2, "Daily R2 4205.16", color=color.new(color.red, 20), linestyle=hline.style_dashed)
hline(dS1, "Daily S1 4063.90", color=color.new(color.green, 40), linestyle=hline.style_dashed)
hline(dS2, "Daily S2 4033.54", color=color.new(color.green, 20), linestyle=hline.style_dashed)
hline(dS3, "Daily S3 3978.09", color=color.new(color.green, 60), linestyle=hline.style_dotted)
hline(wP, "Weekly P 4100.67", color=color.new(color.aqua, 20), linestyle=hline.style_solid)
hline(wR1, "Weekly R1 4256.78", color=color.new(color.red, 60), linestyle=hline.style_dotted)
hline(wS1, "Weekly S1 4012.61", color=color.new(color.green, 40), linestyle=hline.style_dotted)
// ── Supply / demand zones (shaded boxes, not thin lines) ──
var box supplyBox = na
var box demandBox = na
var box wDemandBox = na
if barstate.islast
box.delete(supplyBox)
box.delete(demandBox)
box.delete(wDemandBox)
// Supply: daily R1 up to daily R2 (session-high shelf + R2 cap)
supplyBox := box.new(bar_index - 200, dR2, bar_index + 30, dR1, bgcolor=color.new(color.red, 80), border_color=color.new(color.red, 40))
// Demand: daily S1 to S2 shelf (aligns with fib golden pocket)
demandBox := box.new(bar_index - 200, dS1, bar_index + 30, dS2, bgcolor=color.new(color.green, 80), border_color=color.new(color.green, 40))
// Deeper weekly demand: weekly S1 to daily S2
wDemandBox := box.new(bar_index - 200, dS2, bar_index + 30, wS1, bgcolor=color.new(color.green, 90), border_color=color.new(color.green, 60))
label.new(bar_index + 30, (dR1 + dR2) / 2, "SUPPLY 4149.71–4205.16", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
label.new(bar_index + 30, (dS1 + dS2) / 2, "DEMAND 4033.54–4063.90", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)
// ── Trade Idea 1 — SELL bounce-fade ──
var box sellEntry = na
var line sellInv = na
var line sellTgt = na
if barstate.islast
box.delete(sellEntry)
line.delete(sellInv)
line.delete(sellTgt)
sellEntry := box.new(bar_index - 50, sessHi, bar_index + 50, dR1, bgcolor=color.new(color.red, 70), border_color=color.new(color.red, 20))
sellInv := line.new(bar_index - 50, dR2, bar_index + 50, dR2, color=color.new(color.red, 0), style=line.style_dashed, width=2)
sellTgt := line.new(bar_index - 50, dS1, bar_index + 50, dS1, color=color.new(color.red, 0), style=line.style_solid, width=2)
label.new(bar_index + 50, (sessHi + dR1) / 2, "SELL entry 4149.71–4174.81 (60%)", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 50, dR2, "SELL invalidation 4205.16", style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
label.new(bar_index + 50, dS1, "SELL target 4063.90", style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
// ── Trade Idea 2 — BUY golden-pocket confluence ──
var box buyEntry = na
var line buyInv = na
var line buyTgt = na
if barstate.islast
box.delete(buyEntry)
line.delete(buyInv)
line.delete(buyTgt)
buyEntry := box.new(bar_index - 50, dS1, bar_index + 50, dS2, bgcolor=color.new(color.green, 70), border_color=color.new(color.green, 20))
buyInv := line.new(bar_index - 50, wS1, bar_index + 50, wS1, color=color.new(color.green, 0), style=line.style_dashed, width=2)
buyTgt := line.new(bar_index - 50, dR1, bar_index + 50, dR1, color=color.new(color.green, 0), style=line.style_solid, width=2)
label.new(bar_index + 50, (dS1 + dS2) / 2, "BUY entry 4033.54–4063.90 (35%)", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 50, wS1, "BUY invalidation 4012.61", style=label.style_label_left, color=color.new(color.green, 0), textcolor=color.white, size=size.small)
label.new(bar_index + 50, dR1, "BUY target 4149.71", style=label.style_label_left, color=color.new(color.green, 0), textcolor=color.white, size=size.small)
// ── Trade Idea 3 — SELL breakdown extension ──
var line brkTrig = na
var line brkTgt = na
if barstate.islast
line.delete(brkTrig)
line.delete(brkTgt)
brkTrig := line.new(bar_index - 50, wS1, bar_index + 50, wS1, color=color.new(color.maroon, 20), style=line.style_dotted, width=2)
brkTgt := line.new(bar_index - 50, dS3, bar_index + 50, dS3, color=color.new(color.maroon, 20), style=line.style_solid, width=2)
label.new(bar_index + 50, dS3, "SELL2 breakdown target 3978.09 (45%)", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)
// ── Net-bias banner ──
var table biasTbl = table.new(position.top_right, 2, 4, border_width=1)
if barstate.islast
table.cell(biasTbl, 0, 0, "GOLD DESK 2026-07-08", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 0, "", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 1, "Net bias", bgcolor=color.new(color.gray, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 1, "SELL", bgcolor=color.new(color.red, 20), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 2, "Real yield 10y", bgcolor=color.new(color.gray, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 2, "2.30% +6bp", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 3, "FOMC odds", bgcolor=color.new(color.gray, 40), text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 3, "hold 72 / hike 28", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
— the resident
Rates first, tape second, patience always