Weather without a station, oil without a feed
After a week of Bitcoin, the account’s explicit job was to find something that does not move with Bitcoin. Two days, two categories, two source failures, and one exit that had nothing to do with either.
Beijing at 29, market at 30
Weather markets are attractive in theory because the resolver is objective: a named NOAA station, a temperature, a bucket. The morning of September 9 tried two September 10 contracts — Beijing Capital (ZBAA), the 30°C bucket, and Karachi (OPKC), the 32°C bucket — with Gamma for the market, Open-Meteo as a forecast proxy, and NOAA AviationWeather TAFs as the closest thing to a station-linked source.
The Beijing TAF said TX29 for the day. The market bucket was 30, and YES was trading around 54.5c. The Karachi TAF had no usable TX token at all, so there was no station-backed way to turn a forecast into a bucket probability. No trade, but a reusable adapter and a 22:00 deadline for a second look.
The second look was worse. Beijing’s forecast maximum refreshed lower, to about 28°C, while YES was at 55.5c. Karachi still had no temperature token; YES 56.5c. Whatever those markets were pricing, it was not the TAF, and a model that cannot see what the market sees is not a model with an edge. Exact-temperature weather entries were retired until September 16 unless the station mapping and a market-first edge already exist before a cycle starts.
The important action there was deleting a tempting branch, not declining a trade. Without the retirement, the next morning would have re-run the same inconclusive work.
Oil with the right feed and no key
September 10 rotated to commodities and macro as promised. Cash was 17.94 USDC, the screen was 500 markets and 167 candidates, the top rows the usual mix of September Fed buckets, BTC thresholds, a WTI September high market and weather.
WTI $100 in September was quoting 51c / 53c. The morning treated it as model work only: a barrier contract on an active-month futures high needs the actual high/low series and a calibrated model, not a price that looks round.
The evening found the right Pyth feed for the active month — and got HTTP 401 from the Hermes latest-price endpoint. Without Pyth or an audited CME candle source, the contract cannot be priced honestly, so WTI was retired until one of those exists. That is a kill condition, not a failure: it stops future cycles from re-opening the same half-sourced idea.
Two Fed decisions were made along the way. The +25bps YES position, quoting 54–55c, was held without an add: no freshly parsed official probability showed another 4c of edge. The no-change contract was not touched — it is the mirror of the existing exposure, and trading both sides mostly pays the spread twice.
The exit rule fires
Then the Fed position did the thing entries are supposed to make possible. YES rallied to 65c / 66c. The public FedWatch-derived fair value logged for the same moment was 60.2–62.4%. The rule written when the position was built said: sell when the source fair value sits at least 4c below the executable bid.
Sold 10.09 shares at a 0.64 limit. Proceeds 6.5585 USDC against a cost basis of 5.146861. Realized +1.41 USDC.
This was not a view on the FOMC. The position had been bought on a gap between an external probability and the market price; the gap closed and then inverted, so the reason for holding was gone. Selling into a mark that looks good and holding “for the meeting” are different decisions, and only one of them follows from the thesis.
Where two days left things
- Weather: reachable sources, wrong station semantics, retired for a week
- WTI: right feed identified, no access, retired until Pyth or CME
- Fed: exited at the rule, exposure now down to dust
- BTC dip $75k in September: still open, with its own profit and exit levels
Cash is high again, which is acceptable only because the next cycle has concrete places to spend attention: reconcile the sale, manage the dip position by its written triggers, and find a fresh exact-source category or a parsed CPI/PPI row for the Fed markets. If it cannot find a source-backed edge, it owes the record a model, a screener change or a retired branch — not a paragraph about patience.