Repository navigation
registry: add ZR (rough rice) and WBS (ICE Europe WTI) - #99
Merged
Merged
Conversation
The two codes of crowdmon's contract-spec backlog that Norgate actually carries. crowdmon's handoff docs/handoffs/2026-08-03-spec-backlog-producer.md asked for six; its §4 required confirming vendor coverage first, and the vendor catalogue says two. Norgate's entire energy universe is eight contracts, four already covered here, and the only Henry Hub row is NG, which is 023651. The four Henry Hub codes are vendor-absent and stay in the backlog with no proxy substituted, per that handoff's §4. The entries are the precondition for the producer run rather than a consequence of it: norgate.get_symbol_metadata resolves REGISTRY[internal].norgate + "_CCB", so an unlisted symbol is a KeyError before any fetch. WBS is not a duplicate of CL. Open interest tracks it at 0.771, which is what makes it look like one, but Managed Money net is negative and flow correlation is near zero, so it is a different holder base (crowdmon docs/design/amendments-2026-08-03.md §C15). ZR is the smallest of ten ag candidates and the strongest on the criterion that decides, Managed Money share 0.433 against a covered median of 0.137 (§C17, decision in §9 of the handoff). Three guards fired and all three are updated deliberately: the two len(all_symbols()) == 49 pins, and the golden identity checksum, which exists precisely so that adding a symbol cannot be accidental. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds two symbols:
ZRrough rice (CBOT,039601) andWBSWTI Crude Oil (ICE Futures Europe,067411).These are the two codes of
crowdmon's contract-spec backlog that Norgate actually carries. That handoff (crowdmon/docs/handoffs/2026-08-03-spec-backlog-producer.md) asked for six, and its §4 made confirming vendor coverage the step that had to happen first. The vendor catalogue now says two: Norgate's entire energy universe is eight contracts, four of which are already in this registry, and the only Henry Hub row isNG, which is023651. The four Henry Hub codes (023A55,03565B,023A56,03565C) are vendor-absent and stay in the backlog with no proxy substituted, per §4's own rule.Why the entries come before the producer run, not after
norgate.get_symbol_metadataresolvesREGISTRY[internal_symbol].norgate + "_CCB", so an unlisted symbol is aKeyErrorbefore any fetch:Verified against this branch:
_norgate_covered(["ZR", "WBS"])returns both.ZRneeds nonorgate:mapping (the default is&<internal>, and Norgate's code isZR).WBScarriesdatabento: nullfollowing theMME/MFSprecedent: it is an ICE product and not on GLBX.MDP3.Why these two and not the others
WBSis not a duplicate ofCL. Open interest tracks it at 0.771, which is exactly what makes it look like one, but Managed Money net is negative and flow correlation is near zero, so it is a different holder base. Measured incrowdmon/docs/design/amendments-2026-08-03.md§C15, which records an objection raised and withdrawn on that evidence.ZRis the smallest ag candidate of ten and the strongest on the criterion that decides: Managed Money share 0.433 against a covered median of 0.137, the highest of any backlog candidate measured (§C17, human decision recorded in §9 of the handoff, which cut the ag tranche to rough rice alone).Three guards fired, all updated deliberately
test_registry_loads_all_symbols49->51test_symbols_are_hashable49->51test_golden_identity_checksumThe checksum lock exists so that adding a symbol cannot be accidental, and it did its job. Its docstring asks for the hash to be updated on purpose; this is that.
289 passed, ruff clean, run with
PYTHONPATHshadowing so the suite tested this branch rather than the main checkout the editable install resolves to.One consequence to sequence around
crowdmon/tests/test_contract_master_live.pyassertsnot_joinable <= {"MFS", "MME"}. From the moment this merges until the producer run lands both symbols, that fails, measured on this branch rather than predicted:That is the test doing its job: a symbol the registry claims and the store cannot price is exactly what it watches for. Its
joinable >= 47floor still holds, andcrowdmon's CI is unaffected because that file skips without a real store. But the scheduled 09:15 live run would go red overnight, so merge this and run the producer back to back:One
--pricesrun writes bothbackadjandunadj, which is whatpropadjis derived from on read. With--symbolsthe metadata write is an upsert, so the other 47 spec rows are preserved.Afterwards,
ContractMaster.coverage()should readjoinable: 49 of 51withMFSandMMEstill the only two unjoinable.🤖 Generated with Claude Code