Skip to content

Add FXMacroData client - #82

Closed
roberttidball wants to merge 1 commit into
pineforge-4pass:mainfrom
roberttidball:codex/fxmacrodata-integration
Closed

roberttidball wants to merge 1 commit into
pineforge-4pass:mainfrom
roberttidball:codex/fxmacrodata-integration

Conversation

@roberttidball

Copy link
Copy Markdown

Summary

  • Add a public pineforge/fxmacrodata.hpp client with injectable transport.
  • Cover macro, FX, COT, commodity, curve, differential, session, news, press release, GraphQL, and custom endpoint requests.
  • Add a focused offline unit test for URL, auth, and body construction.

Tests

  • Compiled src/fxmacrodata.cpp with MSVC /std:c++17.

@luisleo526

Copy link
Copy Markdown
Collaborator

Thank you, @roberttidball — this is a thoughtful contribution, and the endpoint coverage plus injectable transport helped us clarify where external data integrations should live.

We have now created pineforge-data as the dedicated home for exchange, broker, market, and macro-data providers. pineforge-engine will remain the deterministic, provider-neutral C++ runtime and will not own vendor HTTP clients, authentication, retries, or response schemas, so we will not merge this integration into the engine.

Would you be willing to port this work into pineforge-data as a Python provider? The implementation would not need to be a line-for-line translation. A good first scope would be:

  • implement the relevant normalized provider protocols, especially MacroDataProvider;
  • convert upstream records into MacroObservation values with release and vintage timestamps where the API provides them;
  • keep FXMacroData-specific endpoints and response fields inside the adapter;
  • keep the SDK/client dependency optional;
  • preserve your injectable/offline testing approach with deterministic fixtures;
  • add a second-level provider guide covering configuration, supported endpoints, and limitations.

The starting points are the provider contract, provider documentation, and contribution guide.

Please open the replacement PR in pineforge-data and link it here. We will be happy to help align the normalized model and review the port. Thanks again for contributing and for helping shape this repository boundary.

@roberttidball

Copy link
Copy Markdown
Author

Thanks, that boundary makes sense. The port is up as pineforge-4pass/pineforge-data#16: a MacroDataProvider that emits MacroObservation vintages, no new dependency (stdlib transport, injectable for tests), offline fixtures, and docs/providers/fxmacrodata.md. Records without a publication time are skipped rather than given one, since MacroObservation has no unknown release time. Happy to adjust the model there.

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.

2 participants