ms-markets 2.2.13.dev37__tar.gz → 2.2.13.dev38__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/CHANGELOG.md +75 -2
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/PKG-INFO +4 -2
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/README.md +3 -1
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0047-markets-api-application-boundary.md +96 -6
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/accounts.md +33 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/assets.md +15 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/index.md +24 -4
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/indexes.md +49 -1
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/portfolio.md +89 -1
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_portfolios/portfolios/index.md +156 -17
- ms_markets-2.2.13.dev38/docs/planning/implementation_tasks/markets_contracts_package_and_client_plan.md +218 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_read_services.py +5 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/mkdocs.yml +1 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/pyproject.toml +1 -1
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/__init__.py +3 -0
- ms_markets-2.2.13.dev38/src/msm/models/portfolio_dataset_availability.py +161 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/signals.py +11 -0
- ms_markets-2.2.13.dev38/src/msm_migrations/versions/mainsequence_markets/0021_portfolio_dataset_catalog.py +98 -0
- ms_markets-2.2.13.dev38/src/msm_portfolios/data_nodes/contract_instances.py +386 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/__init__.py +3 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/__init__.py +10 -0
- ms_markets-2.2.13.dev38/src/msm_portfolios/services/portfolio_datasets.py +530 -0
- ms_markets-2.2.13.dev38/src/msm_portfolios/services/portfolio_reads.py +855 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/public_api.py +68 -109
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_accounts.py +116 -0
- ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_acting_identity.py +169 -0
- ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_batch_lookups.py +136 -0
- ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_index_formula_routes.py +288 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_portfolios.py +325 -19
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_request_identity.py +2 -1
- ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_sidecar_includes.py +169 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_legacy_schema_migration.py +18 -7
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_migrations.py +6 -1
- ms_markets-2.2.13.dev38/tests/msm_portfolios/data_nodes/test_contract_instances.py +142 -0
- ms_markets-2.2.13.dev38/tests/msm_portfolios/services/test_portfolio_datasets.py +275 -0
- ms_markets-2.2.13.dev38/tests/msm_portfolios/services/test_portfolio_reads.py +482 -0
- ms_markets-2.2.13.dev37/src/msm_portfolios/services/portfolio_reads.py +0 -305
- ms_markets-2.2.13.dev37/tests/msm_portfolios/services/test_portfolio_reads.py +0 -136
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/accounts/account_workflow/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/accounts/valuation_resolver/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/assets/asset_indexed_data_nodes/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/assets/asset_model_extension/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/indices/index_workflow/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/platform/bootstrap_registration/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/platform/metatable_migrations/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/portfolios/portfolio_workflow/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/portfolios/portfolio_workflow/references/position_accounting.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/pricing/fixed_income_curve_building/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/pricing/general_pricing/SKILL.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.gitignore +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/LICENSE +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0005-pricing-package-refactor.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0006-asset-package-boundary.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0008-metatable-table-and-api-model-split.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0019-msm-portfolios-package-boundary.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0022-alembic-metatable-migration-alignment.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0023-deterministic-alembic-naming.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0024-namespace-scoped-alembic-version-locations.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0025-direct-metatable-runtime-binding.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0026-explicit-pricing-market-data-sets.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0027-account-target-position-portfolio-exposure.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0028-core-calendar-reference-data.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0029-account-holdings-virtual-fund-allocation-policy.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0030-explicit-portfolio-price-source-dependency.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0031-generic-portfolio-valuation-source.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0032-portfolio-group-many-to-many.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0033-pricing-valuation-position-boundary.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0034-command-center-asset-monitor-helpers.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0035-pricing-curve-identity-and-market-data-curve-bindings.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0036-prepared-pricing-valuation-context.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0037-index-formula-and-custom-calculation-framework.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0038-index-user-api-and-fastapi-exploration.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0039-sdk-8-hard-cut-and-1-0-package-contract.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0040-portfolio-temporal-ownership.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0041-installable-provider-http-toolkit.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0042-position-cash-flow-portfolio-accounting.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0043-sdk-9-metatables-client-hard-cut.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0044-namespaced-migration-provider-package.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0045-squashed-initial-schema-and-namespaced-packages.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0046-legacy-0017-schema-bridge.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/README.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/fast_api/v1/0001-calendar-crud-route.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/fast_api/v1/0002-command-center-adapter-discovery.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/fast_api/v1/0003-fixed-income-pricer-api.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/fast_api/v1/0004-delete-impact-contract.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/changelog.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/concepts.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/calendars.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/command_center_bulk_actions.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/fixed_income_pricer.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/portfolio_groups.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/portfolio_signal_metadata.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/pricing_curves.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/pricing_market_data.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/provider_adapter_toolkit.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/resource_contracts.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/settings.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/virtualfund.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/getting-started.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_black_bg.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_alternate_lockup_transparent.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_black_bg.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_icon_emblem_transparent.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_black_bg.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_market_mark_only_transparent.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_black_bg.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/img/main-sequence-markets/main_sequence_markets_primary_wordmark_transparent.png +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/accounts/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/accounts/virtual_funds.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/asset_indexed_data_nodes.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/bonds.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/currency.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/calendars/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/client/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/derivatives/futures.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/derivatives/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/execution/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/indices/formula_indexes.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/indices/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/migrations/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/models/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/platform/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/platform/meta_table_registration.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/platform/metatable_migrations.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/repositories/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/services/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_portfolios/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_portfolios/portfolios/accounting.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/analytics.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/curves.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/fixings.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/instruments.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/market_data_sets.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/runtime_resolution.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/scenarios/curves.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/scenarios/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/scenarios/valuation.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/benchmark_curve_resolution_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/bond_helper_curve_reconstruction_upstream_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/cross_currency_helper_curve_reconstruction_upstream_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/generic_curve_reconstruction_upstream_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/generic_valuation_scenario_workflow_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/index_formula_and_custom_calculation_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/python_3_13_mainsequence_5_upgrade_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/reusable_valuation_portfolio_scenario_analytics_plan.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/reference/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/reference/indices.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/releasing.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/stylesheets/custom.css +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/01-assets.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/02-calendars.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/03-accounts.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/04-portfolios.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/05-pricing.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/06-index-formulas.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/index.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/account_portfolio_full_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/account_virtual_fund_allocation_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/utils/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/utils/reference_data.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/asset_category_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/asset_crud_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/asset_type_constants.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/bond_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/currency_spot_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/derivatives/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/derivatives/crypto_future_without_figi.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/derivatives/index_future_from_openfigi.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/us_treasury_bond_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/utils/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/utils/reference_data.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/calendars/calendar_materialization_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/http_provider_contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/delta_hedged_option_index.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/extension_owned_index_storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/formula_index.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/index_values_frequency_migration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/plain_index_values.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/custom_asset_details_extension.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/inspect_markets_metatable_models.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/metatable_migration_lifecycle.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/workflows/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/workflows/asset_category_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_cashflows_and_fx_valuation_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_custom_cashflow_model_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_custom_valuation_column_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_config.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_dynamic_migration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_prepare_schema.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_run.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_groups_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_midnight_timestamp_repair.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_perpetual_funding_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_trailing_adv_participation_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_trailing_adv_participation_preview.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_pricing_example/README.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_pricing_example/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_pricing_example/main.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_terms.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/curve_reconstruction.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/curve_scenario.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/fixed_income_spread_analytics.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/import_pricing_runtime.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/instrument_identity_boundary.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/pricing_registry_rows.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/pricing_valuation_context.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/resolved_curve_scenario.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/utils/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/utils/mock_market_data.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/valuation_inputs.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/valuation_scenario_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/engine.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/spreads.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/accounts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/assets.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/_validation.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/core.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/dates.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/events.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/sessions.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/derivatives.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/execution.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/formula_indices.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/_base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/bulk_actions.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/collections.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/discovery.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/errors.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/operations.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/table_impact.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/tabular.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/indices.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/issuers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/portfolios.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/virtual_funds.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/constants.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/constants.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/virtual_funds/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/virtual_funds/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/asset_indexed.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/snapshots.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/execution/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/execution/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/formula.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/timestamped.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/values.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/namespaces.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/output_metadata.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/stamped.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/storage_schema.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/time.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/migrations/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/allocation_models.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/core.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/groups.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/virtual_funds.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/bonds.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/categories.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/core.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/currency_spot.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/provider_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/types.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/core.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/dates.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/events.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/sessions.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/derivatives.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/execution.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/index_dataset_availability.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/index_formulas.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/indices.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/issuers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/core.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/groups.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/registration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/py.typed +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/account_allocation_models.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/account_groups.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/accounts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/asset_categories.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/assets.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/core.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/dates.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/events.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/sessions.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/crud.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/execution.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/indices.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/portfolios.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/provider_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/virtual_funds.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/account_virtual_allocations.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/core.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/virtual_fund_holdings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/virtual_funds.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/virtual_funds_public_api.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/asset_categories.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/asset_master_lists.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/open_figi_lists/market_sector.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/open_figi_lists/security_type.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/open_figi_lists/security_type_2.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/openfigi.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/reference_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/materialization.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/pandas_market.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/records.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/validation.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/execution.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/holdings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/actors.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/availability.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/catalog.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/delete_impact.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/relationships.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/portfolios.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/provider_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/public_api_settings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/reference_data.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/related_meta_tables.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/table_impact.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/target_positions.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/settings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_cli/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_cli/main.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/env.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/registry.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/script.py.mako +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_examples/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/0017_legacy_schema_anchor.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/0018_initial_schema.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/0019_ledger_hypertable_uniqueness.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/0020_expected_columns.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/0020_merge_legacy_schema.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/configuration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/lifecycle.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/projections.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/reducer.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/valuation.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/api/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/api/market_metadata.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/api/portfolios.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/asset_scope.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/configuration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/prices/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/prices/data_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/prices/utils.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/external_weights.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/fixed_weights.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/intraday_trend.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/market_cap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/portfolio_replicator.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/regression_utils.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/constants.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/metadata.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolio_identity.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/accounting.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/analytics.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/calendar_events.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/rebalance.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/temporal.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/weights.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/prices/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/prices/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/signals/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/signals/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/signals/weights.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/enums.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/portfolios/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/portfolios/metadata.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/rebalancing.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/signals.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/accounting.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/calendar_event.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/immediate_signal.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/liquidity_constrained.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/time_weighted.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/trailing_average_daily_volume.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/volume_participation.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/repositories/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/repositories/market_metadata.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/calendars.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/market_metadata.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/portfolio_timestamp_repair.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/utils.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/README.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/spreads/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/spreads/base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/spreads/fixed_income.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/asset_pricing_operations.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/curve_building_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/curves.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/index_convention_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/instruments.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/market_data_bindings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/pricing_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/config.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_interface/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_interface/data_interface.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curve_codec.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curves/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curves/key_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curves/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/index_fixings/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/index_fixings/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/pricing_details/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/pricing_details/storage.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/base_instrument.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/bond.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/bond_terms.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/callability.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/interest_rate_swap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/json_codec.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/ql_fields.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/meta_tables.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/curve_building_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/curves.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/index_convention_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/market_data_bindings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/pricing_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/bond_analytics.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/bond_pricer.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/coupon_schedules.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curve_overlays.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/adapters.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/bond_helper_key_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/bond_helpers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/cross_currency_helpers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/cross_currency_key_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/fixed_income_key_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/helper_key_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/helper_resolution.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/helpers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/observations.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/quote_units.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/reconstruction.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/indices.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/indices_builders.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/resolvers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/swap_pricer.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/engine.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/key_node_bumps.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/models.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/engine.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/impacts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/line_pricing.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/models.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/settings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/utils.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/valuation.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/conftest.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/PINNED_FROM.txt +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/README.md +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.inline-health-endpoint.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.retired-response-mappings.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-discovery-v1.unknown-operation-field.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-public-config-v1.direct-source-mismatch.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.retired-response-mapping-id.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-query-v1.unknown-field.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/adapter-from-api-secure-config-v1.unknown-field.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-binding-port.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/app-component-authoring-v1.invalid-mock-version.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.duplicate-selection-mode.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-discovery-v1.unsafe-endpoint.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.empty-explicit.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-execution-v1.presentation-filter.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.invalid-blockers.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/bulk-action-preflight-v1.missing-allowed.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.negative-total.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-collection-v1.select-without-options.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.incomplete-generic-column.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unknown-field.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/resource-discovery-v1.unsafe-identity.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.invalid-target-uid.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.missing-token.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unknown-credential-error.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.unrestricted-user-credential.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/static-site-iframe-v1.wrong-version.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.community-formula.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.invalid-selection.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/table-widget-authoring-v1.unknown-widget.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.invalid-table-visuals.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.long-with-value-fields.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.missing-rows.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-frame-v1.unknown-field-type.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.incomplete-pivot.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/tabular-transform-authoring-v1.latest-without-keys.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.missing-id.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/invalid/workspace-document-v1.numeric-id.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-discovery-v1.orders.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.backend.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-public-config-v1.direct.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-query-v1.operation.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/adapter-from-api-secure-config-v1.values.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.manual.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/app-component-authoring-v1.mock-json.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.archive.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-discovery-v1.empty.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.all-matching.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-execution-v1.explicit.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.allowed.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/bulk-action-preflight-v1.blocked.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.minimal.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-collection-v1.with-controls.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/resource-discovery-v1.records.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-error.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-request.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-credential-response.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.fastapi-runtime-starting.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.initialize.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/static-site-iframe-v1.ready.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.pro-table.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/table-widget-authoring-v1.table.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.minimal.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.table-visuals.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-frame-v1.time-series.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.filter.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/tabular-transform-authoring-v1.pivot-latest.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.minimal.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/fixtures/valid/workspace-document-v1.nested.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/manifest.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-discovery-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-public-config-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-query-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/adapter-from-api-secure-config-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/app-component-authoring-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-discovery-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-execution-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/bulk-action-preflight-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-collection-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/resource-discovery-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/static-site-iframe-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/table-widget-authoring-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-frame-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/tabular-transform-authoring-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/schemas/workspace-document-v1.schema.json +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/calendars/test_rows.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_assets.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_bonds.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_derivatives.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_http.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_indices.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_issuers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_portfolio_groups.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_rows.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/assets/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/assets/test_asset_snapshots.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/assets/test_openfigi.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/bootstrap/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/bootstrap/test_bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_asset_indexed_data_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_datetime_normalization.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_index_stamped_data_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_package_structure.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_provisioning_boundary.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_target_positions_contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_asset_categories.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_assets.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_bulk_action_contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_bulk_actions.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_calendars.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_command_center_adapter.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_common.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_deployment_entrypoint.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_dev_cors.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_indices.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_lifespan_discovery.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_openapi.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_portfolio_groups.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_portfolio_signals.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_pricing_assets.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_pricing_curves.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_pricing_market_data.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_runtime_bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_settings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_virtual_funds.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/imports/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/imports/test_import.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_data_nodes.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_engine.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_examples.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_formula_index_contract.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_actor.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_availability.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_delete_impact.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_lifecycle_services.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_values.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_models_and_migration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_public_api.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_related_meta_tables.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_resolution_and_repository.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_spread_compatibility.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/fixtures/legacy_0017.sql +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_ledger_hypertable_migration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_migration_job.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/calendars/test_tables.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/test_metatable_models.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/repositories/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/repositories/test_repositories.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/assets/test_reference_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/calendars/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/calendars/test_materialization.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/test_account_virtual_allocations.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/test_latest_asset_references.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/test_table_impact.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_cli.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_constants.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_package_metadata.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_schema_names.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/accounting/test_accounting.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/api/test_rows.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/configuration/test_prices_configuration.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_daily_price_interpolation.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_datetime_normalization.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_portfolio_contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_storage_first_surface.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_virtual_fund_holdings_contracts.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/examples/test_equal_weight_portfolio_schema.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/examples/test_trailing_adv_participation_preview.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/imports/test_bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/imports/test_boundaries.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/models/test_model_graph.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/services/test_calendars.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/services/test_portfolio_timestamp_repair.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/test_portfolios_logger.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/analytics/spreads/test_base.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/analytics/spreads/test_fixed_income.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_asset_pricing_operations.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_curve_building_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_curves.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_index_convention_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_instruments.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_market_data_bindings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_pricing_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/data_interface/test_data_interface.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/data_nodes/test_curves.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/data_nodes/test_index_fixings.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/examples/test_mock_market_data.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_base_instrument.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_benchmark_curve_resolution.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_bond_terms.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_floating_bond_roundtrip.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_index_uid_references.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/models/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/models/test_pricing_details.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/curves/test_bond_helper_reconstruction.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/curves/test_bond_helpers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/curves/test_cross_currency_helpers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/curves/test_reconstruction.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/test_curve_overlays.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/test_resolvers.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/curves/test_curve_scenarios.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/curves/test_key_node_bumps.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/curves/test_resolved_curve_scenarios.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/valuation/test_line_pricing.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/valuation/test_workflow.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_bond_pricing_example.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_bootstrap.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_config.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_meta_tables.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_package_boundaries.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_valuation.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/packaging/__init__.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/packaging/test_dev_release_version.py +0 -0
- {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/packaging/test_distribution_sources.py +0 -0
|
@@ -13,8 +13,81 @@ and this project follows versioned releases.
|
|
|
13
13
|
proposes the
|
|
14
14
|
Markets API as the application boundary: provider-owned namespaces and
|
|
15
15
|
sidecars, a contracts package with a remote row backend, and contract-plus-
|
|
16
|
-
instances for portfolio and signal time series catalogued by Markets.
|
|
17
|
-
|
|
16
|
+
instances for portfolio and signal time series catalogued by Markets. Its
|
|
17
|
+
migration path step 1 is implemented in this release as described below;
|
|
18
|
+
the packaging split (step 2) and the provider and consumer moves (steps 3
|
|
19
|
+
and 4) are not.
|
|
20
|
+
- `PortfoliosTS`, `PortfolioWeightsTS` and `SignalWeightsTS` are storage
|
|
21
|
+
contracts with instances (ADR 0047, decision 5).
|
|
22
|
+
`msm_portfolios.data_nodes.contract_instances` adds
|
|
23
|
+
`configured_portfolios_storage`, `configured_portfolio_weights_storage` and
|
|
24
|
+
`configured_signal_weights_storage`, which build an instance under a
|
|
25
|
+
caller-chosen MetaTables namespace, physical-name app segment and optional
|
|
26
|
+
SQLAlchemy base, with the contract's columns, dtypes, time index, index
|
|
27
|
+
names and foreign keys and a stable identifier `<Contract>.<instance_key>`.
|
|
28
|
+
The core tables remain the Markets-owned instance.
|
|
29
|
+
- `PortfolioDatasetAvailabilityTable` (`PortfolioDatasetAvailability`) catalogs,
|
|
30
|
+
per portfolio, the values, weights and signal instance uids and the
|
|
31
|
+
reconciled population state of the values instance, mirroring
|
|
32
|
+
`IndexDatasetAvailability`. `SignalMetadataTable.meta_table_uid` records the
|
|
33
|
+
signal's instance. Alembic revision `0021` creates the table and the column;
|
|
34
|
+
no existing table, column or row changes.
|
|
35
|
+
- `msm_portfolios.services.portfolio_datasets` adds
|
|
36
|
+
`register_portfolio_datasets`, `reconcile_portfolio_dataset_availability`,
|
|
37
|
+
`list_portfolio_dataset_states` and `verify_contract_instance`. Registration
|
|
38
|
+
verifies each declared table against the contract; reconciliation aggregates
|
|
39
|
+
each instance once for all of its portfolios and records unreadable
|
|
40
|
+
instances as `unavailable`.
|
|
41
|
+
|
|
42
|
+
- `apps.v1.identity` adds `acting_identity()`, the one place the Markets API
|
|
43
|
+
decides whom a request acts for: `User.get_requester()` on a requester-bound
|
|
44
|
+
call, `User.get_logged_user()` otherwise, never both, and `None` outside a
|
|
45
|
+
request. `registry_write` wraps every API service that creates, updates or
|
|
46
|
+
deletes a registry row (accounts, asset categories, assets, calendars,
|
|
47
|
+
indexes, portfolio groups, portfolio signals, portfolios, pricing curves and
|
|
48
|
+
pricing market data) and records the acting identity with the resource,
|
|
49
|
+
action and row uid on the `apps.v1.identity` logger after a successful
|
|
50
|
+
write. The Index routes derive their actor from the acting identity, so a
|
|
51
|
+
requester-bound call acts for the requester.
|
|
52
|
+
- Markets API routes the ADR 0047 boundary needs: `POST /api/v1/account/`
|
|
53
|
+
and `PATCH /api/v1/account/{uid}/` (account create and update over
|
|
54
|
+
`msm.api.accounts`); `POST /api/v1/index/{uid}/formulas/`,
|
|
55
|
+
`.../{definition_uid}/activate/`, `.../{definition_uid}/retire/`,
|
|
56
|
+
`.../formulas/preview/` and `.../{definition_uid}/preview/` (formula save,
|
|
57
|
+
activate, retire and preview over `FormulaIndex`, previews as
|
|
58
|
+
`core.tabular_frame@v1`); `GET .../by-uids/?uid__in=` batch lookups for
|
|
59
|
+
assets, accounts, portfolios and indexes (at most 500 uids, request order,
|
|
60
|
+
unknown uids omitted, no paging or discovery); `GET /api/v1/portfolio/values/`
|
|
61
|
+
and `GET /api/v1/portfolio/weights/` multi-portfolio frames grouped by
|
|
62
|
+
catalogued table; and `POST /api/v1/portfolio/{uid}/datasets/`,
|
|
63
|
+
`GET /api/v1/portfolio/{uid}/datasets/` and
|
|
64
|
+
`POST /api/v1/portfolio/datasets/reconcile/` for the portfolio dataset
|
|
65
|
+
catalog. All are registered in the Command Center adapter contract; the
|
|
66
|
+
mutating ones record the acting identity. The by-uid lookups accept
|
|
67
|
+
`include=<sidecar MetaTable uid>` and attach provider sidecar rows under
|
|
68
|
+
`includes`, resolving the sidecar's foreign key to the core `uid` from the
|
|
69
|
+
MetaTables catalog and reading each sidecar once (ADR 0047 `include`
|
|
70
|
+
hydration; the Markets workload needs `data_viewer` on the sidecar).
|
|
71
|
+
- A design note for the contracts package split and `msm.client` (ADR 0047,
|
|
72
|
+
decision 2) under `docs/planning/implementation_tasks/`; the README now
|
|
73
|
+
describes `msm.client` as planned rather than shipped.
|
|
74
|
+
- The `markets-api` resource in `.mainsequence/workflows/ms-markets-api.yaml`
|
|
75
|
+
declares `acts_for_requester: true`, so the platform signs the person an
|
|
76
|
+
application works for into the caller assertion and the API acts for that
|
|
77
|
+
requester (ADR 0047, decision 3). Caller-bound calls are unchanged.
|
|
78
|
+
|
|
79
|
+
### Changed
|
|
80
|
+
|
|
81
|
+
- `portfolio_values`, `latest_portfolio_weights` and the new `signal_weights`
|
|
82
|
+
read in `msm_portfolios.services.portfolio_reads` resolve each portfolio's
|
|
83
|
+
table from the catalog and read it by uid through `TimeIndexTableRef`,
|
|
84
|
+
filtered by `portfolio_identifier` or `signal_uid`. Portfolios without a
|
|
85
|
+
catalog row read the core tables as before. A request for several portfolios
|
|
86
|
+
groups them by table uid, reads each table once and returns one ordered
|
|
87
|
+
list. `latest_portfolio_weights` gains `order`, and the reads accept a
|
|
88
|
+
`dataset_reader` for tests. The portfolio values, weights and signal-weight
|
|
89
|
+
API routes use these reads. The `apps/v1` runtimes attach
|
|
90
|
+
`PortfolioDatasetAvailability`.
|
|
18
91
|
|
|
19
92
|
## [2.2.12] - 2026-10-22
|
|
20
93
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ms-markets
|
|
3
|
-
Version: 2.2.13.
|
|
3
|
+
Version: 2.2.13.dev38
|
|
4
4
|
Summary: Financial markets ORM, engines, and application management extensions for Main Sequence.
|
|
5
5
|
Project-URL: Changelog, https://github.com/mainsequence-projects/MainSequenceMarkets/blob/main/CHANGELOG.md
|
|
6
6
|
Project-URL: Source, https://github.com/mainsequence-projects/MainSequenceMarkets
|
|
@@ -334,7 +334,9 @@ Main package areas:
|
|
|
334
334
|
contracts
|
|
335
335
|
- `msm.constants`: static built-in keys such as asset type constants used across
|
|
336
336
|
applications and examples
|
|
337
|
-
- `msm.client`:
|
|
337
|
+
- `msm.client`: planned typed HTTP client over the Markets API with a remote
|
|
338
|
+
row backend (ADR 0047, decision 2); not shipped yet. Consumers use `msm.api`
|
|
339
|
+
today
|
|
338
340
|
- `msm.data_nodes`: market TimeIndexTableUpdater contracts, including account holdings,
|
|
339
341
|
execution events, asset snapshots, and asset pricing details
|
|
340
342
|
- `msm.api.execution`: order managers, target quantities, orders, events,
|
|
@@ -56,7 +56,9 @@ Main package areas:
|
|
|
56
56
|
contracts
|
|
57
57
|
- `msm.constants`: static built-in keys such as asset type constants used across
|
|
58
58
|
applications and examples
|
|
59
|
-
- `msm.client`:
|
|
59
|
+
- `msm.client`: planned typed HTTP client over the Markets API with a remote
|
|
60
|
+
row backend (ADR 0047, decision 2); not shipped yet. Consumers use `msm.api`
|
|
61
|
+
today
|
|
60
62
|
- `msm.data_nodes`: market TimeIndexTableUpdater contracts, including account holdings,
|
|
61
63
|
execution events, asset snapshots, and asset pricing details
|
|
62
64
|
- `msm.api.execution`: order managers, target quantities, orders, events,
|
|
@@ -4,11 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
Proposed. Drafted 2026-10-25 from an analysis of this repository, the
|
|
6
6
|
`markets-analytics` API, the `alpaca-connectors` application and the installed
|
|
7
|
-
MetaTables and SDK contracts.
|
|
7
|
+
MetaTables and SDK contracts. The
|
|
8
8
|
`development` branch has since moved to MetaTables 0.1.51, whose namespace and
|
|
9
|
-
table roles (`owner`, `editor`, `data_writer`, `
|
|
10
|
-
Writer vocabulary used below; the grant boundaries this
|
|
11
|
-
unchanged by that rename, and implementation
|
|
9
|
+
table roles (`owner`, `editor`, `data_writer`, `data_viewer`, `metadata_viewer`)
|
|
10
|
+
replace the Reader and Writer vocabulary used below; the grant boundaries this
|
|
11
|
+
ADR draws are unchanged by that rename, and implementation uses the role names.
|
|
12
|
+
|
|
13
|
+
Migration path step 1 is implemented on `development` (see "Implementation
|
|
14
|
+
notes" at the end). Steps 2 to 4 are not.
|
|
12
15
|
|
|
13
16
|
It builds on [ADR 0008](0008-metatable-table-and-api-model-split.md) (row
|
|
14
17
|
objects separate from table declarations), [ADR 0030](0030-explicit-portfolio-price-source-dependency.md)
|
|
@@ -150,8 +153,8 @@ contract, not the table schema, is the compatibility promise.
|
|
|
150
153
|
|
|
151
154
|
Every handler and service authorizes against one identity: the requester on a
|
|
152
155
|
requester-bound call, the caller otherwise, never both. The `markets-api`
|
|
153
|
-
resource declares `acts_for_requester: true
|
|
154
|
-
|
|
156
|
+
resource declares `acts_for_requester: true` in its workflow. Services enforce
|
|
157
|
+
domain policy: ownership and Team scoping for
|
|
155
158
|
portfolios, accounts, indexes and formula definitions, and application-level
|
|
156
159
|
permissions such as "this application may register accounts". Writes keep
|
|
157
160
|
running as the Markets workload, whose Writer grant is the single place writes
|
|
@@ -318,3 +321,90 @@ Under this ADR:
|
|
|
318
321
|
- Row-level ownership inside shared tables. MetaTables grants are per table
|
|
319
322
|
by design; this ADR works with that rather than against it.
|
|
320
323
|
- Moving signals, strategies or engines into Markets.
|
|
324
|
+
|
|
325
|
+
## Implementation notes
|
|
326
|
+
|
|
327
|
+
### 2026-10-25: step 1, decision 5 (contract plus instances, catalog)
|
|
328
|
+
|
|
329
|
+
Implemented in `msm_portfolios.data_nodes.contract_instances`,
|
|
330
|
+
`msm.models.portfolio_dataset_availability`, Alembic revision `0021`,
|
|
331
|
+
`msm_portfolios.services.portfolio_datasets` and
|
|
332
|
+
`msm_portfolios.services.portfolio_reads`. Deviations and refinements:
|
|
333
|
+
|
|
334
|
+
- The catalog row is one per portfolio, carrying the values, weights and
|
|
335
|
+
signal instance uids together, as this ADR lists them. The reconciled
|
|
336
|
+
population state, row count and time bounds describe the values instance;
|
|
337
|
+
weights and signal instances are catalogued but not aggregated. The Index
|
|
338
|
+
catalog has one row per (Index, dataset) because every cadence table is a
|
|
339
|
+
dataset in its own right; for a portfolio the values series is the dataset
|
|
340
|
+
and the other two are its supporting facts.
|
|
341
|
+
- An instance is named `<storage_app>__<contract>__<instance_key>` and
|
|
342
|
+
identified as `<Contract>.<instance_key>`, namespace-prefixed outside the
|
|
343
|
+
default Markets namespace. The ADR's `alpaca_connectors__portfoliosts` is
|
|
344
|
+
therefore `alpaca_connectors__portfoliosts__alpaca`; the key keeps two
|
|
345
|
+
instances of one provider distinct.
|
|
346
|
+
- Registration verifies each declared table against the contract (columns and
|
|
347
|
+
index names) through the MetaTables catalog before writing the row, and
|
|
348
|
+
reconciles at once; `reconcile=False` leaves the row `unavailable` with error
|
|
349
|
+
code `not_reconciled` until the first run. A provider that adds columns
|
|
350
|
+
passes verification.
|
|
351
|
+
- Reads use `TimeIndexTableRef` for catalogued instances and keep the compiled
|
|
352
|
+
SQL path for the core tables, so a portfolio without a catalog row behaves
|
|
353
|
+
exactly as before. Reconciliation aggregates provider instances with one
|
|
354
|
+
compiled `count`, `min`, `max` statement per instance; this needs the Markets
|
|
355
|
+
workload to hold `data_viewer` on the instance, which is the grant this ADR
|
|
356
|
+
asks providers to give.
|
|
357
|
+
- Signals: `SignalMetadataTable.meta_table_uid` is set by registration when the
|
|
358
|
+
portfolio has a `signal_uid`, so a signal read without a portfolio still
|
|
359
|
+
resolves its instance.
|
|
360
|
+
|
|
361
|
+
### 2026-10-25: step 1, decision 3 (acting identity)
|
|
362
|
+
|
|
363
|
+
Implemented in `apps/v1/identity.py`. `acting_identity()` returns the requester
|
|
364
|
+
on a requester-bound call and the caller otherwise, never both, and `None`
|
|
365
|
+
outside an authenticated request so local scripts and direct service calls keep
|
|
366
|
+
working. `registry_write` wraps every `apps/v1` service that creates, updates or
|
|
367
|
+
deletes a registry row and records resource, action, row uid and acting identity
|
|
368
|
+
after a successful write. The Index actor is derived from the acting identity.
|
|
369
|
+
|
|
370
|
+
Deviations and open items:
|
|
371
|
+
|
|
372
|
+
- No Markets registry table has an author or owner column, so "recording the
|
|
373
|
+
acting user" is a structured log record on the `apps.v1.identity` logger, not
|
|
374
|
+
a column write. The hook is the place a column is filled once one exists.
|
|
375
|
+
- Ownership and Team scoping policies are not enforced yet; the helper gives
|
|
376
|
+
every service one identity to authorize against, and the platform's own
|
|
377
|
+
grants still apply to requester-bound reads.
|
|
378
|
+
- `acts_for_requester: true` on the `markets-api` resource is required for a
|
|
379
|
+
requester to be present. It is declared in
|
|
380
|
+
`.mainsequence/workflows/ms-markets-api.yaml` and deploys with the branch.
|
|
381
|
+
|
|
382
|
+
### 2026-10-25: step 1, missing routes
|
|
383
|
+
|
|
384
|
+
Added to `apps/v1`: account create and update; formula save, activate, retire
|
|
385
|
+
and preview over `FormulaIndex`; batch lookups by uid (`uid__in`) for assets,
|
|
386
|
+
accounts, portfolios and indexes; multi-portfolio values and weights frames;
|
|
387
|
+
portfolio dataset registration, read and reconcile. Each follows the existing
|
|
388
|
+
router and service layout, carries a Command Center contract and is registered
|
|
389
|
+
in the adapter operation registry. Deviations and refinements:
|
|
390
|
+
|
|
391
|
+
- Batch lookups are `GET <resource>/by-uids/?uid__in=` with repeated or
|
|
392
|
+
comma-separated uids, at most 500, returning the found rows in request order
|
|
393
|
+
inside a `ResourceCollection` without paging, search or a discovery route.
|
|
394
|
+
They are lookups, not collections, so they carry no
|
|
395
|
+
`command-center.resource_collection@v1` contract.
|
|
396
|
+
- The multi-portfolio frames are `GET /portfolio/values/` and
|
|
397
|
+
`GET /portfolio/weights/` with `portfolio_uid__in`; every uid must be a
|
|
398
|
+
portfolio. `order` and `limit` apply to the merged result.
|
|
399
|
+
- `include` hydration lives on the by-uid lookups: `include=<sidecar MetaTable
|
|
400
|
+
uid>` resolves the sidecar from the MetaTables catalog, requires a
|
|
401
|
+
single-column foreign key to the core table's `uid` (the sidecar rule of
|
|
402
|
+
decision 4), reads each sidecar once for the returned uids as the Markets
|
|
403
|
+
workload and attaches rows under `includes[<uid>]`. It works for a sidecar in
|
|
404
|
+
any namespace today, including `mainsequence.markets`, so the Alpaca account
|
|
405
|
+
listing can move before step 3. Search-driven list routes do not take
|
|
406
|
+
`include`; a consumer pages on its own sidecar and hydrates by uid, which is
|
|
407
|
+
the direction the worked example needs.
|
|
408
|
+
- Formula save takes the Index identity from the stored row and accepts only
|
|
409
|
+
the definition and inputs, so a route cannot change identity fields while
|
|
410
|
+
storing a formula; `PATCH /index/{uid}/` remains the identity update.
|
|
@@ -12,8 +12,41 @@ direct account snapshots and virtual-fund-grouped views.
|
|
|
12
12
|
- `items` contains the library `msm.api.accounts.Account` contract:
|
|
13
13
|
`uid`, `unique_identifier`, `account_name`, `is_paper`,
|
|
14
14
|
`account_is_active`, `holdings_data_node_uid`, and `metadata_json`
|
|
15
|
+
- `POST /api/v1/account/`
|
|
16
|
+
- creates one `Account` identity row from the `msm.api.accounts.AccountCreate`
|
|
17
|
+
payload (`unique_identifier`, `account_name`, `is_paper`,
|
|
18
|
+
`account_is_active`, `account_group_uid`, `holdings_data_node_uid`,
|
|
19
|
+
`metadata_json`) and returns it with `201`
|
|
20
|
+
- `409` when the row cannot be stored, for example a duplicate
|
|
21
|
+
`unique_identifier`
|
|
22
|
+
- ADR 0047: providers register accounts here instead of writing the Account
|
|
23
|
+
table; the write runs as the Markets workload and records the acting
|
|
24
|
+
identity
|
|
25
|
+
- `GET /api/v1/account/by-uids/?uid__in=<uid>&uid__in=<uid>`
|
|
26
|
+
- batch lookup by uid; `uid__in` is repeated or comma-separated, at most 500
|
|
27
|
+
- returns the matching `Account` rows in request order inside a
|
|
28
|
+
`ResourceCollection`; unknown uids are omitted, so `totalItems` is the
|
|
29
|
+
number found
|
|
30
|
+
- a bounded lookup for consumers that hydrate core columns from their own
|
|
31
|
+
rows, not a browsable collection: no `limit`, `offset`, search or
|
|
32
|
+
discovery route
|
|
33
|
+
- `include=<sidecar MetaTable uid>` (repeated or comma-separated, at most
|
|
34
|
+
10) attaches provider sidecar rows under `includes[<uid>]` on every item
|
|
35
|
+
(`null` when the sidecar has no row). A sidecar is a provider table with a
|
|
36
|
+
single-column foreign key to this resource's `uid`, proven from the
|
|
37
|
+
MetaTables catalog; each sidecar is read once for all returned uids. The
|
|
38
|
+
Markets workload needs `data_viewer` on the sidecar (`409` otherwise,
|
|
39
|
+
`404` for a uid that is not a visible MetaTable, `400` for a table that is
|
|
40
|
+
not a sidecar of this resource). Columns come back as stored; Markets never
|
|
41
|
+
decrypts a provider column. `includes` is `{}` when nothing is included
|
|
15
42
|
- `GET /api/v1/account/{uid}/`
|
|
16
43
|
- returns one canonical `Account` row by uid
|
|
44
|
+
- `PATCH /api/v1/account/{uid}/`
|
|
45
|
+
- updates the mutable fields of one `Account` row from the
|
|
46
|
+
`msm.api.accounts.AccountUpdate` payload (`account_name`, `is_paper`,
|
|
47
|
+
`account_is_active`, `account_group_uid`, `holdings_data_node_uid`,
|
|
48
|
+
`metadata_json`); omitted fields are unchanged
|
|
49
|
+
- `404` when the uid is unknown
|
|
17
50
|
- `GET /api/v1/account/{uid}/summary/`
|
|
18
51
|
- returns the reusable `FrontEndDetailSummary` response for account detail
|
|
19
52
|
pages
|
|
@@ -20,6 +20,21 @@ provider-specific records. The API does not flatten those separate models into `
|
|
|
20
20
|
- exposes `GET /api/v1/asset/discovery/`
|
|
21
21
|
- returns the library `msm.api.assets.Asset` contract:
|
|
22
22
|
`uid`, `unique_identifier`, and `asset_type`
|
|
23
|
+
- `GET /api/v1/asset/by-uids/?uid__in=<uid>&uid__in=<uid>`
|
|
24
|
+
- batch lookup by uid (ADR 0047); `uid__in` is repeated or comma-separated,
|
|
25
|
+
at most 500
|
|
26
|
+
- returns the matching `Asset` identity rows in request order inside a
|
|
27
|
+
`ResourceCollection`; unknown uids are omitted
|
|
28
|
+
- not a browsable collection: no `limit`, `offset`, search or discovery route
|
|
29
|
+
- `include=<sidecar MetaTable uid>` (repeated or comma-separated, at most
|
|
30
|
+
10) attaches provider sidecar rows under `includes[<uid>]` on every item
|
|
31
|
+
(`null` when the sidecar has no row). A sidecar is a provider table with a
|
|
32
|
+
single-column foreign key to this resource's `uid`, proven from the
|
|
33
|
+
MetaTables catalog; each sidecar is read once for all returned uids. The
|
|
34
|
+
Markets workload needs `data_viewer` on the sidecar (`409` otherwise,
|
|
35
|
+
`404` for a uid that is not a visible MetaTable, `400` for a table that is
|
|
36
|
+
not a sidecar of this resource). Columns come back as stored; Markets never
|
|
37
|
+
decrypts a provider column. `includes` is `{}` when nothing is included
|
|
23
38
|
- `GET /api/v1/asset/monitor/frame/`
|
|
24
39
|
- supports `search`, `limit`, `offset`, optional `asset_type`, and repeated
|
|
25
40
|
`unique_identifiers`
|
|
@@ -209,10 +209,30 @@ Bearer token. Handlers read the verified caller from `request.state.user` (a
|
|
|
209
209
|
`User.get_logged_user()`. The platform's caller assertions carry only those two
|
|
210
210
|
facts, for the caller and for a requester; an assertion that lists `team_uids` is
|
|
211
211
|
refused with `401`. Membership is checked on demand with
|
|
212
|
-
`RequestUserIdentity.in_teams()`, which no Markets route needs.
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
212
|
+
`RequestUserIdentity.in_teams()`, which no Markets route needs. Route code does
|
|
213
|
+
not parse authentication headers or bind SDK request-header context variables.
|
|
214
|
+
|
|
215
|
+
Every handler and service acts for one identity (ADR 0047, decision 3):
|
|
216
|
+
`apps.v1.identity.acting_identity()` returns `User.get_requester()` on a
|
|
217
|
+
requester-bound call and `User.get_logged_user()` otherwise, never both, and
|
|
218
|
+
`None` outside an authenticated request. The Index routes derive their actor from
|
|
219
|
+
it; the deprecated `IndexActor.team_uids` stays empty for HTTP callers. Every
|
|
220
|
+
service that creates, updates or deletes a registry row is wrapped with
|
|
221
|
+
`apps.v1.identity.registry_write`, which resolves the acting identity before the
|
|
222
|
+
write and, after a successful write, records resource, action, row uid and the
|
|
223
|
+
acting identity's uid and kind on the `apps.v1.identity` logger. No registry
|
|
224
|
+
table has an author or owner column yet; when one does, the same hook supplies
|
|
225
|
+
its value. Writes keep running as the Markets workload, whose `data_writer`
|
|
226
|
+
role on `mainsequence.markets` is the single place writes are allowed; the API's
|
|
227
|
+
policy decides who may trigger them.
|
|
228
|
+
|
|
229
|
+
A requester is only present when the `markets-api` resource declares
|
|
230
|
+
`acts_for_requester: true` in `.mainsequence/workflows/ms-markets-api.yaml`.
|
|
231
|
+
That declaration lets the platform sign the person an application works for
|
|
232
|
+
into the caller assertion; it is an ordinary workflow declaration pushed with
|
|
233
|
+
the deployment. Until it is declared, every call is caller-bound and
|
|
234
|
+
`acting_identity()` returns the caller, the calling application's workload
|
|
235
|
+
User. The declaration is in the repository's workflow file.
|
|
216
236
|
|
|
217
237
|
## API Discoverability
|
|
218
238
|
|
|
@@ -12,12 +12,18 @@ typed-library operation through `FormulaIndex`.
|
|
|
12
12
|
| `GET` | `/api/v1/index-type/{index_type}/` | `getIndexType` | One type |
|
|
13
13
|
| `GET` | `/api/v1/index/` | `listIndexes` | Counted Index page |
|
|
14
14
|
| `POST` | `/api/v1/index/` | `createIndex` | New Index identity |
|
|
15
|
+
| `GET` | `/api/v1/index/by-uids/` | `getIndexesByUids` | Batch lookup by uid |
|
|
15
16
|
| `GET` | `/api/v1/index/{uid}/` | `getIndex` | One Index |
|
|
16
17
|
| `PATCH` | `/api/v1/index/{uid}/` | `updateIndex` | Updated identity metadata |
|
|
17
18
|
| `DELETE` | `/api/v1/index/{uid}/` | `deleteIndex` | Direct row deletion |
|
|
18
19
|
| `GET` | `/api/v1/index/{uid}/summary/` | `getIndexSummary` | Detail summary |
|
|
19
20
|
| `GET` | `/api/v1/index/{uid}/formulas/` | `listIndexFormulas` | Formula history |
|
|
21
|
+
| `POST` | `/api/v1/index/{uid}/formulas/` | `saveIndexFormula` | Stored formula version |
|
|
22
|
+
| `POST` | `/api/v1/index/{uid}/formulas/preview/` | `previewIndexFormula` | Unsaved formula as a tabular frame |
|
|
20
23
|
| `GET` | `/api/v1/index/{uid}/formulas/{definition_uid}/` | `getIndexFormula` | Formula and exact inputs |
|
|
24
|
+
| `POST` | `/api/v1/index/{uid}/formulas/{definition_uid}/activate/` | `activateIndexFormula` | Activated version |
|
|
25
|
+
| `POST` | `/api/v1/index/{uid}/formulas/{definition_uid}/retire/` | `retireIndexFormula` | Retired version |
|
|
26
|
+
| `POST` | `/api/v1/index/{uid}/formulas/{definition_uid}/preview/` | `previewStoredIndexFormula` | Stored formula as a tabular frame |
|
|
21
27
|
| `GET` | `/api/v1/index/{uid}/datasets/` | `listIndexDatasets` | Per-Index dataset states |
|
|
22
28
|
| `GET` | `/api/v1/index/{uid}/datasets/{meta_table_uid}/` | `getIndexDatasetSummary` | Selected dataset summary |
|
|
23
29
|
| `GET` | `/api/v1/index/{uid}/datasets/{meta_table_uid}/values/` | `getIndexDatasetValuesFrame` | Bounded tabular frame |
|
|
@@ -26,7 +32,15 @@ typed-library operation through `FormulaIndex`.
|
|
|
26
32
|
| `GET` | `/api/v1/asset/{uid}/related-meta-tables/` | `listAssetRelatedMetaTables` | Asset source-table discovery |
|
|
27
33
|
|
|
28
34
|
All operations are present in the Adapter from API contract. Create, update,
|
|
29
|
-
and
|
|
35
|
+
delete, and the formula save, activate and retire routes are mutations; the
|
|
36
|
+
previews are queries that persist nothing.
|
|
37
|
+
|
|
38
|
+
`GET /api/v1/index/by-uids/?uid__in=<uid>&uid__in=<uid>` is a bounded batch
|
|
39
|
+
lookup (ADR 0047): `uid__in` is repeated or comma-separated, at most 500, the
|
|
40
|
+
matching rows return in request order inside a `ResourceCollection`, unknown
|
|
41
|
+
uids are omitted, and there is no paging, search or discovery route.
|
|
42
|
+
`include=<sidecar MetaTable uid>` attaches provider sidecar rows under
|
|
43
|
+
`includes[<uid>]`, as described for [accounts](accounts.md).
|
|
30
44
|
|
|
31
45
|
## Identity Payload
|
|
32
46
|
|
|
@@ -80,6 +94,40 @@ and input count. Detail adds alignment parameters, metadata, and exact inputs:
|
|
|
80
94
|
The response has no source key, resolver object, configurable identity/value
|
|
81
95
|
columns, selectors, transforms, coefficients, or units.
|
|
82
96
|
|
|
97
|
+
## Formula Lifecycle
|
|
98
|
+
|
|
99
|
+
Formula creation, lifecycle and preview go through `msm.api.FormulaIndex`
|
|
100
|
+
(ADR 0037, ADR 0038); the routes are thin wrappers that take the Index
|
|
101
|
+
identity from the stored row and record the acting identity (ADR 0047).
|
|
102
|
+
|
|
103
|
+
- `POST /api/v1/index/{uid}/formulas/` with `{"definition": ..., "inputs": [...]}`
|
|
104
|
+
persists one version through `FormulaIndex.upsert`. `definition` is an
|
|
105
|
+
`IndexFormulaDefinition` (`valid_from`, `formula`, `alignment_policy`,
|
|
106
|
+
`alignment_parameters_json`, `missing_data_policy`, optional `status`,
|
|
107
|
+
`version`, `valid_to`, `metadata_json`); `inputs` are the exact source
|
|
108
|
+
bindings shown above. A definition identical to a stored version returns that
|
|
109
|
+
version; otherwise the next monotonic version is stored as `draft` unless
|
|
110
|
+
`status` asks for `active` or `retired`. `400` for a formula that fails the
|
|
111
|
+
contract or an Index with `calculation_method="custom"`, `404` for an unknown
|
|
112
|
+
Index or source, `409` when the row cannot be stored. Returns the
|
|
113
|
+
`IndexFormulaDetail` with `201`.
|
|
114
|
+
- `POST /api/v1/index/{uid}/formulas/{definition_uid}/activate/` activates a
|
|
115
|
+
draft and retires the open predecessor atomically.
|
|
116
|
+
- `POST /api/v1/index/{uid}/formulas/{definition_uid}/retire/` retires a version
|
|
117
|
+
at `valid_to` (body, optional; now by default).
|
|
118
|
+
- `POST /api/v1/index/{uid}/formulas/preview/` with
|
|
119
|
+
`{"definition": ..., "inputs": [...], "start": ..., "end": ...}` validates an
|
|
120
|
+
unsaved formula, reads the pinned source MetaTables over the window through
|
|
121
|
+
`TimeIndexTableRef` and returns the calculated observations as
|
|
122
|
+
`core.tabular_frame@v1` (`time_index`, `index_identifier`, `value`,
|
|
123
|
+
`definition_uid`, `observation_status`, `source_as_of`, `metadata_json`;
|
|
124
|
+
timestamps as epoch milliseconds). Nothing is persisted.
|
|
125
|
+
- `POST /api/v1/index/{uid}/formulas/{definition_uid}/preview/` with
|
|
126
|
+
`{"start": ..., "end": ...}` does the same for a stored version.
|
|
127
|
+
|
|
128
|
+
`start` and `end` must be timezone-aware and `end` later than `start`. A
|
|
129
|
+
definition uid that belongs to another Index is `404`.
|
|
130
|
+
|
|
83
131
|
## Related MetaTables
|
|
84
132
|
|
|
85
133
|
Asset and Index related-table routes accept:
|
|
@@ -4,7 +4,8 @@ The `apps/v1` portfolio routes expose portfolio identity rows, detail-page
|
|
|
4
4
|
composition, latest portfolio weights, and delete operations.
|
|
5
5
|
|
|
6
6
|
The routes do not create or update portfolios. Portfolio construction remains a
|
|
7
|
-
library workflow outside this API surface.
|
|
7
|
+
library workflow outside this API surface. ADR 0047 adds the multi-portfolio
|
|
8
|
+
frames, the batch lookup and the dataset catalog routes described below.
|
|
8
9
|
|
|
9
10
|
## Runtime Sources
|
|
10
11
|
|
|
@@ -18,6 +19,11 @@ library workflow outside this API surface.
|
|
|
18
19
|
- Signal weights resolve from nullable `Portfolio.signal_uid`, which points to
|
|
19
20
|
`SignalMetadataTable.signal_uid`. The API does not recompute signal identity
|
|
20
21
|
from the TimeIndexTableUpdater build configuration or by scanning shared signal storage.
|
|
22
|
+
- Values, weights and signal-weight reads resolve each portfolio's table from
|
|
23
|
+
the Markets catalog (`PortfolioDatasetAvailabilityTable`) and read it by uid
|
|
24
|
+
through `TimeIndexTableRef`; a portfolio without a catalog row reads the core
|
|
25
|
+
tables (ADR 0047, see the
|
|
26
|
+
[portfolios knowledge page](../../knowledge/msm_portfolios/portfolios/index.md)).
|
|
21
27
|
|
|
22
28
|
Latest weights resolve through:
|
|
23
29
|
|
|
@@ -240,6 +246,88 @@ When present, it is the canonical `SignalMetadataTable.signal_uid` used by
|
|
|
240
246
|
`GET /api/v1/portfolio/{uid}/signals_weights/`. The signal-weights endpoint
|
|
241
247
|
does not infer the signal by scanning shared signal-weight storage.
|
|
242
248
|
|
|
249
|
+
## Batch Lookup By Uid
|
|
250
|
+
|
|
251
|
+
```text
|
|
252
|
+
GET /api/v1/portfolio/by-uids/?uid__in=<uid>&uid__in=<uid>
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Returns the matching `Portfolio` rows in request order inside a
|
|
256
|
+
`ResourceCollection`. `uid__in` is repeated or comma-separated, at most 500;
|
|
257
|
+
unknown uids are omitted. A bounded lookup, not a browsable collection: no
|
|
258
|
+
`limit`, `offset`, search or discovery route. `include=<sidecar MetaTable uid>`
|
|
259
|
+
attaches provider sidecar rows under `includes[<uid>]`, as described for
|
|
260
|
+
[accounts](accounts.md).
|
|
261
|
+
|
|
262
|
+
## Values Frame For Several Portfolios
|
|
263
|
+
|
|
264
|
+
```text
|
|
265
|
+
GET /api/v1/portfolio/values/?portfolio_uid__in=<uid>&portfolio_uid__in=<uid>&start_date=&end_date=&order=desc&limit=500
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Returns one `core.tabular_frame@v1` with columns `time_index`,
|
|
269
|
+
`portfolio_identifier`, `portfolio_uid`, `close`, `return`, `calculated_close`
|
|
270
|
+
and `close_time` for every requested portfolio. The portfolios are grouped by
|
|
271
|
+
the `PortfoliosTS` instance the catalog records for them; each instance is read
|
|
272
|
+
once, so comparing an Alpaca portfolio with an Interactive Brokers portfolio is
|
|
273
|
+
one call whose two sources live in two namespaces. `order` sorts by
|
|
274
|
+
`time_index` across all portfolios and `limit` (1 to 5000) bounds the merged
|
|
275
|
+
result. Every uid must be a portfolio (`404` otherwise); `source.context`
|
|
276
|
+
names the requested uids and the window.
|
|
277
|
+
|
|
278
|
+
## Weights Frame For Several Portfolios
|
|
279
|
+
|
|
280
|
+
```text
|
|
281
|
+
GET /api/v1/portfolio/weights/?portfolio_uid__in=<uid>&weights_date=&as_of=true
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Returns one `core.tabular_frame@v1` with one weight snapshot per portfolio:
|
|
285
|
+
the latest snapshot, the latest at or before `weights_date` with `as_of=true`,
|
|
286
|
+
or the exact `weights_date` snapshot with `as_of=false`. Columns are
|
|
287
|
+
`time_index`, `portfolio_identifier`, `portfolio_uid`, `asset_identifier`,
|
|
288
|
+
`weight`, `weight_before`, `price_current`, `price_before`, `volume_current`
|
|
289
|
+
and `volume_before`. Portfolios are grouped by their `PortfolioWeightsTS`
|
|
290
|
+
instance as for values.
|
|
291
|
+
|
|
292
|
+
## Dataset Catalog
|
|
293
|
+
|
|
294
|
+
```text
|
|
295
|
+
POST /api/v1/portfolio/{uid}/datasets/
|
|
296
|
+
GET /api/v1/portfolio/{uid}/datasets/
|
|
297
|
+
POST /api/v1/portfolio/datasets/reconcile/
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
A provider that computes a portfolio in its own namespace registers, per
|
|
301
|
+
portfolio, the `PortfoliosTS`, `PortfolioWeightsTS` and `SignalWeightsTS`
|
|
302
|
+
instances that hold its rows, and reconciles after each run (ADR 0047).
|
|
303
|
+
|
|
304
|
+
- `POST /api/v1/portfolio/{uid}/datasets/` takes `values_meta_table_uid`
|
|
305
|
+
(required), `weights_meta_table_uid`, `signal_meta_table_uid` and
|
|
306
|
+
`reconcile` (default `true`). Each table must be a `TimeIndexMetaTable`
|
|
307
|
+
visible to the Markets workload that exposes the contract columns and index
|
|
308
|
+
names; extra provider columns are allowed. The row is upserted, the signal's
|
|
309
|
+
`SignalMetadata.meta_table_uid` is bound when the portfolio has a
|
|
310
|
+
`signal_uid`, and the values instance is reconciled unless `reconcile` is
|
|
311
|
+
`false`, in which case the row is `unavailable` with error code
|
|
312
|
+
`not_reconciled`. Returns the `PortfolioDatasetState` with `201`; `404` for
|
|
313
|
+
an unknown portfolio or a table that is not visible, `400` for a table that
|
|
314
|
+
does not satisfy its contract.
|
|
315
|
+
- `GET /api/v1/portfolio/{uid}/datasets/` returns the catalog row, or `null`
|
|
316
|
+
when the portfolio exists and reads the core tables; `404` for an unknown
|
|
317
|
+
portfolio.
|
|
318
|
+
- `POST /api/v1/portfolio/datasets/reconcile/` takes `portfolio_uids` and
|
|
319
|
+
`portfolio_identifiers` (at least one selector, at most 500 in all) and
|
|
320
|
+
returns a `PortfolioDatasetReconciliationResult`: the reconciled states, one
|
|
321
|
+
aggregate per instance however many portfolios it holds, plus
|
|
322
|
+
`skipped_portfolio_uids` for portfolios without a catalog row. `404` names
|
|
323
|
+
selectors that are not portfolios.
|
|
324
|
+
|
|
325
|
+
`PortfolioDatasetState` carries `portfolio_uid`, `portfolio_identifier`, the
|
|
326
|
+
three table uids, `population_state` (`populated`, `compatible_empty` or
|
|
327
|
+
`unavailable`), `row_count`, `earliest_time_index`, `latest_time_index`,
|
|
328
|
+
`reconciled_at` and `error`. Registration and reconciliation record the acting
|
|
329
|
+
identity.
|
|
330
|
+
|
|
243
331
|
## Latest Portfolio Weights
|
|
244
332
|
|
|
245
333
|
```text
|