Let's talk
gold August 4, 2026 · 13 min read

Gold sits on the golden pocket while the dollar collapses — and does nothing

Gold sits on the golden pocket while the dollar collapses — and does nothing


Deck: DXY just dropped 1.44% intraday. Real yields eased four basis points. Oil fell 4.5%. Gold responded with +0.03%. When the primary drivers move that hard in your favour and you don't rally, that's information. The daily is still under every EMA that matters, the Fed strip is priced 62% for a HIKE at September, and the 4h bounce is running into a stacked 4,104–4,108 resistance shelf. This desk leans SELL into strength; the golden pocket at 4,051–4,061 is where the argument gets decided.

The session

Spot PAXG prints 4,061.08 into the London handover, hugging the daily pivot (4,049.73) and the weekly pivot (4,052.58) — those two sit within four dollars of each other and price is glued to the confluence. The Asia-to-London session traded a 4,021.00 – 4,082.88 range, a $62 span; the low tagged daily S1 (4,023.47) almost to the tick, bounced, and the tape has been grinding higher on a shallow trend since.

The catalyst for the recovery isn't a gold story — it's a dollar story. DXY is off 1.44% on the day, printing 100.02 with a 4h RSI collapsed to 39.7 and MACD histogram flat. On the wires, investing.com attributes the risk-on tone to "U.S.-Iran diplomacy hopes" lifting FTSE and continental equities, with the yen also strengthening. The dollar is being sold on a de-risking-of-risk narrative and gold is refusing to bid it up. That non-reaction is the single most important line in this note.

Comex GC front-month sits at 4,120.20, a 1.46% premium to PAXG spot — a healthy contango, not a squeeze — so the paper market isn't screaming about stress either.

Multi-timeframe read

  • 15m / 1h: constructive. RSI 57 on both, price above EMA20 and EMA50 by three to six dollars, MACD histogram positive on 15m and rolling on 1h. This is the mechanical bounce off S1.
  • 4h: RSI 59, price above EMA20 by $5.3, MACD histogram still negative but curling (-0.36, ↑). A late-stage momentum flip in progress, not confirmed.
  • 1d: the tape that matters. RSI 48.7 — right on the neutral line. Price is BELOW EMA20 (-$2.3), BELOW EMA50 (-$63.3) and dramatically below EMA200 (-$284.5). Daily MACD histogram is 4.70 and rolling down. Every daily moving average is stacked above spot; you are structurally short gold on the daily chart.

The intraday charts and the daily chart do not agree, and when they don't, weight the higher timeframe. The reasonable read: this is a counter-trend intraday bounce inside a daily downtrend, and the ceiling is the 4,104–4,108 confluence noted below.

Investing.com's automated aggregate splits the difference — "Neutral" daily, but "Strong Buy" on MA5–MA200 and Buy on both RSI and MACD. That MA read is off: with 1d spot $284 below the 200 EMA it's hard to justify a Strong Buy label mechanically. Flagging the divergence — this desk trusts the EMA stack over the aggregate.

Macro frame

Lead with the real yield. The US 10y TIPS real yield is 2.43%, down four basis points on the day. That is a modest tailwind for gold — real yields are the primary carry cost of a zero-yielding asset — but it is a modest one. Ten-year breakevens are 2.27% (-1bp), and the nominal 10y is 4.70% (-5bp), consistent with a mildly dovish rates day.

The problem is the front end. Fed-funds futures for the September 16 FOMC are pricing 62% probability of a HIKE to the 3.75–4.00% range, versus 38% hold and 0% cut. That is a hawkish policy path priced into the strip, and it is fundamentally at odds with gold making new highs. A hike path lifts real yields; a real-yield lift over the next six weeks would overwhelm the four-basis-point tailwind we saw today.

DXY at 100.02 is broken on the daily — RSI 39.2, price below EMA20/50, only holding above the EMA200 at 99.37 (that is the line in the sand for the entire "weak-dollar tailwind" thesis, and it's about a point away). The 30-day DXY↔XAU daily-return correlation is -0.44, which means DXY dropping 1.44% "should" have delivered gold roughly +0.6%. It delivered +0.03%. That gap is the tell.

Cross-asset:

  • VIX 15.70 — equity risk gauge is calm; there is no fear bid for gold today.
  • GVZ 23.31 — gold implied vol is moderate, not pricing a large move; option markets aren't loading up for a breakout.
  • Gold/Silver ratio 68.6 with silver at $59.17 — the ratio is in a historically middling zone, no regime signal.
  • WTI $80.87, -4.5% — the deflationary print of the day, and materially weakens the inflation-hedge case for gold. This is why breakevens softened.
  • BTC $63,634 — "digital gold" is flat, offering no correlation trade.

The ISM Manufacturing print on Monday came in hot (55.6 vs 54.0 fcst, prev 53.3) and prices-paid at 71.1 — that is a hawkish combination that dovetails with the hike-priced Fed strip. On the news wire, Reuters/investing.com describes traders as "cautious" on Fed rate outlook amid Middle East risk, which reads as consolidation-with-a-headwind, not a launchpad.

Two scenarios

Note: conviction figures below are qualitative desk confidence, not back-tested probabilities.

Sell setup

  • Trigger: 4h rejection candle in the 4,104.72 – 4,108.51 zone (daily R2 + weekly R1 confluence). Entry into the box on a wick.
  • Invalidation: hourly close above 4,133.45 (daily R3).
  • Target: 4,049.73 (daily pivot) first, 4,023.47 (daily S1) second.
  • Conviction: 62%.
  • Rationale: Daily is under every EMA. Fed is priced 62% for a hike. Gold refused to bid on a 1.44% DXY drop today — the seller has the tape. The R1-daily / R2-weekly cluster is where the intraday bounce mechanically dies.

Buy setup

  • Trigger: 15m/1h reclaim and hold above the pivot cluster 4,049.73 – 4,052.58 after a wick into daily S1 4,023.47 (which was also today's session low at 4,021).
  • Invalidation: hourly close below 3,992.16 (weekly S1).
  • Target: 4,078.46 (daily R1) first, 4,104.72 (daily R2) second.
  • Conviction: 42%.
  • Rationale: Golden-pocket confluence and a swept liquidity low. The intraday charts and the small real-yield tailwind support a bounce trade; the daily-structure headwind is why this is a scalp, not a swing.

Levels worth marking

  • 4,133.45 — daily R3, sell-setup invalidation.
  • 4,104.72 / 4,108.51 — daily R2 + weekly R1, the primary sell zone.
  • 4,082.88 — session high; first intraday cap.
  • 4,078.46 — daily R1.
  • 4,061.08 / 4,051.32 – 4,061.32 — spot / golden pocket of the 5-session range.
  • 4,049.73 / 4,052.58 — daily pivot + weekly pivot; the argument zone.
  • 4,023.47 / 4,021.00 — daily S1 + session low; buy-setup trigger.
  • 3,992.16 — weekly S1; buy-setup invalidation.

Confluence: the daily-EMA20 sits at 4,063.35 — inside the golden pocket. That's why price is stalling here.

Calendar / catalysts

From the pre-fetched ForexFactory block:

  • Sun Aug 2 — OPEC-JMMC Meetings (Medium impact); relevant to the WTI leg that just cracked 4.5%.
  • Mon Aug 3 — CHF CPI m/m: -0.1% (in-line).
  • Mon Aug 3USD ISM Manufacturing PMI: 55.6 actual vs 54.0 fcst, prev 53.3 — a materially hot print. Hawkish for the Fed strip, dollar-supportive on the fundamentals, gold-negative on second-derivative reasoning.
  • Mon Aug 3 — USD ISM Manufacturing Prices: 71.1 vs 70.0 fcst — sticky-inflation confirmation; supports the 62% hike pricing at Sep 16.

The rest of this week's ForexFactory feed was not delivered in this run — treat forward-calendar gaps as unknown, and update off the wire.

Sources cited

Onewordnews (aggregate keyword read), investing.com (news headlines + independent technical aggregate), U.S. Treasury / FRED-style TIPS series (10y real yield), CME FedWatch-equivalent implied odds, ForexFactory (calendar), CFTC (COT unavailable this run — flagged).

Desk summary & bias

Gold is sitting inside a golden-pocket confluence (4,051–4,061) with daily EMA20 layered inside it, refusing to rally on a 1.44% DXY collapse and a 4bp real-yield decline that would normally lift the tape by half a percent. The dominant driver right now is the hawkish front end — Fed-funds futures are priced 62% for a September HIKE against a hot ISM manufacturing print — and that is inconsistent with the daily EMA stack being reclaimed from below. Technicals: intraday bounce inside a daily downtrend, ceiling at 4,104–4,108. The single most important thing to watch: whether DXY loses its EMA200 (99.37); if it does not, this gold bounce dies at the R1/R2 shelf.

# Bias Setup Trigger Entry zone Invalidation Target Conviction Why
1 SELL Bounce-fade at R1/R2 confluence 4h rejection wick in resistance shelf 4,104.72 – 4,108.51 4,133.45 (daily R3) 4,049.73 → 4,023.47 62% Non-reaction to DXY drop + daily below all EMAs + 62% hike priced
2 BUY Golden-pocket sweep-and-reclaim 1h reclaim of 4,049.73 after S1 sweep 4,021.00 – 4,049.73 3,992.16 (weekly S1) 4,078.46 → 4,104.72 42% Fib-EMA confluence + real-yield tailwind + swept liquidity
3 SELL Breakdown continuation Hourly close below 3,992.16 3,992.16 – 4,021.00 (retest) 4,049.73 3,936.23 (weekly S2) 48% Loss of weekly S1 opens the weekly pivot-below air pocket

Net desk bias: SELL. Real yields eased four basis points and DXY collapsed 1.44%, and gold went nowhere — that is the definition of exhausted demand at price. The Fed strip is priced 62% for a HIKE at September, which will re-lift real yields into a daily chart that is already under EMA20, EMA50 and (by $284) EMA200. Where the macro and the intraday technicals disagree, this desk is weighting the macro plus the daily structure; the 15m/1h/4h bullish flip is a counter-trend scalp opportunity, not a directional thesis.

(not financial advice)

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

// ── EMAs ──
ema20  = ta.ema(close, 20)
ema50  = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20,  title="EMA20",  color=color.new(color.aqua, 0),   linewidth=1)
plot(ema50,  title="EMA50",  color=color.new(color.orange, 0), linewidth=1)
plot(ema200, title="EMA200", color=color.new(color.fuchsia, 0), linewidth=2)

// ── Swing anchors (5-session range from the brief) ──
swingHigh = 4101.64
swingLow  = 4021.00
rng       = swingHigh - swingLow

// Fib retracement levels off the 5-session swing
fib236 = swingHigh - 0.236 * rng
fib382 = swingHigh - 0.382 * rng
fib500 = swingHigh - 0.500 * rng
fib618 = swingHigh - 0.618 * rng
fib786 = swingHigh - 0.786 * rng

// ── Fibonacci hlines ──
hline(fib236, "Fib 0.236", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
hline(fib382, "Fib 0.382", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
hline(fib500, "Fib 0.500", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib618, "Fib 0.618", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib786, "Fib 0.786", color=color.new(color.gray, 40), linestyle=hline.style_dotted)

// ── Pivots we care about ──
hline(4133.45, "Daily R3",     color=color.new(color.red, 30),    linestyle=hline.style_solid)
hline(4108.51, "Weekly R1",    color=color.new(color.red, 20),    linestyle=hline.style_solid)
hline(4104.72, "Daily R2",     color=color.new(color.red, 20),    linestyle=hline.style_solid)
hline(4078.46, "Daily R1",     color=color.new(color.red, 50),    linestyle=hline.style_dashed)
hline(4052.58, "Weekly P",     color=color.new(color.silver, 10), linestyle=hline.style_solid)
hline(4049.73, "Daily P",      color=color.new(color.silver, 10), linestyle=hline.style_solid)
hline(4023.47, "Daily S1",     color=color.new(color.green, 40),  linestyle=hline.style_dashed)
hline(3992.16, "Weekly S1",    color=color.new(color.green, 20),  linestyle=hline.style_solid)
hline(3936.23, "Weekly S2",    color=color.new(color.green, 30),  linestyle=hline.style_solid)

// ── One-shot draws: no repaint ──
if barstate.islastconfirmedhistory
    lb = bar_index - 120
    rb = bar_index + 40

    // ── Golden pocket (0.5 – 0.618) shaded box ──
    box.new(lb, fib500, rb, fib618, 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: R1/R2/WR1 confluence ──
    box.new(lb, 4108.51, rb, 4104.72, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30), text="SUPPLY  4104.72–4108.51  (Daily R2 + Weekly R1)", text_color=color.red, text_size=size.small)

    // ── Demand zone: session low / Daily S1 ──
    box.new(lb, 4023.47, rb, 4021.00, bgcolor=color.new(color.green, 75), border_color=color.new(color.green, 30), text="DEMAND  4021.00–4023.47  (S1 + session low)", text_color=color.green, text_size=size.small)

    // ── Weekly S1 shelf ──
    box.new(lb, 3995.00, rb, 3992.16, bgcolor=color.new(color.green, 85), border_color=color.new(color.green, 50), text="Weekly S1 shelf", text_color=color.green, text_size=size.tiny)

    // ── SELL setup 1: bounce-fade at R1/R2 confluence ──
    box.new(bar_index - 10, 4108.51, rb, 4104.72, bgcolor=color.new(color.red, 60), border_color=color.red, text="SELL  Bounce-fade  conv 62%", text_color=color.white, text_size=size.small)
    line.new(bar_index - 10, 4133.45, rb, 4133.45, color=color.new(color.red, 0),   width=2, style=line.style_dashed)
    line.new(bar_index - 10, 4049.73, rb, 4049.73, color=color.new(color.red, 30),  width=1, style=line.style_dotted)
    label.new(rb, 4133.45, "SELL invalid  4133.45",      color=color.new(color.red, 0),   style=label.style_label_left, textcolor=color.white, size=size.small)
    label.new(rb, 4049.73, "SELL target  4049.73",       color=color.new(color.red, 30),  style=label.style_label_left, textcolor=color.white, size=size.small)

    // ── BUY setup 2: golden-pocket sweep + reclaim ──
    box.new(bar_index - 10, 4049.73, rb, 4021.00, bgcolor=color.new(color.green, 70), border_color=color.green, text="BUY  Sweep + reclaim  conv 42%", text_color=color.white, text_size=size.small)
    line.new(bar_index - 10, 3992.16, rb, 3992.16, color=color.new(color.green, 0),  width=2, style=line.style_dashed)
    line.new(bar_index - 10, 4078.46, rb, 4078.46, color=color.new(color.green, 30), width=1, style=line.style_dotted)
    label.new(rb, 3992.16, "BUY invalid  3992.16",       color=color.new(color.green, 0),  style=label.style_label_left, textcolor=color.white, size=size.small)
    label.new(rb, 4078.46, "BUY target  4078.46",        color=color.new(color.green, 30), style=label.style_label_left, textcolor=color.white, size=size.small)

    // ── SELL setup 3: breakdown continuation ──
    line.new(bar_index - 10, 3936.23, rb, 3936.23, color=color.new(color.maroon, 0), width=2, style=line.style_solid)
    label.new(rb, 3936.23, "Breakdown target  3936.23 (Weekly S2)", color=color.new(color.maroon, 0), style=label.style_label_left, textcolor=color.white, size=size.small)

    // ── Callouts on the fibs ──
    label.new(rb, fib500, "0.500  " + str.tostring(fib500, "#.##"), color=color.new(color.yellow, 30), style=label.style_label_left, textcolor=color.black, size=size.tiny)
    label.new(rb, fib618, "0.618  " + str.tostring(fib618, "#.##"), color=color.new(color.yellow, 30), style=label.style_label_left, textcolor=color.black, size=size.tiny)

    // ── Net-bias banner ──
    var table biasTable = table.new(position.top_right, 2, 4, border_width=1)
    table.cell(biasTable, 0, 0, "NET BIAS",   bgcolor=color.new(color.black, 20), text_color=color.white,  text_size=size.small)
    table.cell(biasTable, 1, 0, "SELL",       bgcolor=color.new(color.red, 20),   text_color=color.white,  text_size=size.small)
    table.cell(biasTable, 0, 1, "Primary",    bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
    table.cell(biasTable, 1, 1, "Fade 4104-08",bgcolor=color.new(color.black, 40),text_color=color.white,  text_size=size.tiny)
    table.cell(biasTable, 0, 2, "Fed Sep",    bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
    table.cell(biasTable, 1, 2, "62% HIKE",   bgcolor=color.new(color.black, 40), text_color=color.orange, text_size=size.tiny)
    table.cell(biasTable, 0, 3, "10y Real",   bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
    table.cell(biasTable, 1, 3, "2.43% -4bp", bgcolor=color.new(color.black, 40), text_color=color.aqua,   text_size=size.tiny)
{"bias": "SELL",
 "ideas": [
   {"bias": "SELL", "label": "Bounce-fade at R1/R2 confluence", "entry_low": 4104.72, "entry_high": 4108.51, "invalidation": 4133.45, "target": 4049.73, "conviction": 62},
   {"bias": "BUY", "label": "Golden-pocket sweep-and-reclaim", "entry_low": 4021.00, "entry_high": 4049.73, "invalidation": 3992.16, "target": 4078.46, "conviction": 42},
   {"bias": "SELL", "label": "Breakdown continuation", "entry_low": 3992.16, "entry_high": 4021.00, "invalidation": 4049.73, "target": 3936.23, "conviction": 48}
 ]}

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-08-04 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)

// ── EMAs ──
ema20  = ta.ema(close, 20)
ema50  = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20,  title="EMA20",  color=color.new(color.aqua, 0),   linewidth=1)
plot(ema50,  title="EMA50",  color=color.new(color.orange, 0), linewidth=1)
plot(ema200, title="EMA200", color=color.new(color.fuchsia, 0), linewidth=2)

// ── Swing anchors (5-session range from the brief) ──
swingHigh = 4101.64
swingLow  = 4021.00
rng       = swingHigh - swingLow

// Fib retracement levels off the 5-session swing
fib236 = swingHigh - 0.236 * rng
fib382 = swingHigh - 0.382 * rng
fib500 = swingHigh - 0.500 * rng
fib618 = swingHigh - 0.618 * rng
fib786 = swingHigh - 0.786 * rng

// ── Fibonacci hlines ──
hline(fib236, "Fib 0.236", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
hline(fib382, "Fib 0.382", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
hline(fib500, "Fib 0.500", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib618, "Fib 0.618", color=color.new(color.yellow, 20), linestyle=hline.style_dashed)
hline(fib786, "Fib 0.786", color=color.new(color.gray, 40), linestyle=hline.style_dotted)

// ── Pivots we care about ──
hline(4133.45, "Daily R3",     color=color.new(color.red, 30),    linestyle=hline.style_solid)
hline(4108.51, "Weekly R1",    color=color.new(color.red, 20),    linestyle=hline.style_solid)
hline(4104.72, "Daily R2",     color=color.new(color.red, 20),    linestyle=hline.style_solid)
hline(4078.46, "Daily R1",     color=color.new(color.red, 50),    linestyle=hline.style_dashed)
hline(4052.58, "Weekly P",     color=color.new(color.silver, 10), linestyle=hline.style_solid)
hline(4049.73, "Daily P",      color=color.new(color.silver, 10), linestyle=hline.style_solid)
hline(4023.47, "Daily S1",     color=color.new(color.green, 40),  linestyle=hline.style_dashed)
hline(3992.16, "Weekly S1",    color=color.new(color.green, 20),  linestyle=hline.style_solid)
hline(3936.23, "Weekly S2",    color=color.new(color.green, 30),  linestyle=hline.style_solid)

// ── One-shot draws: no repaint ──
if barstate.islastconfirmedhistory
    lb = bar_index - 120
    rb = bar_index + 40

    // ── Golden pocket (0.5 – 0.618) shaded box ──
    box.new(lb, fib500, rb, fib618, 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: R1/R2/WR1 confluence ──
    box.new(lb, 4108.51, rb, 4104.72, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30), text="SUPPLY  4104.72–4108.51  (Daily R2 + Weekly R1)", text_color=color.red, text_size=size.small)

    // ── Demand zone: session low / Daily S1 ──
    box.new(lb, 4023.47, rb, 4021.00, bgcolor=color.new(color.green, 75), border_color=color.new(color.green, 30), text="DEMAND  4021.00–4023.47  (S1 + session low)", text_color=color.green, text_size=size.small)

    // ── Weekly S1 shelf ──
    box.new(lb, 3995.00, rb, 3992.16, bgcolor=color.new(color.green, 85), border_color=color.new(color.green, 50), text="Weekly S1 shelf", text_color=color.green, text_size=size.tiny)

    // ── SELL setup 1: bounce-fade at R1/R2 confluence ──
    box.new(bar_index - 10, 4108.51, rb, 4104.72, bgcolor=color.new(color.red, 60), border_color=color.red, text="SELL  Bounce-fade  conv 62%", text_color=color.white, text_size=size.small)
    line.new(bar_index - 10, 4133.45, rb, 4133.45, color=color.new(color.red, 0),   width=2, style=line.style_dashed)
    line.new(bar_index - 10, 4049.73, rb, 4049.73, color=color.new(color.red, 30),  width=1, style=line.style_dotted)
    label.new(rb, 4133.45, "SELL invalid  4133.45",      color=color.new(color.red, 0),   style=label.style_label_left, textcolor=color.white, size=size.small)
    label.new(rb, 4049.73, "SELL target  4049.73",       color=color.new(color.red, 30),  style=label.style_label_left, textcolor=color.white, size=size.small)

    // ── BUY setup 2: golden-pocket sweep + reclaim ──
    box.new(bar_index - 10, 4049.73, rb, 4021.00, bgcolor=color.new(color.green, 70), border_color=color.green, text="BUY  Sweep + reclaim  conv 42%", text_color=color.white, text_size=size.small)
    line.new(bar_index - 10, 3992.16, rb, 3992.16, color=color.new(color.green, 0),  width=2, style=line.style_dashed)
    line.new(bar_index - 10, 4078.46, rb, 4078.46, color=color.new(color.green, 30), width=1, style=line.style_dotted)
    label.new(rb, 3992.16, "BUY invalid  3992.16",       color=color.new(color.green, 0),  style=label.style_label_left, textcolor=color.white, size=size.small)
    label.new(rb, 4078.46, "BUY target  4078.46",        color=color.new(color.green, 30), style=label.style_label_left, textcolor=color.white, size=size.small)

    // ── SELL setup 3: breakdown continuation ──
    line.new(bar_index - 10, 3936.23, rb, 3936.23, color=color.new(color.maroon, 0), width=2, style=line.style_solid)
    label.new(rb, 3936.23, "Breakdown target  3936.23 (Weekly S2)", color=color.new(color.maroon, 0), style=label.style_label_left, textcolor=color.white, size=size.small)

    // ── Callouts on the fibs ──
    label.new(rb, fib500, "0.500  " + str.tostring(fib500, "#.##"), color=color.new(color.yellow, 30), style=label.style_label_left, textcolor=color.black, size=size.tiny)
    label.new(rb, fib618, "0.618  " + str.tostring(fib618, "#.##"), color=color.new(color.yellow, 30), style=label.style_label_left, textcolor=color.black, size=size.tiny)

    // ── Net-bias banner ──
    var table biasTable = table.new(position.top_right, 2, 4, border_width=1)
    table.cell(biasTable, 0, 0, "NET BIAS",   bgcolor=color.new(color.black, 20), text_color=color.white,  text_size=size.small)
    table.cell(biasTable, 1, 0, "SELL",       bgcolor=color.new(color.red, 20),   text_color=color.white,  text_size=size.small)
    table.cell(biasTable, 0, 1, "Primary",    bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
    table.cell(biasTable, 1, 1, "Fade 4104-08",bgcolor=color.new(color.black, 40),text_color=color.white,  text_size=size.tiny)
    table.cell(biasTable, 0, 2, "Fed Sep",    bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
    table.cell(biasTable, 1, 2, "62% HIKE",   bgcolor=color.new(color.black, 40), text_color=color.orange, text_size=size.tiny)
    table.cell(biasTable, 0, 3, "10y Real",   bgcolor=color.new(color.black, 40), text_color=color.silver, text_size=size.tiny)
    table.cell(biasTable, 1, 3, "2.43% -4bp", bgcolor=color.new(color.black, 40), text_color=color.aqua,   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

no-bid on a broken dollar tells you everything