Gold rips into NFP with real yields against it — desk fades the extension
Spot gold has ripped to $4,286 on a 3.1% intraday move, printing a session high at $4,296.98 as Middle East risk offsets a firmer US real-yield backdrop. The 10y TIPS yield sits at 2.43%, up 2 bp on the day, and fed-funds futures now price a 55% probability of a HIKE at the September 16 FOMC — both of these are, textbook, a gold headwind. That the market is ignoring them says one thing: this is a geopolitical/positioning bid, not a rates bid. The 4h RSI at 76.7 into a Non-Farm Payrolls print is the tell. Bias into NFP is a lean-fade of the extension.
Spot gold has ripped to $4,286 on a 3.1% intraday move, printing a session high at $4,296.98 as Middle East risk offsets a firmer US real-yield backdrop. The 10y TIPS yield sits at 2.43%, up 2 bp on the day, and fed-funds futures now price a 55% probability of a HIKE at the September 16 FOMC — both of these are, textbook, a gold headwind. That the market is ignoring them says one thing: this is a geopolitical/positioning bid, not a rates bid. The 4h RSI at 76.7 into a Non-Farm Payrolls print is the tell. Bias into NFP is a lean-fade of the extension.
The session
Gold opened Asia bid and never gave the tape back. PAXG spot printed a session low at 4,142.77 and has since spent the London handover pinned between 4,270 and the session high at 4,296.98. That's a 154-dollar range in one session — the sort of move that normally accompanies a rates repricing, but the rates tape isn't corroborating. 10y nominal is only -2 bp on ^TNX, 10y REAL is actually +2 bp, and DXY is only -0.22% at 99.96. The driver, per investing.com's headline flow, is "Gold rises as Middle East risks offset steady dollar ahead of payrolls" — this is a risk-premium bid layered on top of a benign dollar tape, not a real-yield-led rally.
COMEX futures (GC front-month) are trading at 4,343.30, a +1.32% premium to spot. That's an unusually wide basis and it tells you the paper market is stretched long into the payrolls print — worth flagging because that kind of premium tends to compress hard if the number disappoints the bull thesis.
Multi-timeframe read
- 15m: RSI 66, MACD histogram positive but rolling (0.59 ↓). Price is only $12 above EMA20 and $25 above EMA50 — momentum is fading at the top of the range.
- 1h: RSI 63, MACD hist +3.49 and still up. Price sits $27 above EMA20 and $57 above EMA50 — trend intact, no divergence yet.
- 4h: RSI 76.7 (overbought), MACD histogram +4.49 and rolling over (↓). Price is $79 above EMA20. This is the timeframe screaming caution.
- 1d: RSI 66, MACD histogram +28.6 and rising. Price is $169 above EMA20, $145 above EMA50, but still $57 BELOW the daily EMA200 at 4,343.32 — that's the single most important overhead level on the chart.
The timeframes agree that trend is up; they disagree on stretch. Daily wants more, 4h says the tape is exhausted, 15m is bleeding energy. The confluence read: today's move is a spike into a well-known resistance shelf, not a fresh breakout. Investing.com's automated aggregate reads Strong Buy (12 buy / 0 sell across MA5–MA200) — I disagree at this level for this session. Their aggregate is a trend-following instrument; it's late to a stretched tape by design.
Macro frame
Lead with the real yield, because it's the driver: US 10y TIPS at 2.43%, +2 bp d/d. A rising real yield is a mechanical headwind for gold — higher real return on a zero-coupon substitute makes the metal relatively more expensive to hold. Breakevens are +4 bp to 2.26% and the nominal 10y (Treasury par) is +6 bp to 4.69%. So the composition of today's rates move is: inflation expectations doing more work than real yields, but real yields still leaning against gold.
Fed-funds futures for the September 16 FOMC price a 0% cut, 45% hold, 55% HIKE, with the modal target range moving from 3.50–3.75 (44.9%) to 3.75–4.00 (55.1%). That's a hawkish policy path — and a hawkish path is what's pushing real yields up. In the ordinary transmission, that combination sells gold. It isn't today.
DXY at 99.96 is -0.22% intraday but +0.16% on the week; the 30-day daily-return correlation between DXY and XAU is -0.39 (meaningful but not dominant). Today the dollar isn't the driver — DXY 1h RSI is 60.9 and above its rising EMAs, so the dollar is quietly bid even as gold rips.
Cross-asset check: VIX 15.30 is placid — this is not an equity risk-off bid for gold. GVZ (gold implied vol) at 24.86 is elevated versus the VIX ratio, meaning the options market IS pricing a real gold move around payrolls. Gold/silver ratio 66.9 with silver at $64 shows a broad precious-metals bid, not a defensive gold-only bid. WTI at $77.93 is climbing on the same Middle East risk headline that's bidding gold — the correlation is a giveaway. BTC flat at $64,260 says "digital gold" is not participating; today's bid is a physical/geopolitical bid, not a debasement bid.
Two scenarios
Both convictions below are qualitative desk reads, not back-tested probabilities.
Sell setup
- Trigger: rejection at daily R1 4,290.35 / session high 4,296.98 — specifically, a 15m close back under 4,274 (EMA20) after tagging 4,290+.
- Invalidation: 15m close above 4,296.98 that holds for two candles (opens the daily EMA200 at 4,343.32).
- Target: first stop daily pivot 4,255.36, then the golden-pocket zone 4,201.68–4,219.88, extension to daily S1 4,213.73.
- Conviction: 60%
- Rationale: 4h RSI at 76.7 with the MACD histogram rolling, price stretched $79 above 4h EMA20, and a COMEX basis of +1.32% flags a paper market leaning long into a binary event (NFP). The macro (real yields +2 bp, 55% hike odds) is a mechanical headwind, so the burden of proof is on the bulls to hold R1 through the print.
Buy setup
- Trigger: clean 1h close above 4,296.98, ideally on an NFP miss (soft print) that pulls real yields lower.
- Invalidation: 1h close back below 4,259.79 (1h EMA20) — confirms failed breakout.
- Target: daily R2 4,331.98, then daily EMA200 confluence at 4,343.32 (also the current COMEX futures print), stretch to daily R3 4,366.97 / investing.com's flagged $4,369 resistance.
- Conviction: 40%
- Rationale: The daily trend is intact and the aggregate technical read is Strong Buy. If NFP prints soft (below 85K forecast) and real yields lean back, the 55%-hike Fed pricing unwinds fast and gold catches a rates tailwind on top of the existing geopolitical bid. But you need the catalyst — chasing here without it is fading your own trigger.
Levels worth marking
Overhead (nearest first):
- 4,290.35 — daily R1 (session pivot, in play now)
- 4,296.98 — session high (line in the sand for the fade)
- 4,331.98 — daily R2
- 4,343.32 — daily EMA200 + COMEX futures print (major confluence)
- 4,366.97 / ~4,369 — daily R3 and investing.com's cited resistance
Below (nearest first):
- 4,274.06 — 15m EMA20 (first support)
- 4,255.36 — daily pivot
- 4,238.07 — 0.382 fib of session range
- 4,213.73 — daily S1
- 4,201.68–4,219.88 — 0.5–0.618 golden pocket of session range
- 4,178.74 — daily S2
- 4,168.93 — weekly R2 (should now act as support if trend holds)
Calendar / catalysts
Today's tape is dominated by the US Non-Farm Payrolls print (forecast 85K vs prev 57K), Unemployment Rate (forecast 4.2%, prev 4.2%), and Average Hourly Earnings m/m (forecast 0.3%). A hot NFP plus firm AHE reinforces the 55%-hike Fed pricing and should sell gold; a soft NFP does the opposite and is the buy-setup trigger. Canadian jobs hit at the same time (Employment Change forecast 17.8K, Unemployment 6.5%), relevant for USDCAD and secondarily for the dollar tape. Ivey PMI (CAD) at 5pm and OPEC-JMMC from earlier in the week (Aug 2) are peripheral for gold.
Sources cited
- investing.com — technical aggregate (Strong Buy), $4,369 resistance flag, headline flow ("Middle East risks offset steady dollar")
- ForexFactory — economic calendar (NFP, AHE, Unemployment, Canadian jobs, Ivey PMI, OPEC-JMMC)
- US Treasury — 10y TIPS real yield (2.43%), 10y nominal
- CME fed-funds futures — Sep 16 FOMC implied odds (55% hike / 45% hold)
- COMEX — GC front-month futures print vs PAXG spot basis
- onewordnews query — headline sentiment on gold/DXY/yields/CPI/PMI
- CFTC COT — unavailable this run (not cited)
Desk summary & bias
Gold at $4,286 is ripping on a Middle East risk bid into an NFP print, but the macro is quietly leaning against it: real yields are up 2 bp, fed-funds futures price a 55% hike at September's FOMC, and DXY is bid on the 1h despite being red intraday. The most important thing to watch is the reaction at daily R1 4,290.35 / session high 4,296.98 — if it fails, we get a healthy retrace into the 4,255 pivot and possibly the 4,202–4,220 golden pocket; if a soft NFP snaps it, the daily EMA200 at 4,343.32 (with the COMEX futures already there) is the magnet. 4h RSI at 76.7 with a rolling MACD histogram and a +1.32% COMEX basis says the paper market is leaning long into the print — that's the setup for a fade unless the print rescues it.
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | SELL | Bounce-fade at R1 | 15m close back under 4,274 after tagging R1/session high | 4,286–4,297 | 4,296.98 (2-candle 15m close above) | 4,255.36 → 4,213.73 | 60% | 4h RSI 76.7, MACD rolling, COMEX basis +1.32%, real yields +2 bp, 55% hike odds — headwind stack into NFP |
| 2 | BUY | Breakout on NFP miss | 1h close > 4,296.98 on soft payrolls | 4,297–4,310 | 1h close < 4,259.79 (1h EMA20) | 4,331.98 → 4,343.32 | 40% | Daily trend intact, aggregate Strong Buy; needs the catalyst — a soft print collapses hike odds and adds a rates tailwind to the geo bid |
| 3 | SELL | Swing fade into daily EMA200 | Rejection at 4,343 EMA200 / futures confluence | 4,340–4,355 | Daily close > 4,366.97 (R3) | 4,213.73 → 4,168.93 (weekly R2) | 55% | Daily EMA200 sits $57 above; historical price memory + confluence with GC print makes it the most reliable overhead reaction zone in the tape |
Net desk bias: SELL (tactical, into NFP)
Real yields are up, the Fed path is pricing a HIKE, DXY is quietly bid, and gold is running on geopolitics with a 4h RSI at 76.7 and a stretched COMEX basis. The macro says fade and the 4h technicals agree; the daily trend says be patient. I'm weighting the 4h + macro over the daily-trend signal because the setup is event-driven at overbought — that combination historically resolves against the crowd. If NFP comes in soft and real yields collapse, the buy setup activates and I flip; until the trigger, the lean is the fade.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-08-07 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── EMAs (static series, safe in global scope) ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, title="EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ema50, title="EMA50", color=color.new(color.orange, 0), linewidth=1)
plot(ema200, title="EMA200", color=color.new(color.red, 0), linewidth=2)
// ── Session-range swing (fib anchor) ──
swingHi = 4296.98
swingLo = 4142.77
rng = swingHi - swingLo
// ── Fib levels from session range ──
f236 = swingHi - rng * 0.236
f382 = swingHi - rng * 0.382
f500 = swingHi - rng * 0.500
f618 = swingHi - rng * 0.618
f786 = swingHi - rng * 0.786
hline(f236, "Fib 0.236", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f382, "Fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f500, "Fib 0.500", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f618, "Fib 0.618", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f786, "Fib 0.786", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
// ── Pivots (static hlines) ──
hline(4290.35, "Daily R1", color=color.new(color.red, 40), linestyle=hline.style_solid)
hline(4331.98, "Daily R2", color=color.new(color.red, 50), linestyle=hline.style_dashed)
hline(4366.97, "Daily R3", color=color.new(color.red, 60), linestyle=hline.style_dashed)
hline(4255.36, "Daily P", color=color.new(color.silver, 30), linestyle=hline.style_solid)
hline(4213.73, "Daily S1", color=color.new(color.green, 40), linestyle=hline.style_solid)
hline(4178.74, "Daily S2", color=color.new(color.green, 50), linestyle=hline.style_dashed)
hline(4168.93, "Weekly R2", color=color.new(color.green, 60), linestyle=hline.style_dotted)
hline(4343.32, "Daily EMA200 confluence", color=color.new(color.fuchsia, 20), linestyle=hline.style_solid)
// ── One-shot drawings on last confirmed bar (no repaint) ──
if barstate.islastconfirmedhistory
bi = bar_index
// ── Golden pocket (0.5–0.618) ──
box.new(bi - 120, f500, bi + 40, f618, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), border_width=1)
label.new(bi + 40, (f500 + f618) / 2, "Golden pocket 4201.7–4219.9", style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
// ── Supply zone (fade zone at R1 / session high) ──
box.new(bi - 120, 4296.98, bi + 40, 4286.54, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30), border_width=1)
label.new(bi + 40, 4291.76, "Supply 4286–4297 (R1 / session high)", style=label.style_label_left, color=color.new(color.red, 60), textcolor=color.white, size=size.small)
// ── Supply zone 2 (daily EMA200 + COMEX futures confluence) ──
box.new(bi - 120, 4355.0, bi + 40, 4340.0, bgcolor=color.new(color.red, 80), border_color=color.new(color.red, 40), border_width=1)
label.new(bi + 40, 4347.5, "Supply 4340–4355 (EMA200 + GC=F)", style=label.style_label_left, color=color.new(color.red, 60), textcolor=color.white, size=size.small)
// ── Demand zone (S1 / weekly R2 confluence) ──
box.new(bi - 120, 4213.73, bi + 40, 4168.93, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 40), border_width=1)
label.new(bi + 40, 4191.33, "Demand 4168.9–4213.7 (S1 / wR2)", style=label.style_label_left, color=color.new(color.green, 60), textcolor=color.white, size=size.small)
// ── Trade Idea #1 — SELL bounce-fade at R1 ──
box.new(bi - 60, 4297.0, bi + 60, 4286.0, bgcolor=color.new(color.red, 70), border_color=color.red, border_width=1)
line.new(bi - 60, 4296.98, bi + 60, 4296.98, color=color.red, style=line.style_dashed, width=1)
line.new(bi - 60, 4213.73, bi + 60, 4213.73, color=color.new(color.red, 30), style=line.style_solid, width=1)
label.new(bi + 60, 4297.0, "SELL #1 invalidation 4296.98", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
label.new(bi + 60, 4213.73, "SELL #1 target 4213.73 (60%)", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
// ── Trade Idea #2 — BUY breakout on NFP miss ──
box.new(bi - 60, 4310.0, bi + 60, 4297.0, bgcolor=color.new(color.green, 70), border_color=color.green, border_width=1)
line.new(bi - 60, 4259.79, bi + 60, 4259.79, color=color.new(color.green, 30), style=line.style_dashed, width=1)
line.new(bi - 60, 4343.32, bi + 60, 4343.32, color=color.new(color.green, 30), style=line.style_solid, width=1)
label.new(bi + 60, 4310.0, "BUY #2 trigger 4297+ target 4343 (40%)", style=label.style_label_left, color=color.new(color.green, 50), textcolor=color.white, size=size.small)
// ── Trade Idea #3 — SELL swing fade at EMA200/futures ──
line.new(bi - 60, 4366.97, bi + 60, 4366.97, color=color.new(color.red, 20), style=line.style_dashed, width=1)
line.new(bi - 60, 4168.93, bi + 60, 4168.93, color=color.new(color.red, 30), style=line.style_solid, width=1)
label.new(bi + 60, 4366.97, "SELL #3 invalidation 4366.97 (55%)", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
// ── Net-bias banner ──
var table biasTable = table.new(position.top_right, 2, 4, bgcolor=color.new(color.black, 20), border_width=1, border_color=color.new(color.white, 60))
table.cell(biasTable, 0, 0, "NET DESK BIAS", bgcolor=color.new(color.red, 30), text_color=color.white, text_size=size.normal)
table.cell(biasTable, 1, 0, "SELL (tactical)", bgcolor=color.new(color.red, 30), text_color=color.white, text_size=size.normal)
table.cell(biasTable, 0, 1, "Real yield 10y", text_color=color.white, text_size=size.small)
table.cell(biasTable, 1, 1, "2.43% (+2bp)", text_color=color.white, text_size=size.small)
table.cell(biasTable, 0, 2, "Fed Sep16 hike odds", text_color=color.white, text_size=size.small)
table.cell(biasTable, 1, 2, "55%", text_color=color.white, text_size=size.small)
table.cell(biasTable, 0, 3, "4h RSI", text_color=color.white, text_size=size.small)
table.cell(biasTable, 1, 3, "76.7 (OB)", text_color=color.white, text_size=size.small)
{"bias": "SELL",
"ideas": [
{"bias": "SELL", "label": "Bounce-fade at R1", "entry_low": 4286, "entry_high": 4297,
"invalidation": 4297, "target": 4214, "conviction": 60},
{"bias": "BUY", "label": "Breakout on NFP miss", "entry_low": 4297, "entry_high": 4310,
"invalidation": 4260, "target": 4343, "conviction": 40},
{"bias": "SELL", "label": "Swing fade into EMA200/futures", "entry_low": 4340, "entry_high": 4355,
"invalidation": 4367, "target": 4169, "conviction": 55}
]}
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-07 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── EMAs (static series, safe in global scope) ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, title="EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ema50, title="EMA50", color=color.new(color.orange, 0), linewidth=1)
plot(ema200, title="EMA200", color=color.new(color.red, 0), linewidth=2)
// ── Session-range swing (fib anchor) ──
swingHi = 4296.98
swingLo = 4142.77
rng = swingHi - swingLo
// ── Fib levels from session range ──
f236 = swingHi - rng * 0.236
f382 = swingHi - rng * 0.382
f500 = swingHi - rng * 0.500
f618 = swingHi - rng * 0.618
f786 = swingHi - rng * 0.786
hline(f236, "Fib 0.236", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f382, "Fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f500, "Fib 0.500", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f618, "Fib 0.618", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f786, "Fib 0.786", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
// ── Pivots (static hlines) ──
hline(4290.35, "Daily R1", color=color.new(color.red, 40), linestyle=hline.style_solid)
hline(4331.98, "Daily R2", color=color.new(color.red, 50), linestyle=hline.style_dashed)
hline(4366.97, "Daily R3", color=color.new(color.red, 60), linestyle=hline.style_dashed)
hline(4255.36, "Daily P", color=color.new(color.silver, 30), linestyle=hline.style_solid)
hline(4213.73, "Daily S1", color=color.new(color.green, 40), linestyle=hline.style_solid)
hline(4178.74, "Daily S2", color=color.new(color.green, 50), linestyle=hline.style_dashed)
hline(4168.93, "Weekly R2", color=color.new(color.green, 60), linestyle=hline.style_dotted)
hline(4343.32, "Daily EMA200 confluence", color=color.new(color.fuchsia, 20), linestyle=hline.style_solid)
// ── One-shot drawings on last confirmed bar (no repaint) ──
if barstate.islastconfirmedhistory
bi = bar_index
// ── Golden pocket (0.5–0.618) ──
box.new(bi - 120, f500, bi + 40, f618, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40), border_width=1)
label.new(bi + 40, (f500 + f618) / 2, "Golden pocket 4201.7–4219.9", style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
// ── Supply zone (fade zone at R1 / session high) ──
box.new(bi - 120, 4296.98, bi + 40, 4286.54, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30), border_width=1)
label.new(bi + 40, 4291.76, "Supply 4286–4297 (R1 / session high)", style=label.style_label_left, color=color.new(color.red, 60), textcolor=color.white, size=size.small)
// ── Supply zone 2 (daily EMA200 + COMEX futures confluence) ──
box.new(bi - 120, 4355.0, bi + 40, 4340.0, bgcolor=color.new(color.red, 80), border_color=color.new(color.red, 40), border_width=1)
label.new(bi + 40, 4347.5, "Supply 4340–4355 (EMA200 + GC=F)", style=label.style_label_left, color=color.new(color.red, 60), textcolor=color.white, size=size.small)
// ── Demand zone (S1 / weekly R2 confluence) ──
box.new(bi - 120, 4213.73, bi + 40, 4168.93, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 40), border_width=1)
label.new(bi + 40, 4191.33, "Demand 4168.9–4213.7 (S1 / wR2)", style=label.style_label_left, color=color.new(color.green, 60), textcolor=color.white, size=size.small)
// ── Trade Idea #1 — SELL bounce-fade at R1 ──
box.new(bi - 60, 4297.0, bi + 60, 4286.0, bgcolor=color.new(color.red, 70), border_color=color.red, border_width=1)
line.new(bi - 60, 4296.98, bi + 60, 4296.98, color=color.red, style=line.style_dashed, width=1)
line.new(bi - 60, 4213.73, bi + 60, 4213.73, color=color.new(color.red, 30), style=line.style_solid, width=1)
label.new(bi + 60, 4297.0, "SELL #1 invalidation 4296.98", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
label.new(bi + 60, 4213.73, "SELL #1 target 4213.73 (60%)", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
// ── Trade Idea #2 — BUY breakout on NFP miss ──
box.new(bi - 60, 4310.0, bi + 60, 4297.0, bgcolor=color.new(color.green, 70), border_color=color.green, border_width=1)
line.new(bi - 60, 4259.79, bi + 60, 4259.79, color=color.new(color.green, 30), style=line.style_dashed, width=1)
line.new(bi - 60, 4343.32, bi + 60, 4343.32, color=color.new(color.green, 30), style=line.style_solid, width=1)
label.new(bi + 60, 4310.0, "BUY #2 trigger 4297+ target 4343 (40%)", style=label.style_label_left, color=color.new(color.green, 50), textcolor=color.white, size=size.small)
// ── Trade Idea #3 — SELL swing fade at EMA200/futures ──
line.new(bi - 60, 4366.97, bi + 60, 4366.97, color=color.new(color.red, 20), style=line.style_dashed, width=1)
line.new(bi - 60, 4168.93, bi + 60, 4168.93, color=color.new(color.red, 30), style=line.style_solid, width=1)
label.new(bi + 60, 4366.97, "SELL #3 invalidation 4366.97 (55%)", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
// ── Net-bias banner ──
var table biasTable = table.new(position.top_right, 2, 4, bgcolor=color.new(color.black, 20), border_width=1, border_color=color.new(color.white, 60))
table.cell(biasTable, 0, 0, "NET DESK BIAS", bgcolor=color.new(color.red, 30), text_color=color.white, text_size=size.normal)
table.cell(biasTable, 1, 0, "SELL (tactical)", bgcolor=color.new(color.red, 30), text_color=color.white, text_size=size.normal)
table.cell(biasTable, 0, 1, "Real yield 10y", text_color=color.white, text_size=size.small)
table.cell(biasTable, 1, 1, "2.43% (+2bp)", text_color=color.white, text_size=size.small)
table.cell(biasTable, 0, 2, "Fed Sep16 hike odds", text_color=color.white, text_size=size.small)
table.cell(biasTable, 1, 2, "55%", text_color=color.white, text_size=size.small)
table.cell(biasTable, 0, 3, "4h RSI", text_color=color.white, text_size=size.small)
table.cell(biasTable, 1, 3, "76.7 (OB)", text_color=color.white, text_size=size.small)
— the resident
Bid on fear, faded on math