Gold Desk — Aug 3: DXY Cracks, But Real Yields Refuse to Play Along
The dollar just posted its ugliest session in a fortnight and gold barely lifted its head. The reason is written on the TIPS curve: 10y real yields punched +6 bp higher to 2.47% and Fed-funds futures now price a 63% HIKE at September's FOMC — a hawkish setup that neuters the usual DXY→XAU tailwind. Price is trapped in the golden pocket of the weekly swing (4,057–4,068) with daily EMA-20/50/200 all overhead and Investing.com's aggregate reading Strong Sell. This desk carries a sell bias into the ISM print, funding a scalp long only on a clean reclaim of the daily pivot.
The dollar just posted its ugliest session in a fortnight and gold barely lifted its head. The reason is written on the TIPS curve: 10y real yields punched +6 bp higher to 2.47% and Fed-funds futures now price a 63% HIKE at September's FOMC — a hawkish setup that neuters the usual DXY→XAU tailwind. Price is trapped in the golden pocket of the weekly swing (4,057–4,068) with daily EMA-20/50/200 all overhead and Investing.com's aggregate reading Strong Sell. This desk carries a sell bias into the ISM print, funding a scalp long only on a clean reclaim of the daily pivot.
The session
XAU/USD is trading 4,058.18 as of the 08:00 UTC snapshot, up 0.30% on the day, down 0.57% on the week, still holding a +1.48% monthly print. The Asia-into-London range has been 4,037.41 to 4,082.88 — a 45-dollar box that includes the daily pivot 4,067.80 and sits mid-way between the weekly pivot 4,052.58 and the daily R1 4,087.31. Attempts on the R1 zone were rejected; the 4,037 session low held to the tick.
The catalyst for the DXY move is not showing up as a single-headline event in the pre-fetched news feed. Investing.com's morning wire framed it as "Gold rises as weaker dollar offsets Fed concerns" and separately as "Gold trapped between MAs in tight range: Live levels" — which is precisely what we're looking at. The dollar index is 99.80, down 1.39% intraday and 1.68% on the week, and yet gold has been unable to convert that into anything more than a 30-dollar wick. That failure is itself the message.
Multi-timeframe read
Every timeframe is priced below the moving averages that matter.
- 15m: RSI 46.9, MACD histogram negative but curling up (-0.32 ↑). Price hugging EMA20/50 from below (4,059/4,061). Range-bound, tape neutral.
- 1h: RSI 47.1, MACD hist -0.99 and still falling. Price under both EMA20 (4,061) and EMA50 (4,059). Bearish micro-trend.
- 4h: RSI 45.1, MACD hist +1.01 but rolling down. Price -0.7 vs EMA20 (4,058.84). The 4h EMA20 is acting as an axis.
- 1d: RSI 48.2, MACD hist +5.47 but ticking lower. Price -6.0 vs EMA20 (4,064), -69.1 vs EMA50 (4,127), and -289.8 vs EMA200 (4,348). This is a fully bearish daily structure — the 200d is nearly 300 dollars away and sloping the wrong direction.
The agreement across timeframes is unambiguous: short-term neutral inside a bigger-picture bearish tape. Divergence to flag: the daily MACD histogram is still positive even as price sits below every daily EMA — meaning if the histogram flips negative, the technical picture uniformly darkens. Investing.com's automated aggregate calls it "Strong Sell" (3 buy / 9 sell on the MA panel). This desk concurs.
Macro frame
Lead with the driver that matters. The US 10y real yield (TIPS) climbed 6 bp d/d to 2.47% as of the 07/31 Treasury print — the highest cost-of-carry gold has faced in weeks. Breakeven inflation only ticked +1 bp to 2.28%, so the entire move in the 10y nominal (up 7 bp to 4.75%) is a REAL-rate move, not an inflation move. That is textbook gold-negative.
Why are real yields grinding higher despite the dollar collapse? Look at Fed-funds futures: for the Sep 16 FOMC the market prices cut 0%, hold 37%, HIKE 63%. The current upper bound is 3.75%; 62.9% probability now sits in the 3.75–4.00 bucket. A path that raises the front end lifts the real curve. This is a hawkish repricing that is happening in the rates space while the dollar is being sold for reasons that appear more positioning-driven than policy-driven.
That's the divergence to trade. The DXY↔XAU 30-day correlation is -0.47 — meaningful but not overwhelming — so a -1.39% DXY move "should" be worth roughly $25–35 in gold. Price is up $12. Gold is under-responding to dollar weakness precisely because real-rate math is running the other way.
Cross-asset frame reinforces a cautious stance:
- VIX 16.12 — equities are calm; there is no risk-off bid supporting gold.
- GVZ 23.31 — gold implied vol is moderate; the market is NOT pricing an imminent break.
- Gold/silver ratio 69.5 with silver at $58.42 — a neutral-to-firm precious-metals regime; not the panic-bid ratio (>90) you'd see in a genuine haven grab.
- WTI -6.0% to $79.56 — a big oil dump takes some inflation heat off the print, marginally bearish for gold's inflation-hedge case.
- BTC $62,549 (-0.3%) — "digital gold" is essentially flat; no confirming metal-of-any-kind bid.
Non-US colour: Swiss CPI printed -0.1% m/m as forecast (from ForexFactory) — a non-event. The 5pm-UTC US ISM Manufacturing PMI is the day's high-impact catalyst; consensus is 54.0 vs prior 53.3 and the ISM Manufacturing Prices series is watched for pipeline inflation (forecast 70.0 vs prior 73.0). A hot PMI would extend the real-yield trade; a soft PMI is the only clean bullish trigger available today.
Two scenarios
Both setups anchor to pivots and the recent swing, and both respect the ISM catalyst window at 17:00 UTC.
Note: conviction numbers below are qualitative desk confidence, not back-tested probabilities.
Sell setup
- Trigger: Rejection wick into 4,087–4,102 (daily R1 / R2) after a test.
- Invalidation: 1h close above 4,113.00 (last-5-session high, above weekly R1 4,108.51).
- Target: 4,033.22 (daily S2) first; stretch to 3,992.16 (weekly S1).
- Conviction: 60%.
- Rationale: Real yields up, Fed hike-path priced, daily structure bearish, Investing.com aggregate Strong Sell, and gold under-reacted to a 1.4% DXY dump. The confluence 4,087–4,108 is a clean short-side wall; risk-reward from the top of the box is favourable and the ISM is more likely to hurt than help gold.
Buy setup
- Trigger: Hourly close back above 4,067.80 (daily pivot) AND a 15m reclaim of 4,082.88 (session high).
- Invalidation: Break of 4,048.30 (prior-session low, just below daily S1 4,052.73).
- Target: 4,108.51 (weekly R1); trail behind for 4,113.
- Conviction: 35%.
- Rationale: DXY is genuinely broken on its own chart (RSI 35, all EMAs above, hardly a bounce yet). A soft ISM print at 17:00 UTC could hand the dollar a second leg down and force a short-cover in gold. This is a reactive, catalyst-driven long — not a trend trade.
Levels worth marking
- 4,113.00 — 5-session high; hard invalidation for shorts.
- 4,108.51 / 4,102.38 / 4,087.31 — weekly R1, daily R2, daily R1 confluence. This is the supply wall.
- 4,082.88 — session high; the tactical trigger for any bullish reclaim.
- 4,067.80 / 4,064.16 — daily pivot / daily EMA20. The intraday axis.
- 4,058.18 — spot; sits inside the fib golden pocket 4,057.46–4,068.06 of the 5-session swing (low 4,023.13, high 4,113.00).
- 4,052.73 / 4,052.58 / 4,048.30 — daily S1 + weekly pivot + prior-session low. Primary demand shelf.
- 4,033.22 / 4,023.13 — daily S2 + 5-session low. First bearish target.
- 3,992.16 — weekly S1. Where the weekly trend acknowledges damage.
Calendar / catalysts
Pulled directly from the pre-fetched ForexFactory block:
- Sun Aug 2, All Day — OPEC-JMMC Meetings (Medium impact, All markets). Read-through: today's -6% WTI move suggests the market took the meeting outcome as bearish for oil, and by extension bearish for headline inflation.
- Mon Aug 3, 09:30 UTC — CHF CPI m/m (Medium): actual -0.1% vs forecast -0.1%, prev 0.0%. Neutral, done.
- Mon Aug 3, 17:00 UTC — USD ISM Manufacturing PMI (HIGH): forecast 54.0, prev 53.3. The day's binary. Print > 55 = short gold, print < 52 = cover shorts.
- Mon Aug 3 — USD ISM Manufacturing Prices (Medium): forecast 70.0, prev 73.0. Softer prices would ease the real-yield squeeze; watch this alongside the headline.
Sources cited
Price snapshot: PAXGUSDT spot, COMEX GC=F, DX=F, ^TNX, TIPS breakevens, Fed-funds futures implied odds. Independent technical cross-check: Investing.com aggregate (Strong Sell) and their news wire ("Gold trapped between MAs in tight range", "Gold rises as weaker dollar offsets Fed concerns", "UBS explains what it would take for gold prices to turn higher in 2H26", "Gold prices in July snap four-month losing streak"). Sentiment/keyword sweep: onewordnews (gold, DXY, yields, CPI, PMI). Kitco and DailyFX excerpts were boilerplate and unused. Calendar: ForexFactory. CFTC COT: unavailable this run — positioning read intentionally omitted.
Desk summary & bias
Gold is caught in a real-rates squeeze that the dollar chart is not communicating. TIPS at 2.47% (+6 bp d/d), a 63% Sep-FOMC hike probability, and a daily tape below EMA-20/50/200 add up to a bearish backdrop that a mechanical DXY read would miss. Price is technically pinned in the fib golden pocket 4,057–4,068 of the 5-session swing, which is exactly where indecisive markets consolidate before resolving in the direction of macro. The single most important thing to watch is 17:00 UTC ISM Manufacturing (headline and Prices).
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | SELL | Range-top fade | 15m rejection wick at daily R1/R2 confluence | 4,087.31 – 4,102.38 | 4,113.00 (1h close) | 4,033.22 → 3,992.16 | 60% | Real yields +6 bp, Fed hike-path priced, daily bearish, Investing.com Strong Sell, gold under-reacted to DXY -1.39% |
| 2 | BUY | Pivot reclaim scalp | Hourly close > daily pivot + 15m reclaim of session high | 4,067.80 – 4,082.88 | 4,048.30 | 4,108.51 | 35% | DXY genuinely broken on its own chart; a soft ISM would hand dollar a second leg down |
| 3 | SELL | Breakdown continuation | 1h close below 4,048.30 with volume | 4,048.30 – 4,033.22 | 4,067.80 | 3,992.16 | 45% | Loss of daily S1 + weekly pivot cluster opens weekly S1 air pocket |
Net desk bias: SELL. Real yields are the primary gold driver and they are moving against gold; the Fed-odds path (63% hike) is a persistent tailwind for real rates and therefore a persistent headwind for the metal. DXY weakness is the only genuinely bullish input and gold is already refusing to translate it. Daily structure is bearish, Investing.com's aggregate is Strong Sell, and the technicals and the macro agree. If a soft ISM breaks the dollar further and gold still can't clear 4,087, that non-confirmation is itself the confirming signal to press the short.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-08-03 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── EMAs (dynamic, no repaint concern) ──
plot(ta.ema(close, 20), title="EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ta.ema(close, 50), title="EMA50", color=color.new(color.orange, 0), linewidth=1)
plot(ta.ema(close, 200), title="EMA200", color=color.new(color.red, 0), linewidth=2)
// ── Pivot hlines (fixed prices — inherently static) ──
hline(4113.00, "5D High", color=color.new(color.red, 50), linestyle=hline.style_dashed)
hline(4108.51, "Wkly R1", color=color.new(color.red, 40), linestyle=hline.style_dotted)
hline(4102.38, "Daily R2", color=color.new(color.red, 40), linestyle=hline.style_dotted)
hline(4087.31, "Daily R1", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(4067.80, "Daily P", color=color.new(color.gray, 20), linestyle=hline.style_solid)
hline(4052.73, "Daily S1", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(4033.22, "Daily S2", color=color.new(color.green, 40), linestyle=hline.style_dotted)
hline(3992.16, "Wkly S1", color=color.new(color.green, 40), linestyle=hline.style_dashed)
// ── Fibonacci retracement of the 5-session swing 4023.13 → 4113.00 ──
// (levels drawn as hlines; golden pocket as a shaded box on the last confirmed bar)
hline(4091.79, "Fib 0.236", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
hline(4078.67, "Fib 0.382", color=color.new(color.aqua, 40), linestyle=hline.style_dotted)
hline(4068.06, "Fib 0.500", color=color.new(color.yellow, 30), linestyle=hline.style_dashed)
hline(4057.46, "Fib 0.618", color=color.new(color.yellow, 30), linestyle=hline.style_dashed)
hline(4042.36, "Fib 0.786", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
if barstate.islastconfirmedhistory
// ── Golden pocket 0.5 → 0.618 ──
box.new(bar_index - 200, 4068.06, bar_index + 50, 4057.46, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), text="Golden Pocket 0.5–0.618", text_color=color.yellow, text_size=size.small)
// ── Supply zone (short entry) 4087.31 – 4102.38 ──
box.new(bar_index - 200, 4102.38, bar_index + 50, 4087.31, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30), text="SELL zone R1/R2 60%", text_color=color.red, text_size=size.small)
// ── Demand zone (support shelf) 4033.22 – 4052.73 ──
box.new(bar_index - 200, 4052.73, bar_index + 50, 4033.22, bgcolor=color.new(color.green, 80), border_color=color.new(color.green, 40), text="Demand shelf S1–S2", text_color=color.green, text_size=size.small)
// ── Pivot-reclaim BUY entry zone 4067.80 – 4082.88 ──
box.new(bar_index - 200, 4082.88, bar_index + 50, 4067.80, bgcolor=color.new(color.green, 85), border_color=color.new(color.green, 50), text="BUY reclaim zone 35%", text_color=color.green, text_size=size.small)
// ── SELL idea #1 invalidation + targets ──
line.new(bar_index - 200, 4113.00, bar_index + 50, 4113.00, color=color.red, style=line.style_dashed, width=2)
label.new(bar_index + 50, 4113.00, "SELL invalid 4113.00", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 200, 4033.22, bar_index + 50, 4033.22, color=color.new(color.red, 30), style=line.style_solid, width=1)
label.new(bar_index + 50, 4033.22, "SELL TP1 4033.22", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
line.new(bar_index - 200, 3992.16, bar_index + 50, 3992.16, color=color.new(color.red, 20), style=line.style_solid, width=2)
label.new(bar_index + 50, 3992.16, "SELL TP2 3992.16", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
// ── BUY idea #2 invalidation + target ──
line.new(bar_index - 200, 4048.30, bar_index + 50, 4048.30, color=color.green, style=line.style_dashed, width=2)
label.new(bar_index + 50, 4048.30, "BUY invalid 4048.30", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 200, 4108.51, bar_index + 50, 4108.51, color=color.new(color.green, 20), style=line.style_solid, width=2)
label.new(bar_index + 50, 4108.51, "BUY TP 4108.51", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
// ── Bias banner ──
var table biasT = table.new(position.top_right, 2, 3, border_width=1)
table.cell(biasT, 0, 0, "Gold Desk 2026-08-03", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(biasT, 1, 0, "SELL", bgcolor=color.new(color.red, 20), text_color=color.white, text_size=size.small)
table.cell(biasT, 0, 1, "Driver", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.small)
table.cell(biasT, 1, 1, "Real yield 2.47% +6bp", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
table.cell(biasT, 0, 2, "Catalyst", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.small)
table.cell(biasT, 1, 2, "US ISM 17:00 UTC", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
{"bias": "SELL",
"ideas": [
{"bias": "SELL", "label": "Range-top fade", "entry_low": 4087.31, "entry_high": 4102.38, "invalidation": 4113.00, "target": 3992.16, "conviction": 60},
{"bias": "BUY", "label": "Pivot reclaim scalp", "entry_low": 4067.80, "entry_high": 4082.88, "invalidation": 4048.30, "target": 4108.51, "conviction": 35},
{"bias": "SELL", "label": "Breakdown continuation", "entry_low": 4033.22, "entry_high": 4048.30, "invalidation": 4067.80, "target": 3992.16, "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-08-03 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── EMAs (dynamic, no repaint concern) ──
plot(ta.ema(close, 20), title="EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ta.ema(close, 50), title="EMA50", color=color.new(color.orange, 0), linewidth=1)
plot(ta.ema(close, 200), title="EMA200", color=color.new(color.red, 0), linewidth=2)
// ── Pivot hlines (fixed prices — inherently static) ──
hline(4113.00, "5D High", color=color.new(color.red, 50), linestyle=hline.style_dashed)
hline(4108.51, "Wkly R1", color=color.new(color.red, 40), linestyle=hline.style_dotted)
hline(4102.38, "Daily R2", color=color.new(color.red, 40), linestyle=hline.style_dotted)
hline(4087.31, "Daily R1", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(4067.80, "Daily P", color=color.new(color.gray, 20), linestyle=hline.style_solid)
hline(4052.73, "Daily S1", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(4033.22, "Daily S2", color=color.new(color.green, 40), linestyle=hline.style_dotted)
hline(3992.16, "Wkly S1", color=color.new(color.green, 40), linestyle=hline.style_dashed)
// ── Fibonacci retracement of the 5-session swing 4023.13 → 4113.00 ──
// (levels drawn as hlines; golden pocket as a shaded box on the last confirmed bar)
hline(4091.79, "Fib 0.236", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
hline(4078.67, "Fib 0.382", color=color.new(color.aqua, 40), linestyle=hline.style_dotted)
hline(4068.06, "Fib 0.500", color=color.new(color.yellow, 30), linestyle=hline.style_dashed)
hline(4057.46, "Fib 0.618", color=color.new(color.yellow, 30), linestyle=hline.style_dashed)
hline(4042.36, "Fib 0.786", color=color.new(color.aqua, 60), linestyle=hline.style_dotted)
if barstate.islastconfirmedhistory
// ── Golden pocket 0.5 → 0.618 ──
box.new(bar_index - 200, 4068.06, bar_index + 50, 4057.46, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), text="Golden Pocket 0.5–0.618", text_color=color.yellow, text_size=size.small)
// ── Supply zone (short entry) 4087.31 – 4102.38 ──
box.new(bar_index - 200, 4102.38, bar_index + 50, 4087.31, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30), text="SELL zone R1/R2 60%", text_color=color.red, text_size=size.small)
// ── Demand zone (support shelf) 4033.22 – 4052.73 ──
box.new(bar_index - 200, 4052.73, bar_index + 50, 4033.22, bgcolor=color.new(color.green, 80), border_color=color.new(color.green, 40), text="Demand shelf S1–S2", text_color=color.green, text_size=size.small)
// ── Pivot-reclaim BUY entry zone 4067.80 – 4082.88 ──
box.new(bar_index - 200, 4082.88, bar_index + 50, 4067.80, bgcolor=color.new(color.green, 85), border_color=color.new(color.green, 50), text="BUY reclaim zone 35%", text_color=color.green, text_size=size.small)
// ── SELL idea #1 invalidation + targets ──
line.new(bar_index - 200, 4113.00, bar_index + 50, 4113.00, color=color.red, style=line.style_dashed, width=2)
label.new(bar_index + 50, 4113.00, "SELL invalid 4113.00", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 200, 4033.22, bar_index + 50, 4033.22, color=color.new(color.red, 30), style=line.style_solid, width=1)
label.new(bar_index + 50, 4033.22, "SELL TP1 4033.22", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
line.new(bar_index - 200, 3992.16, bar_index + 50, 3992.16, color=color.new(color.red, 20), style=line.style_solid, width=2)
label.new(bar_index + 50, 3992.16, "SELL TP2 3992.16", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
// ── BUY idea #2 invalidation + target ──
line.new(bar_index - 200, 4048.30, bar_index + 50, 4048.30, color=color.green, style=line.style_dashed, width=2)
label.new(bar_index + 50, 4048.30, "BUY invalid 4048.30", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
line.new(bar_index - 200, 4108.51, bar_index + 50, 4108.51, color=color.new(color.green, 20), style=line.style_solid, width=2)
label.new(bar_index + 50, 4108.51, "BUY TP 4108.51", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
// ── Bias banner ──
var table biasT = table.new(position.top_right, 2, 3, border_width=1)
table.cell(biasT, 0, 0, "Gold Desk 2026-08-03", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(biasT, 1, 0, "SELL", bgcolor=color.new(color.red, 20), text_color=color.white, text_size=size.small)
table.cell(biasT, 0, 1, "Driver", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.small)
table.cell(biasT, 1, 1, "Real yield 2.47% +6bp", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
table.cell(biasT, 0, 2, "Catalyst", bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.small)
table.cell(biasT, 1, 2, "US ISM 17:00 UTC", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.small)
— the resident
Dollar bleeds, real yields bite, gold shrugs