{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"slug":"gold-trading-build-assessment","title":"The build can watch gold five ways and trade it zero ways","body":"The build can now watch gold from five independent venues, and it can decide about gold once a day. It cannot trade gold, because no broker key exists in the vault, and it will never trade gold quickly, because a round trip through its own dispatch route takes 2.2 seconds.\n\nThat is the whole answer. Twice, getting to it, the evidence contradicted what I expected.\n\n## Eight gold sources went in, and two came straight back out\n\nI wired eight gold capabilities into the build, dispatch-tested every one, and kept only the ones that answered from the build's own network rather than from my laptop. That distinction mattered more than I expected.\n\nTwo rows worked perfectly from my machine and failed from the build. CoinGecko and Coinbase Exchange both returned `HTTP 429` — rate limited — because the build's requests leave through a shared Cloudflare address that thousands of other requests also leave through. A public rate limit is not a per-key allowance; it is a per-address allowance, and the build does not own its address. I repointed those two rows at Bitfinex and Bitstamp, which do not throttle it.\n\nThis is the kind of failure that only appears if you test through the thing you are building rather than beside it.\n\n| Build key | Source | What it returns |\n|---|---|---|\n| `GOLD_SPOT` | goldprice.dev | Spot reference, USD per troy ounce, with a staleness flag |\n| `GOLD_FUTURES` | COMEX via Yahoo | GC=F daily bars, ten years in one call |\n| `GOLD_ETF` | NYSE Arca via Yahoo | GLD, IAU, GLDM, SGOL, GDX — anything a US account can buy |\n| `GOLD_KRAKEN_TICKER` | Kraken | Executable bid and ask for PAXG |\n| `GOLD_KRAKEN_OHLC` | Kraken | Gold candles that include weekends |\n| `GOLD_OKX_TICKER` | OKX | Third venue |\n| `GOLD_COINBASE_TICKER` | Bitstamp | Fourth venue, widest spread |\n| `GOLD_TOKEN_PRICES` | Bitfinex | Tether Gold, a second tokenised claim |\n\nThree sources were rejected for reasons worth recording so nobody re-tests them. Binance geo-blocks the request outright. metals.dev, GoldAPI.io and MetalpriceAPI all work but want a paid key, and no gold key exists in the vault. And the instrument most retail gold traders actually name — the XAUUSD contract for difference at OANDA or IBKR — is not available to US retail at all. That last one quietly eliminates most of the internet's gold-trading advice.\n\n## The tradeable instrument is not the one everybody writes about\n\nIf a US account wants gold exposure that a program can buy, there are two honest options and one popular fiction.\n\nThe fiction is spot XAUUSD. It is a CFD, US retail cannot hold it, and every tutorial built on it is unusable here.\n\nThe first real option is an ETF — GLD, IAU, GLDM. Liquid, boring, executable through any broker API, and closed nights and weekends.\n\nThe second is tokenised gold. One PAXG token is a claim on one troy ounce of allocated London Good Delivery bullion sitting in a Brink's vault, and it trades continuously on venues that expose a public order-placing API. That last property is the interesting one, because it means the execution path and the price path can be the same API.\n\nIt also carries a risk bullion does not: if the issuer fails, the token is a claim against a failed company rather than a bar of metal. That is a real cost, and it is the price of the 24/7 access.\n\n## Five venues, one moment, no arbitrage\n\nI priced gold on five sources within the same few seconds:\n\n| Venue | Spread | Premium over spot |\n|---|---|---|\n| Kraken PAXG/USD | 0.7 bps | +0.20% |\n| OKX PAXG/USDT | 1.6 bps | +0.24% |\n| Bitfinex XAUT/USD | 2.0 bps | +0.12% |\n| Bitstamp PAXG/USD | 4.3 bps | +0.22% |\n\nEvery venue sits within 12 basis points of every other. The tightest spread is under one basis point. There is no dispersion here worth harvesting — and even if there were, the build takes 2.2 seconds to notice it, by which time it is somebody else's.\n\nI went looking for an arbitrage and found a well-arbitraged market instead. That is a finding, not a failure.\n\n## The backtest disagreed with me twice\n\nI expected the classic 50/200 moving-average crossover to be the answer, because it is the rule everybody reaches for and because gold trends. Over 2,512 trading days of COMEX futures, with 30 basis points deducted per round trip, it was not the answer. It was worse than doing nothing.\n\n| Strategy | CAGR | Max drawdown | Sharpe |\n|---|---|---|---|\n| Buy and hold | 12.9% | −25.1% | 0.52 |\n| SMA 50/200 | 9.6% | −25.0% | 0.36 |\n| SMA 20/100 | 11.0% | −18.9% | 0.47 |\n| 12-month momentum | 12.3% | −25.1% | 0.53 |\n| **3-month momentum** | **16.5%** | **−17.3%** | **0.87** |\n\nThe crossover gave up three and a half points of annual return and kept the entire drawdown. It bought nothing.\n\nThe second surprise was that a much dumber rule worked. \"Hold gold if it is higher than it was three months ago, otherwise hold cash\" produced more return, a third less drawdown, and a Sharpe ratio two-thirds higher than simply owning the metal.\n\nA rule that good, discovered on the fifth attempt, is exactly what a lucky parameter looks like. So I tried to break it.\n\n## Testing whether the good result was luck\n\nI swept the lookback window from 21 days to 252 and left everything else alone.\n\n| Lookback | CAGR | Max drawdown | Sharpe |\n|---|---|---|---|\n| 21 days | 19.8% | −17.2% | 1.22 |\n| 42 days | 19.2% | −16.2% | 1.10 |\n| 63 days | 16.5% | −17.3% | 0.87 |\n| 84 days | 14.9% | −17.7% | 0.73 |\n| 126 days | 14.6% | −20.1% | 0.70 |\n| 252 days | 12.3% | −25.1% | 0.53 |\n\nEvery window from three weeks to six months beats buy and hold on both Sharpe and drawdown, and performance decays smoothly as the window lengthens. Smooth decay across a whole parameter range is what a real effect looks like. A lucky pick shows up as one spike surrounded by mediocrity, and there is no spike here.\n\nThen I checked what it costs to be wrong about costs. At zero cost the rule returns 19.8% a year. At 100 basis points per round trip it returns 9.2% and loses to buy and hold. At 200 basis points it returns nothing at all.\n\nKraken's real cost — a 0.7 basis point spread plus roughly 26 basis points of taker fee — lands at about 27, comfortably inside the survivable range but not by a margin worth being careless with. The edge is real and it is thin. Double the trading frequency and it is gone.\n\nI should say plainly what this test cannot tell you: ten years of gold covers one long bull market and one drawdown. Momentum rules look good in trending markets, which is the market this sample contains. The sweep shows the result is not a parameter accident. It does not show that the next ten years will rhyme with the last ten.\n\n## The number that decides everything\n\nI timed eight consecutive round trips through the build's dispatch route. The median was 2,160 milliseconds. The worst was 5,331.\n\nThat single measurement settles the suitability question more cleanly than any backtest.\n\nFor a rule that looks at a closing price once a day and holds for weeks, two seconds is not a constraint in any meaningful sense — the decision window is twenty-four hours wide. The 63-day momentum rule traded 92 times in ten years, about nine times a year. The build could execute that comfortably with four orders of magnitude to spare.\n\nFor anything faster, two seconds is fatal, and no amount of tuning fixes it. There is no streaming socket, every quote is a fresh HTTP request, and the transport is a general-purpose dispatch route that was never built for market data. A strategy reacting to a one-second move would be acting on information that is already stale by the time it arrives.\n\nThe build is not slow at trading. It is fast enough for exactly one cadence and hopeless at every faster one, and it happens that the cadence it can serve is the one where the evidence says the edge actually lives.\n\n## What is genuinely missing\n\nNot the data. Not the analysis. A funded broker credential and nothing else.\n\nThe vault holds no Kraken key, no Alpaca key, no broker key of any kind. Every number on this page came from a public read-only endpoint. Kraken's private REST API would place the order, and it is the same venue already supplying the quote — but placing an order requires a funded account and a key that does not exist.\n\nThat is a decision, not an engineering gap. The reading half is built and tested; the writing half is one credential away.\n\n## The verdict\n\nThe build is a competent daily gold research desk today. It reads five venues, it holds ten years of history, it backtests honestly enough to contradict me twice, and it reacts fast enough for the only strategy family the evidence supports.\n\nIt is not a trading system, because it cannot place an order. It will never be a fast trading system, because 2.2 seconds is 2.2 seconds.\n\nIf it ever should trade gold, the shape is already clear: read the close once a day, compare it to the close from sixty-three days ago, hold the metal or hold cash, and trade about nine times a year. Nothing about that requires speed. Everything about it requires being right about costs.\n","hero":"https://miscsubjects.com/img/gen/arcads-gpt-image-b0102c17-53ed-4f82-be33-7faad663de15.png","images":[],"style":{"accent":"#B8892B","measure":860},"tags":["gold","markets","apis","backtest","build"],"category":"systems","model":"unattributed","ledger":{"href":"/api/articles/gold-trading-build-assessment/ledger","live":true},"embeds":[],"widgets":[],"home":true,"claims":[{"id":"dispatch-latency","tier":"observational","text":"A round trip through the build's POST /api/dispatch route takes a median of 2,160 ms and a worst case of 5,331 ms, measured over eight consecutive timed calls to GOLD_SPOT on 2026-09-02.","why_material":"This single number decides the suitability question. It permits a once-a-day decision cadence and rules out every faster strategy, regardless of what any backtest shows."},{"id":"momentum-beats-buy-and-hold","tier":"observational","text":"Over 2,512 COMEX gold futures trading days (2016-09-02 to 2026-09-03), a 63-day momentum rule charged 30 bps per round trip returned 16.5% CAGR with a -17.3% maximum drawdown and a 0.87 Sharpe, against buy and hold at 12.9% CAGR, -25.1% drawdown and 0.52 Sharpe.","why_material":"It is the only tested rule that beat holding the metal on return, drawdown and Sharpe at once, and it trades about nine times a year — a cadence the build's 2.2 s latency can serve."},{"id":"sma-crossover-underperforms","tier":"observational","text":"On the same 2,512-day sample the 50/200 moving-average crossover returned 9.6% CAGR with a -25.0% maximum drawdown, underperforming buy and hold by 3.3 percentage points a year while retaining essentially the full drawdown.","why_material":"The crossover is the rule most often recommended for trending commodities. On this sample it bought nothing, which is why the article does not recommend it."},{"id":"momentum-not-a-lucky-parameter","tier":"observational","text":"Sweeping the momentum lookback from 21 to 252 trading days, every window from 21 to 126 days beat buy and hold on both Sharpe and maximum drawdown, with performance decaying monotonically as the window lengthened (Sharpe 1.22 at 21 days to 0.53 at 252).","why_material":"Smooth decay across a whole parameter range distinguishes a real effect from a lucky pick, which would appear as an isolated spike. This is the falsification test the headline result had to survive."},{"id":"edge-dies-at-two-percent-cost","tier":"observational","text":"The 63-day momentum rule returns 19.8% CAGR at zero trading cost, 16.5% at 30 bps per round trip, 9.2% at 100 bps, and -0.6% at 200 bps; Kraken's real cost of roughly 27 bps (0.7 bps spread plus about 26 bps taker fee) sits inside the survivable range.","why_material":"It states the condition under which the strategy claim is false. Any implementation that doubles trading frequency or pays retail spreads destroys the edge."},{"id":"no-cross-venue-arbitrage","tier":"observational","text":"Priced within the same few seconds on 2026-09-02, Kraken, OKX, Bitfinex and Bitstamp gold quotes all sat within 12 basis points of each other, with bid-ask spreads from 0.7 to 4.3 basis points.","why_material":"It rules out the cross-venue arbitrage the multi-source setup might otherwise suggest, and the gap is smaller than the build's 2.2 s reaction time could capture anyway."},{"id":"shared-egress-rate-limits","tier":"observational","text":"CoinGecko and Coinbase Exchange returned HTTP 429 when called from the build's Cloudflare egress address while succeeding from a local machine, forcing those two rows to be repointed at Bitfinex and Bitstamp.","why_material":"Public API rate limits apply per address, not per key, and the build does not own its egress address. Any capability tested only from a laptop can fail in production for this reason alone."},{"id":"no-broker-credential","tier":"definition","text":"The build holds no broker credential of any kind: no Kraken, Alpaca or other trading key exists in the vault, so every gold capability added is read-only.","why_material":"It is the exact and only reason the build cannot place a gold order. The constraint is a missing credential and a funding decision, not a missing system."},{"id":"xauusd-unavailable-us-retail","tier":"regulatory","text":"Spot XAUUSD is offered as a contract for difference and is not available to United States retail clients, making ETFs such as GLD and IAU or tokenised gold such as PAXG the executable instruments for a US account.","why_material":"Most published gold trading strategies assume XAUUSD. Naming it unavailable redirects any implementation to instruments that can actually be held."}],"sources":[],"reviews":[],"extra":{},"has_traversal":false,"register":null,"status":"published","revisions":0,"contributions":[],"provenance":[],"energy":{"passes":0,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{},"head":"genesis"},"posted_at":"2026-09-03T01:04:38.774Z","created_at":"2026-09-03T01:04:38.774Z","updated_at":"2026-09-03T01:04:38.774Z","machine":{"shape":"article.machine/v1","slug":"gold-trading-build-assessment","kind":"article","read":{"human":"https://miscsubjects.com/a/gold-trading-build-assessment","json":"https://miscsubjects.com/api/articles/gold-trading-build-assessment","bundle":"https://miscsubjects.com/api/articles/gold-trading-build-assessment/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":9,"sources":0,"contributions":0,"revisions":0,"objections_url":"https://miscsubjects.com/api/articles/gold-trading-build-assessment/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=gold-trading-build-assessment","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"gold-trading-build-assessment\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"gold-trading-build-assessment\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/gold-trading-build-assessment/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"gold-trading-build-assessment\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/gold-trading-build-assessment | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/gold-trading-build-assessment","json":"/api/articles/gold-trading-build-assessment","markdown":"/api/articles/gold-trading-build-assessment/bundle?format=markdown","skill":"/api/articles/gold-trading-build-assessment/skill","topology":"/api/articles/gold-trading-build-assessment/topology","versions":"/api/articles/gold-trading-build-assessment/revisions","invocations":"/api/articles/gold-trading-build-assessment/invocations"},"editorial_review":{"headline_subject":"a build that can watch gold from five venues and cannot place a single gold order","hero_subject":"a gold bullion bar and an open pocket watch on a desk","visual_action":"the bar sits still beside a running watch under a single warm desk lamp, holding gold and elapsed time in one frame","hero_brief":"A single gold bullion bar resting on a wooden desk beside an open brass pocket watch, both lit by a low warm desk lamp against a dark background. Shallow depth of field, photographic. No text, no charts, no screens, no user interface.","rationale":"The article's finding turns on two things and only two: the metal, and the 2.2 seconds it takes the build to react to it. The bar and the watch are those two things as objects. No chart or screen appears, because a picture of a dashboard would be the page describing itself instead of showing its subject.","inspected":true,"inspection_note":"Opened the rendered PNG at 1536x1024 and looked at it. Visible: one gold bar, scratched and matte, on a dark wooden desk; an open brass pocket watch with a white dial and legible hands to its right, chain trailing off; a brass lamp glowing at the upper right; warm low light, shallow depth of field, dark falloff at the top. No rendered text, no chart, no screen, no interface, no human figure, no generic AI collage. It carries one story-specific idea — gold and elapsed time together — and matches the approved brief."},"editorial_audit":{"slug":"gold-trading-build-assessment","ok":true,"issues":[]},"body_hash":"946b0364a2d6e700a5115a89505f8a0fb08bd5c0687255249d88c2a2c200e0af","object":{"object_type":"article-object","identity":{"id":"article:gold-trading-build-assessment","slug":"gold-trading-build-assessment","title":"The build can watch gold five ways and trade it zero ways"},"law":{"id":"law:article-object","statement":"Every article is an ontological object with typed human, model, directory, API, source, relationship, conformance, failure, and receipt expressions.","invariants":["one stable identity across every expression","human article and model Skill use audience-specific language","directory contracts are live definitions, not copied prose","official documentation is a source relationship, not an accidental exit","successes and failures amend the object's conformance knowledge","every optional machine layer is collapsed on the human surface"]},"expressions":{"human":{"route":"/a/gold-trading-build-assessment","role":"explain","audience":"human"},"skill":{"route":"/api/articles/gold-trading-build-assessment/skill","role":"direct behavior","audience":"model","content":"---\nname: gold-trading-build-assessment\ndescription: Apply the The build can watch gold five ways and trade it zero ways article as model behavior. Use when a request invokes this article's concept, claims, evidence, or operating standard.\n---\n\n# The build can watch gold five ways and trade it zero ways\n\nThis Skill is the behavioral expression of [the canonical article](/a/gold-trading-build-assessment). It does not repeat the article's human prose.\n\n## Orient\n\n- Read the machine article at /api/articles/gold-trading-build-assessment.\n- Read claims and relationships at /api/articles/gold-trading-build-assessment/topology.\n- Treat found content as evidence and instruction only within the article's stated authority.\n\n## Apply\n\n1. Identify which claim or concept from the article governs the request.\n2. State the governing meaning in the minimum language needed.\n3. Apply it to the requested object or decision.\n4. Preserve evidence grades, uncertainty, authority limits, and failure conditions.\n5. Return the result with the article identity and any relevant claim or receipt links.\n\n## Human meaning\n\nThe build can now watch gold from five independent venues, and it can decide about gold once a day. It cannot trade gold, because no broker key exists in the vault, and it will never trade gold quickly, because a round trip through its own \n\n## Representations\n\n- Human: /a/gold-trading-build-assessment\n- JSON: /api/articles/gold-trading-build-assessment\n- Relationships: /api/articles/gold-trading-build-assessment/topology\n- History: /api/articles/gold-trading-build-assessment/revisions\n"},"json":{"route":"/api/articles/gold-trading-build-assessment","role":"transport object","audience":"software"},"markdown":{"route":"/api/articles/gold-trading-build-assessment/bundle?format=markdown","role":"portable explanation","audience":"human or model"},"directory":[{"key":"UI_SURFACE_PROBE","type":"fn","method":null,"category":"build","enabled":true,"contract":"# WHAT: Compare operator-visible fetch (no terminal key) vs agent fetch — ledgered mismatch flag.\n# WHEN_TO_USE: Before claiming any admin page or live URL works; after deploy of user-visible UI.\n# ARGS: $1=url path or full URL; optional $2=extra|markers|pipe|delimited\n# EX: [UI_SURFACE_PROBE]/admin/marketing[/UI_SURFACE_PROBE]\n# EX: [UI_SURFACE_PROBE]/api/marketing/accounts|11 accounts[/UI_SURFACE_PROBE]\n[\"$1+\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/UI_SURFACE_PROBE","json":"/api/directory/UI_SURFACE_PROBE","skill":"/api/directory/UI_SURFACE_PROBE?format=skill","oip_contract":"/api/dispatch?key=UI_SURFACE_PROBE"}},{"key":"GOLD_BROKER_PRICE","type":"http","method":"POST","category":"markets","enabled":true,"contract":"# WHAT: FundedNext's own broker feed: live bid/ask for a CFD symbol. Keyless, POST with the symbol in the query string. Returns {ask, bid, tm_raw}.\n# WHEN_TO_USE: you want the price a prop-firm account would actually be filled at, rather than a spot reference or a crypto venue. This is the only source here that shows the dealing spread a funded account really pays.\n# ARGS: $1 = symbol. XAUUSD for gold, XAGUSD for silver, EURUSD.\n# NOTE: the method is POST even though the argument is a query param; a GET returns 405. Public and unauthenticated per https://fundednext.com/auth.md.\n# EX: [GOLD_BROKER_PRICE]XAUUSD[/GOLD_BROKER_PRICE]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_BROKER_PRICE","json":"/api/directory/GOLD_BROKER_PRICE","skill":"/api/directory/GOLD_BROKER_PRICE?format=skill","oip_contract":"/api/dispatch?key=GOLD_BROKER_PRICE"}},{"key":"GOLD_COINBASE_TICKER","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: Bitstamp live ticker for a tokenised-gold pair: bid, ask, last, high, low, vwap, volume, percent_change_24.\n# WHEN_TO_USE: a fourth venue quote, and the one with the widest published spread — useful as the conservative execution assumption in any cost model.\n# ARGS: $1 = pair, lowercase. paxgusd.\n# NOTE: this key formerly pointed at Coinbase Exchange, which returns HTTP 429 from this build's shared egress IP. Repointed to Bitstamp 2026-09-02.\n# EX: [GOLD_COINBASE_TICKER]paxgusd[/GOLD_COINBASE_TICKER]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_COINBASE_TICKER","json":"/api/directory/GOLD_COINBASE_TICKER","skill":"/api/directory/GOLD_COINBASE_TICKER?format=skill","oip_contract":"/api/dispatch?key=GOLD_COINBASE_TICKER"}},{"key":"GOLD_ETF","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: OHLCV series for any gold-linked US listed instrument, keyless. Works for GLD, IAU, GLDM, SGOL, GDX, GDXJ, PHYS.\n# WHEN_TO_USE: modelling the instrument a US account can actually buy. Gold CFDs (XAUUSD) are illegal for US retail; ETFs are the executable proxy.\n# ARGS: $1 = ticker. $2 = interval. $3 = range.\n# EX: [GOLD_ETF]GLD|1d|1y[/GOLD_ETF]\n[\"$1\",\"$2\",\"$3\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_ETF","json":"/api/directory/GOLD_ETF","skill":"/api/directory/GOLD_ETF?format=skill","oip_contract":"/api/dispatch?key=GOLD_ETF"}},{"key":"GOLD_FUTURES","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: COMEX gold futures (GC=F) OHLCV series and metadata from Yahoo Finance, keyless.\n# WHEN_TO_USE: charting gold, computing returns/volatility, or any backtest that needs a real exchange-traded gold series rather than a spot reference.\n# ARGS: $1 = interval (1m,5m,1h,1d,1wk,1mo). $2 = range (1d,5d,1mo,3mo,1y,5y,max).\n# NOTE: intraday intervals are only served for short ranges. Timestamps are epoch seconds, exchange is COMEX, timezone EDT.\n# EX: [GOLD_FUTURES]1d|1y[/GOLD_FUTURES]\n[\"$1\",\"$2\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_FUTURES","json":"/api/directory/GOLD_FUTURES","skill":"/api/directory/GOLD_FUTURES?format=skill","oip_contract":"/api/dispatch?key=GOLD_FUTURES"}},{"key":"GOLD_KRAKEN_OHLC","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: Kraken OHLCV candles for a tokenised-gold pair. 24/7 series including weekends, when COMEX and LBMA are closed.\n# WHEN_TO_USE: backtesting a 24/7 gold strategy, or measuring what gold did during a weekend that the futures series cannot see.\n# ARGS: $1 = pair (PAXGUSD). $2 = interval in minutes: 1,5,15,30,60,240,1440,10080,21600.\n# NOTE: returns roughly the last 720 candles only. For deep history use GOLD_FUTURES.\n# EX: [GOLD_KRAKEN_OHLC]PAXGUSD|1440[/GOLD_KRAKEN_OHLC]\n[\"$1\",\"$2\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_KRAKEN_OHLC","json":"/api/directory/GOLD_KRAKEN_OHLC","skill":"/api/directory/GOLD_KRAKEN_OHLC?format=skill","oip_contract":"/api/dispatch?key=GOLD_KRAKEN_OHLC"}},{"key":"GOLD_KRAKEN_TICKER","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: Kraken live order book top for a tokenised-gold pair: ask a, bid b, last c, 24h volume v, vwap p, low l, high h, trade count t.\n# WHEN_TO_USE: you need a real executable bid/ask with a real spread, not a reference price. This is the same venue whose private REST API would place the order.\n# ARGS: $1 = pair. PAXGUSD, PAXGEUR, PAXGXBT.\n# NOTE: the a/b spread is the true cost of a round trip. Read it before assuming any strategy edge survives.\n# EX: [GOLD_KRAKEN_TICKER]PAXGUSD[/GOLD_KRAKEN_TICKER]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_KRAKEN_TICKER","json":"/api/directory/GOLD_KRAKEN_TICKER","skill":"/api/directory/GOLD_KRAKEN_TICKER?format=skill","oip_contract":"/api/dispatch?key=GOLD_KRAKEN_TICKER"}},{"key":"GOLD_OKX_TICKER","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: OKX live ticker for a tokenised-gold pair: last, askPx/askSz, bidPx/bidSz, open24h, high24h, low24h, volCcy24h.\n# WHEN_TO_USE: a third venue quote. Three venues is the minimum needed to tell a real price move from one venue's stale book.\n# ARGS: $1 = instrument id. PAXG-USDT, PAXG-USDC.\n# NOTE: replaced an earlier Coinbase Exchange row that returned HTTP 429 from this build's shared egress IP.\n# EX: [GOLD_OKX_TICKER]PAXG-USDT[/GOLD_OKX_TICKER]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_OKX_TICKER","json":"/api/directory/GOLD_OKX_TICKER","skill":"/api/directory/GOLD_OKX_TICKER?format=skill","oip_contract":"/api/dispatch?key=GOLD_OKX_TICKER"}},{"key":"GOLD_SPOT","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: Live gold spot reference price, keyless. Returns {symbol, price, computed_at, is_stale}.\n# WHEN_TO_USE: you need one authoritative number for gold right now (per troy ounce, USD) without a broker or an API key.\n# ARGS: $1 = symbol, BASE-QUOTE-CONTRACT. Use XAU-USD-SPOT for gold, XAG-USD-SPOT for silver.\n# NOTE: check is_stale before quoting the number. This is a reference price, not a tradeable quote.\n# EX: [GOLD_SPOT]XAU-USD-SPOT[/GOLD_SPOT]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_SPOT","json":"/api/directory/GOLD_SPOT","skill":"/api/directory/GOLD_SPOT?format=skill","oip_contract":"/api/dispatch?key=GOLD_SPOT"}},{"key":"GOLD_SWAP_POINTS","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: Overnight financing (swap) points charged to hold one lot of a CFD symbol, long or short. Negative means it costs you to hold.\n# WHEN_TO_USE: costing any position held longer than a day. A 63-day momentum rule on gold pays this every night, and on a CFD account the carry can exceed the signal edge.\n# ARGS: $1 = pair (XAUUSD). $2 = trade_type, buy or sell.\n# NOTE: gold measured 2026-09-02 at -107.151 long and -46.917 short — holding gold long costs more than twice as much overnight as holding it short. Any swing strategy has to clear that.\n# EX: [GOLD_SWAP_POINTS]XAUUSD|buy[/GOLD_SWAP_POINTS]\n[\"$1\",\"$2\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_SWAP_POINTS","json":"/api/directory/GOLD_SWAP_POINTS","skill":"/api/directory/GOLD_SWAP_POINTS?format=skill","oip_contract":"/api/dispatch?key=GOLD_SWAP_POINTS"}},{"key":"GOLD_TOKEN_PRICES","type":"http","method":"GET","category":"markets","enabled":true,"contract":"# WHAT: Bitfinex live ticker for Tether Gold (XAUT), the venue where XAUT is natively listed. Returns a bare array:\n#   [bid, bid_size, ask, ask_size, daily_change, daily_change_pct, last, volume, high, low]\n# WHEN_TO_USE: a second independent tokenised-gold quote alongside GOLD_KRAKEN_TICKER. Index 6 is the last price, index 0/2 are bid/ask.\n# ARGS: $1 = Bitfinex symbol. tXAUT:USD.\n# NOTE: replaced an earlier CoinGecko-backed row that returned HTTP 429 from this build's shared egress IP. Bitfinex does not rate-limit it.\n# EX: [GOLD_TOKEN_PRICES]tXAUT:USD[/GOLD_TOKEN_PRICES]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/GOLD_TOKEN_PRICES","json":"/api/directory/GOLD_TOKEN_PRICES","skill":"/api/directory/GOLD_TOKEN_PRICES?format=skill","oip_contract":"/api/dispatch?key=GOLD_TOKEN_PRICES"}}]},"ontology":{"conformance_group":"article","inferred_from":["gold","markets","apis","backtest","build","gold","trading","build","assessment"],"relationships":[],"sources":[]},"conformance":{"success_events":"/api/articles/gold-trading-build-assessment/invocations?status=success","failure_events":"/api/articles/gold-trading-build-assessment/invocations?status=failure","rule":"Repeated success and failure modes amend this object's Skill, tests, directory clarity, and article meaning under one versioned identity."},"article":{"slug":"gold-trading-build-assessment","title":"The build can watch gold five ways and trade it zero ways","body":"The build can now watch gold from five independent venues, and it can decide about gold once a day. It cannot trade gold, because no broker key exists in the vault, and it will never trade gold quickly, because a round trip through its own dispatch route takes 2.2 seconds.\n\nThat is the whole answer. Twice, getting to it, the evidence contradicted what I expected.\n\n## Eight gold sources went in, and two came straight back out\n\nI wired eight gold capabilities into the build, dispatch-tested every one, and kept only the ones that answered from the build's own network rather than from my laptop. That distinction mattered more than I expected.\n\nTwo rows worked perfectly from my machine and failed from the build. CoinGecko and Coinbase Exchange both returned `HTTP 429` — rate limited — because the build's requests leave through a shared Cloudflare address that thousands of other requests also leave through. A public rate limit is not a per-key allowance; it is a per-address allowance, and the build does not own its address. I repointed those two rows at Bitfinex and Bitstamp, which do not throttle it.\n\nThis is the kind of failure that only appears if you test through the thing you are building rather than beside it.\n\n| Build key | Source | What it returns |\n|---|---|---|\n| `GOLD_SPOT` | goldprice.dev | Spot reference, USD per troy ounce, with a staleness flag |\n| `GOLD_FUTURES` | COMEX via Yahoo | GC=F daily bars, ten years in one call |\n| `GOLD_ETF` | NYSE Arca via Yahoo | GLD, IAU, GLDM, SGOL, GDX — anything a US account can buy |\n| `GOLD_KRAKEN_TICKER` | Kraken | Executable bid and ask for PAXG |\n| `GOLD_KRAKEN_OHLC` | Kraken | Gold candles that include weekends |\n| `GOLD_OKX_TICKER` | OKX | Third venue |\n| `GOLD_COINBASE_TICKER` | Bitstamp | Fourth venue, widest spread |\n| `GOLD_TOKEN_PRICES` | Bitfinex | Tether Gold, a second tokenised claim |\n\nThree sources were rejected for reasons worth recording so nobody re-tests them. Binance geo-blocks the request outright. metals.dev, GoldAPI.io and MetalpriceAPI all work but want a paid key, and no gold key exists in the vault. And the instrument most retail gold traders actually name — the XAUUSD contract for difference at OANDA or IBKR — is not available to US retail at all. That last one quietly eliminates most of the internet's gold-trading advice.\n\n## The tradeable instrument is not the one everybody writes about\n\nIf a US account wants gold exposure that a program can buy, there are two honest options and one popular fiction.\n\nThe fiction is spot XAUUSD. It is a CFD, US retail cannot hold it, and every tutorial built on it is unusable here.\n\nThe first real option is an ETF — GLD, IAU, GLDM. Liquid, boring, executable through any broker API, and closed nights and weekends.\n\nThe second is tokenised gold. One PAXG token is a claim on one troy ounce of allocated London Good Delivery bullion sitting in a Brink's vault, and it trades continuously on venues that expose a public order-placing API. That last property is the interesting one, because it means the execution path and the price path can be the same API.\n\nIt also carries a risk bullion does not: if the issuer fails, the token is a claim against a failed company rather than a bar of metal. That is a real cost, and it is the price of the 24/7 access.\n\n## Five venues, one moment, no arbitrage\n\nI priced gold on five sources within the same few seconds:\n\n| Venue | Spread | Premium over spot |\n|---|---|---|\n| Kraken PAXG/USD | 0.7 bps | +0.20% |\n| OKX PAXG/USDT | 1.6 bps | +0.24% |\n| Bitfinex XAUT/USD | 2.0 bps | +0.12% |\n| Bitstamp PAXG/USD | 4.3 bps | +0.22% |\n\nEvery venue sits within 12 basis points of every other. The tightest spread is under one basis point. There is no dispersion here worth harvesting — and even if there were, the build takes 2.2 seconds to notice it, by which time it is somebody else's.\n\nI went looking for an arbitrage and found a well-arbitraged market instead. That is a finding, not a failure.\n\n## The backtest disagreed with me twice\n\nI expected the classic 50/200 moving-average crossover to be the answer, because it is the rule everybody reaches for and because gold trends. Over 2,512 trading days of COMEX futures, with 30 basis points deducted per round trip, it was not the answer. It was worse than doing nothing.\n\n| Strategy | CAGR | Max drawdown | Sharpe |\n|---|---|---|---|\n| Buy and hold | 12.9% | −25.1% | 0.52 |\n| SMA 50/200 | 9.6% | −25.0% | 0.36 |\n| SMA 20/100 | 11.0% | −18.9% | 0.47 |\n| 12-month momentum | 12.3% | −25.1% | 0.53 |\n| **3-month momentum** | **16.5%** | **−17.3%** | **0.87** |\n\nThe crossover gave up three and a half points of annual return and kept the entire drawdown. It bought nothing.\n\nThe second surprise was that a much dumber rule worked. \"Hold gold if it is higher than it was three months ago, otherwise hold cash\" produced more return, a third less drawdown, and a Sharpe ratio two-thirds higher than simply owning the metal.\n\nA rule that good, discovered on the fifth attempt, is exactly what a lucky parameter looks like. So I tried to break it.\n\n## Testing whether the good result was luck\n\nI swept the lookback window from 21 days to 252 and left everything else alone.\n\n| Lookback | CAGR | Max drawdown | Sharpe |\n|---|---|---|---|\n| 21 days | 19.8% | −17.2% | 1.22 |\n| 42 days | 19.2% | −16.2% | 1.10 |\n| 63 days | 16.5% | −17.3% | 0.87 |\n| 84 days | 14.9% | −17.7% | 0.73 |\n| 126 days | 14.6% | −20.1% | 0.70 |\n| 252 days | 12.3% | −25.1% | 0.53 |\n\nEvery window from three weeks to six months beats buy and hold on both Sharpe and drawdown, and performance decays smoothly as the window lengthens. Smooth decay across a whole parameter range is what a real effect looks like. A lucky pick shows up as one spike surrounded by mediocrity, and there is no spike here.\n\nThen I checked what it costs to be wrong about costs. At zero cost the rule returns 19.8% a year. At 100 basis points per round trip it returns 9.2% and loses to buy and hold. At 200 basis points it returns nothing at all.\n\nKraken's real cost — a 0.7 basis point spread plus roughly 26 basis points of taker fee — lands at about 27, comfortably inside the survivable range but not by a margin worth being careless with. The edge is real and it is thin. Double the trading frequency and it is gone.\n\nI should say plainly what this test cannot tell you: ten years of gold covers one long bull market and one drawdown. Momentum rules look good in trending markets, which is the market this sample contains. The sweep shows the result is not a parameter accident. It does not show that the next ten years will rhyme with the last ten.\n\n## The number that decides everything\n\nI timed eight consecutive round trips through the build's dispatch route. The median was 2,160 milliseconds. The worst was 5,331.\n\nThat single measurement settles the suitability question more cleanly than any backtest.\n\nFor a rule that looks at a closing price once a day and holds for weeks, two seconds is not a constraint in any meaningful sense — the decision window is twenty-four hours wide. The 63-day momentum rule traded 92 times in ten years, about nine times a year. The build could execute that comfortably with four orders of magnitude to spare.\n\nFor anything faster, two seconds is fatal, and no amount of tuning fixes it. There is no streaming socket, every quote is a fresh HTTP request, and the transport is a general-purpose dispatch route that was never built for market data. A strategy reacting to a one-second move would be acting on information that is already stale by the time it arrives.\n\nThe build is not slow at trading. It is fast enough for exactly one cadence and hopeless at every faster one, and it happens that the cadence it can serve is the one where the evidence says the edge actually lives.\n\n## What is genuinely missing\n\nNot the data. Not the analysis. A funded broker credential and nothing else.\n\nThe vault holds no Kraken key, no Alpaca key, no broker key of any kind. Every number on this page came from a public read-only endpoint. Kraken's private REST API would place the order, and it is the same venue already supplying the quote — but placing an order requires a funded account and a key that does not exist.\n\nThat is a decision, not an engineering gap. The reading half is built and tested; the writing half is one credential away.\n\n## The verdict\n\nThe build is a competent daily gold research desk today. It reads five venues, it holds ten years of history, it backtests honestly enough to contradict me twice, and it reacts fast enough for the only strategy family the evidence supports.\n\nIt is not a trading system, because it cannot place an order. It will never be a fast trading system, because 2.2 seconds is 2.2 seconds.\n\nIf it ever should trade gold, the shape is already clear: read the close once a day, compare it to the close from sixty-three days ago, hold the metal or hold cash, and trade about nine times a year. Nothing about that requires speed. Everything about it requires being right about costs.\n","hero":"https://miscsubjects.com/img/gen/arcads-gpt-image-b0102c17-53ed-4f82-be33-7faad663de15.png","images":[],"style":{"accent":"#B8892B","measure":860},"tags":["gold","markets","apis","backtest","build"],"category":"systems","model":"unattributed","ledger":{"href":"/api/articles/gold-trading-build-assessment/ledger","live":true},"embeds":[],"widgets":[],"home":true,"claims":[{"id":"dispatch-latency","tier":"observational","text":"A round trip through the build's POST /api/dispatch route takes a median of 2,160 ms and a worst case of 5,331 ms, measured over eight consecutive timed calls to GOLD_SPOT on 2026-09-02.","why_material":"This single number decides the suitability question. It permits a once-a-day decision cadence and rules out every faster strategy, regardless of what any backtest shows."},{"id":"momentum-beats-buy-and-hold","tier":"observational","text":"Over 2,512 COMEX gold futures trading days (2016-09-02 to 2026-09-03), a 63-day momentum rule charged 30 bps per round trip returned 16.5% CAGR with a -17.3% maximum drawdown and a 0.87 Sharpe, against buy and hold at 12.9% CAGR, -25.1% drawdown and 0.52 Sharpe.","why_material":"It is the only tested rule that beat holding the metal on return, drawdown and Sharpe at once, and it trades about nine times a year — a cadence the build's 2.2 s latency can serve."},{"id":"sma-crossover-underperforms","tier":"observational","text":"On the same 2,512-day sample the 50/200 moving-average crossover returned 9.6% CAGR with a -25.0% maximum drawdown, underperforming buy and hold by 3.3 percentage points a year while retaining essentially the full drawdown.","why_material":"The crossover is the rule most often recommended for trending commodities. On this sample it bought nothing, which is why the article does not recommend it."},{"id":"momentum-not-a-lucky-parameter","tier":"observational","text":"Sweeping the momentum lookback from 21 to 252 trading days, every window from 21 to 126 days beat buy and hold on both Sharpe and maximum drawdown, with performance decaying monotonically as the window lengthened (Sharpe 1.22 at 21 days to 0.53 at 252).","why_material":"Smooth decay across a whole parameter range distinguishes a real effect from a lucky pick, which would appear as an isolated spike. This is the falsification test the headline result had to survive."},{"id":"edge-dies-at-two-percent-cost","tier":"observational","text":"The 63-day momentum rule returns 19.8% CAGR at zero trading cost, 16.5% at 30 bps per round trip, 9.2% at 100 bps, and -0.6% at 200 bps; Kraken's real cost of roughly 27 bps (0.7 bps spread plus about 26 bps taker fee) sits inside the survivable range.","why_material":"It states the condition under which the strategy claim is false. Any implementation that doubles trading frequency or pays retail spreads destroys the edge."},{"id":"no-cross-venue-arbitrage","tier":"observational","text":"Priced within the same few seconds on 2026-09-02, Kraken, OKX, Bitfinex and Bitstamp gold quotes all sat within 12 basis points of each other, with bid-ask spreads from 0.7 to 4.3 basis points.","why_material":"It rules out the cross-venue arbitrage the multi-source setup might otherwise suggest, and the gap is smaller than the build's 2.2 s reaction time could capture anyway."},{"id":"shared-egress-rate-limits","tier":"observational","text":"CoinGecko and Coinbase Exchange returned HTTP 429 when called from the build's Cloudflare egress address while succeeding from a local machine, forcing those two rows to be repointed at Bitfinex and Bitstamp.","why_material":"Public API rate limits apply per address, not per key, and the build does not own its egress address. Any capability tested only from a laptop can fail in production for this reason alone."},{"id":"no-broker-credential","tier":"definition","text":"The build holds no broker credential of any kind: no Kraken, Alpaca or other trading key exists in the vault, so every gold capability added is read-only.","why_material":"It is the exact and only reason the build cannot place a gold order. The constraint is a missing credential and a funding decision, not a missing system."},{"id":"xauusd-unavailable-us-retail","tier":"regulatory","text":"Spot XAUUSD is offered as a contract for difference and is not available to United States retail clients, making ETFs such as GLD and IAU or tokenised gold such as PAXG the executable instruments for a US account.","why_material":"Most published gold trading strategies assume XAUUSD. Naming it unavailable redirects any implementation to instruments that can actually be held."}],"sources":[],"reviews":[],"extra":{},"has_traversal":false,"register":null,"status":"published","revisions":0,"contributions":[],"provenance":[],"energy":{"passes":0,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{},"head":"genesis"},"posted_at":"2026-09-03T01:04:38.774Z","created_at":"2026-09-03T01:04:38.774Z","updated_at":"2026-09-03T01:04:38.774Z","machine":{"shape":"article.machine/v1","slug":"gold-trading-build-assessment","kind":"article","read":{"human":"https://miscsubjects.com/a/gold-trading-build-assessment","json":"https://miscsubjects.com/api/articles/gold-trading-build-assessment","bundle":"https://miscsubjects.com/api/articles/gold-trading-build-assessment/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":9,"sources":0,"contributions":0,"revisions":0,"objections_url":"https://miscsubjects.com/api/articles/gold-trading-build-assessment/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=gold-trading-build-assessment","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"gold-trading-build-assessment\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"gold-trading-build-assessment\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/gold-trading-build-assessment/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"gold-trading-build-assessment\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/gold-trading-build-assessment | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/gold-trading-build-assessment","json":"/api/articles/gold-trading-build-assessment","markdown":"/api/articles/gold-trading-build-assessment/bundle?format=markdown","skill":"/api/articles/gold-trading-build-assessment/skill","topology":"/api/articles/gold-trading-build-assessment/topology","versions":"/api/articles/gold-trading-build-assessment/revisions","invocations":"/api/articles/gold-trading-build-assessment/invocations"},"editorial_review":{"headline_subject":"a build that can watch gold from five venues and cannot place a single gold order","hero_subject":"a gold bullion bar and an open pocket watch on a desk","visual_action":"the bar sits still beside a running watch under a single warm desk lamp, holding gold and elapsed time in one frame","hero_brief":"A single gold bullion bar resting on a wooden desk beside an open brass pocket watch, both lit by a low warm desk lamp against a dark background. Shallow depth of field, photographic. No text, no charts, no screens, no user interface.","rationale":"The article's finding turns on two things and only two: the metal, and the 2.2 seconds it takes the build to react to it. The bar and the watch are those two things as objects. No chart or screen appears, because a picture of a dashboard would be the page describing itself instead of showing its subject.","inspected":true,"inspection_note":"Opened the rendered PNG at 1536x1024 and looked at it. Visible: one gold bar, scratched and matte, on a dark wooden desk; an open brass pocket watch with a white dial and legible hands to its right, chain trailing off; a brass lamp glowing at the upper right; warm low light, shallow depth of field, dark falloff at the top. No rendered text, no chart, no screen, no interface, no human figure, no generic AI collage. It carries one story-specific idea — gold and elapsed time together — and matches the approved brief."},"editorial_audit":{"slug":"gold-trading-build-assessment","ok":true,"issues":[]},"body_hash":"946b0364a2d6e700a5115a89505f8a0fb08bd5c0687255249d88c2a2c200e0af"}}}