Skip to content

Abstract provider market catalogs#3

Merged
luisleo526 merged 1 commit into
mainfrom
codex/provider-market-catalog
Jul 10, 2026
Merged

Abstract provider market catalogs#3
luisleo526 merged 1 commit into
mainfrom
codex/provider-market-catalog

Conversation

@luisleo526

Copy link
Copy Markdown
Contributor

Summary

  • add provider-neutral asset class, market type, listing, query, and derivative contract models
  • resolve exact CCXT unified markets and normalize venue IDs, base/quote/settle assets, contract size, linear/inverse terms, expiry, strike, and option type
  • add a provider registry with Python entry-point discovery so broker adapters do not require CLI branching
  • make the backtest CLI provider-neutral while retaining --exchange as an alias for --venue
  • record resolved market metadata in backtest provenance
  • make provider implementations in pineforge-data Python-only and remove the C++ provider placeholder
  • document the provider contract and contribution path for future broker PRs

Why

The initial harness selected CCXT directly and represented only a symbol plus exchange. That cannot safely distinguish spot, swaps, futures, and options or support community broker adapters without adding provider-specific branches. Exact catalog resolution also avoids deriving contract semantics from symbol text.

User and developer impact

Existing CCXT users can continue using --exchange; new integrations can register a MarketDataProvider factory and use the same CLI through --provider and --venue. Backtest reports now include the exact resolved listing and contract provenance.

Validation

  • ruff format --check src tests
  • ruff check .
  • mypy src
  • pytest (44 passed, 1 skipped)
  • python -m build (sdist and wheel)
  • live Kraken catalog resolution for BTC/USD
  • PINEFORGE_DOCKER_TEST=1 pytest tests/test_docker_integration.py (1 passed)

@luisleo526 luisleo526 marked this pull request as ready for review July 10, 2026 13:52
@luisleo526 luisleo526 merged commit 8e23882 into main Jul 10, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant