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.
Files changed (749) hide show
  1. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/CHANGELOG.md +75 -2
  2. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/PKG-INFO +4 -2
  3. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/README.md +3 -1
  4. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0047-markets-api-application-boundary.md +96 -6
  5. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/accounts.md +33 -0
  6. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/assets.md +15 -0
  7. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/index.md +24 -4
  8. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/indexes.md +49 -1
  9. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/portfolio.md +89 -1
  10. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_portfolios/portfolios/index.md +156 -17
  11. ms_markets-2.2.13.dev38/docs/planning/implementation_tasks/markets_contracts_package_and_client_plan.md +218 -0
  12. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_read_services.py +5 -0
  13. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/mkdocs.yml +1 -0
  14. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/pyproject.toml +1 -1
  15. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/__init__.py +3 -0
  16. ms_markets-2.2.13.dev38/src/msm/models/portfolio_dataset_availability.py +161 -0
  17. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/signals.py +11 -0
  18. ms_markets-2.2.13.dev38/src/msm_migrations/versions/mainsequence_markets/0021_portfolio_dataset_catalog.py +98 -0
  19. ms_markets-2.2.13.dev38/src/msm_portfolios/data_nodes/contract_instances.py +386 -0
  20. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/__init__.py +3 -0
  21. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/__init__.py +10 -0
  22. ms_markets-2.2.13.dev38/src/msm_portfolios/services/portfolio_datasets.py +530 -0
  23. ms_markets-2.2.13.dev38/src/msm_portfolios/services/portfolio_reads.py +855 -0
  24. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/public_api.py +68 -109
  25. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_accounts.py +116 -0
  26. ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_acting_identity.py +169 -0
  27. ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_batch_lookups.py +136 -0
  28. ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_index_formula_routes.py +288 -0
  29. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_portfolios.py +325 -19
  30. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_request_identity.py +2 -1
  31. ms_markets-2.2.13.dev38/tests/msm/fastapi/v1/test_sidecar_includes.py +169 -0
  32. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_legacy_schema_migration.py +18 -7
  33. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_migrations.py +6 -1
  34. ms_markets-2.2.13.dev38/tests/msm_portfolios/data_nodes/test_contract_instances.py +142 -0
  35. ms_markets-2.2.13.dev38/tests/msm_portfolios/services/test_portfolio_datasets.py +275 -0
  36. ms_markets-2.2.13.dev38/tests/msm_portfolios/services/test_portfolio_reads.py +482 -0
  37. ms_markets-2.2.13.dev37/src/msm_portfolios/services/portfolio_reads.py +0 -305
  38. ms_markets-2.2.13.dev37/tests/msm_portfolios/services/test_portfolio_reads.py +0 -136
  39. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/accounts/account_workflow/SKILL.md +0 -0
  40. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/accounts/valuation_resolver/SKILL.md +0 -0
  41. {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
  42. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/assets/asset_model_extension/SKILL.md +0 -0
  43. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/indices/index_workflow/SKILL.md +0 -0
  44. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/platform/bootstrap_registration/SKILL.md +0 -0
  45. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/platform/metatable_migrations/SKILL.md +0 -0
  46. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/portfolios/portfolio_workflow/SKILL.md +0 -0
  47. {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
  48. {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
  49. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.agents/skills/ms_markets/pricing/general_pricing/SKILL.md +0 -0
  50. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/.gitignore +0 -0
  51. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/LICENSE +0 -0
  52. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0005-pricing-package-refactor.md +0 -0
  53. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0006-asset-package-boundary.md +0 -0
  54. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0008-metatable-table-and-api-model-split.md +0 -0
  55. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0019-msm-portfolios-package-boundary.md +0 -0
  56. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0022-alembic-metatable-migration-alignment.md +0 -0
  57. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0023-deterministic-alembic-naming.md +0 -0
  58. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0024-namespace-scoped-alembic-version-locations.md +0 -0
  59. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0025-direct-metatable-runtime-binding.md +0 -0
  60. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0026-explicit-pricing-market-data-sets.md +0 -0
  61. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0027-account-target-position-portfolio-exposure.md +0 -0
  62. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0028-core-calendar-reference-data.md +0 -0
  63. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0029-account-holdings-virtual-fund-allocation-policy.md +0 -0
  64. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0030-explicit-portfolio-price-source-dependency.md +0 -0
  65. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0031-generic-portfolio-valuation-source.md +0 -0
  66. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0032-portfolio-group-many-to-many.md +0 -0
  67. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0033-pricing-valuation-position-boundary.md +0 -0
  68. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0034-command-center-asset-monitor-helpers.md +0 -0
  69. {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
  70. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0036-prepared-pricing-valuation-context.md +0 -0
  71. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0037-index-formula-and-custom-calculation-framework.md +0 -0
  72. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0038-index-user-api-and-fastapi-exploration.md +0 -0
  73. {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
  74. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0040-portfolio-temporal-ownership.md +0 -0
  75. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0041-installable-provider-http-toolkit.md +0 -0
  76. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0042-position-cash-flow-portfolio-accounting.md +0 -0
  77. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0043-sdk-9-metatables-client-hard-cut.md +0 -0
  78. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0044-namespaced-migration-provider-package.md +0 -0
  79. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0045-squashed-initial-schema-and-namespaced-packages.md +0 -0
  80. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/0046-legacy-0017-schema-bridge.md +0 -0
  81. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/README.md +0 -0
  82. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/fast_api/v1/0001-calendar-crud-route.md +0 -0
  83. {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
  84. {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
  85. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/ADR/fast_api/v1/0004-delete-impact-contract.md +0 -0
  86. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/changelog.md +0 -0
  87. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/concepts.md +0 -0
  88. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/calendars.md +0 -0
  89. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/command_center_bulk_actions.md +0 -0
  90. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/fixed_income_pricer.md +0 -0
  91. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/portfolio_groups.md +0 -0
  92. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/portfolio_signal_metadata.md +0 -0
  93. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/pricing_curves.md +0 -0
  94. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/pricing_market_data.md +0 -0
  95. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/provider_adapter_toolkit.md +0 -0
  96. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/resource_contracts.md +0 -0
  97. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/settings.md +0 -0
  98. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/fast_api/v1/virtualfund.md +0 -0
  99. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/getting-started.md +0 -0
  100. {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
  101. {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
  102. {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
  103. {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
  104. {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
  105. {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
  106. {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
  107. {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
  108. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/index.md +0 -0
  109. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/accounts/index.md +0 -0
  110. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/accounts/virtual_funds.md +0 -0
  111. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/asset_indexed_data_nodes.md +0 -0
  112. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/bonds.md +0 -0
  113. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/currency.md +0 -0
  114. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/assets/index.md +0 -0
  115. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/calendars/index.md +0 -0
  116. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/client/index.md +0 -0
  117. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/derivatives/futures.md +0 -0
  118. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/derivatives/index.md +0 -0
  119. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/execution/index.md +0 -0
  120. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/index.md +0 -0
  121. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/indices/formula_indexes.md +0 -0
  122. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/indices/index.md +0 -0
  123. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/migrations/index.md +0 -0
  124. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/models/index.md +0 -0
  125. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/platform/index.md +0 -0
  126. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/platform/meta_table_registration.md +0 -0
  127. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/platform/metatable_migrations.md +0 -0
  128. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/repositories/index.md +0 -0
  129. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm/services/index.md +0 -0
  130. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_portfolios/index.md +0 -0
  131. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_portfolios/portfolios/accounting.md +0 -0
  132. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/analytics.md +0 -0
  133. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/curves.md +0 -0
  134. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/fixings.md +0 -0
  135. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/index.md +0 -0
  136. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/instruments.md +0 -0
  137. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/market_data_sets.md +0 -0
  138. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/runtime_resolution.md +0 -0
  139. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/scenarios/curves.md +0 -0
  140. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/scenarios/index.md +0 -0
  141. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/knowledge/msm_pricing/scenarios/valuation.md +0 -0
  142. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/benchmark_curve_resolution_plan.md +0 -0
  143. {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
  144. {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
  145. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/generic_curve_reconstruction_upstream_plan.md +0 -0
  146. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/planning/implementation_tasks/generic_valuation_scenario_workflow_plan.md +0 -0
  147. {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
  148. {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
  149. {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
  150. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/reference/index.md +0 -0
  151. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/reference/indices.md +0 -0
  152. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/releasing.md +0 -0
  153. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/stylesheets/custom.css +0 -0
  154. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/01-assets.md +0 -0
  155. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/02-calendars.md +0 -0
  156. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/03-accounts.md +0 -0
  157. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/04-portfolios.md +0 -0
  158. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/05-pricing.md +0 -0
  159. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/06-index-formulas.md +0 -0
  160. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/docs/tutorial/index.md +0 -0
  161. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/__init__.py +0 -0
  162. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/__init__.py +0 -0
  163. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/__init__.py +0 -0
  164. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/account_portfolio_full_workflow.py +0 -0
  165. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/account_virtual_fund_allocation_example.py +0 -0
  166. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/utils/__init__.py +0 -0
  167. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/accounts/utils/reference_data.py +0 -0
  168. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/__init__.py +0 -0
  169. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/asset_category_workflow.py +0 -0
  170. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/asset_crud_workflow.py +0 -0
  171. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/asset_type_constants.py +0 -0
  172. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/bond_workflow.py +0 -0
  173. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/currency_spot_workflow.py +0 -0
  174. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/derivatives/__init__.py +0 -0
  175. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/derivatives/crypto_future_without_figi.py +0 -0
  176. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/derivatives/index_future_from_openfigi.py +0 -0
  177. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/us_treasury_bond_workflow.py +0 -0
  178. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/utils/__init__.py +0 -0
  179. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/assets/utils/reference_data.py +0 -0
  180. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/calendars/__init__.py +0 -0
  181. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/calendars/calendar_materialization_workflow.py +0 -0
  182. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/http_provider_contracts.py +0 -0
  183. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/__init__.py +0 -0
  184. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/delta_hedged_option_index.py +0 -0
  185. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/extension_owned_index_storage.py +0 -0
  186. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/formula_index.py +0 -0
  187. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/index_values_frequency_migration.py +0 -0
  188. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/indices/plain_index_values.py +0 -0
  189. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/__init__.py +0 -0
  190. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/bootstrap.py +0 -0
  191. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/custom_asset_details_extension.py +0 -0
  192. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/inspect_markets_metatable_models.py +0 -0
  193. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/platform/metatable_migration_lifecycle.py +0 -0
  194. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/workflows/__init__.py +0 -0
  195. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm/workflows/asset_category_workflow.py +0 -0
  196. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_cashflows_and_fx_valuation_example.py +0 -0
  197. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_custom_cashflow_model_example.py +0 -0
  198. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_custom_valuation_column_example.py +0 -0
  199. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_config.py +0 -0
  200. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_dynamic_migration.py +0 -0
  201. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_example.py +0 -0
  202. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_prepare_schema.py +0 -0
  203. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_equal_weights_run.py +0 -0
  204. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_groups_example.py +0 -0
  205. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_midnight_timestamp_repair.py +0 -0
  206. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_perpetual_funding_example.py +0 -0
  207. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_trailing_adv_participation_example.py +0 -0
  208. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_portfolios/portfolio_trailing_adv_participation_preview.py +0 -0
  209. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/__init__.py +0 -0
  210. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_pricing_example/README.md +0 -0
  211. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_pricing_example/__init__.py +0 -0
  212. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_pricing_example/main.py +0 -0
  213. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/bond_terms.py +0 -0
  214. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/curve_reconstruction.py +0 -0
  215. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/curve_scenario.py +0 -0
  216. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/fixed_income_spread_analytics.py +0 -0
  217. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/import_pricing_runtime.py +0 -0
  218. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/instrument_identity_boundary.py +0 -0
  219. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/pricing_registry_rows.py +0 -0
  220. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/pricing_valuation_context.py +0 -0
  221. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/resolved_curve_scenario.py +0 -0
  222. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/utils/__init__.py +0 -0
  223. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/utils/mock_market_data.py +0 -0
  224. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/valuation_inputs.py +0 -0
  225. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/examples/msm_pricing/valuation_scenario_workflow.py +0 -0
  226. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/__init__.py +0 -0
  227. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/__init__.py +0 -0
  228. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/__init__.py +0 -0
  229. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/contracts.py +0 -0
  230. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/engine.py +0 -0
  231. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/analytics/indices/spreads.py +0 -0
  232. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/__init__.py +0 -0
  233. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/accounts.py +0 -0
  234. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/assets.py +0 -0
  235. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/base.py +0 -0
  236. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/__init__.py +0 -0
  237. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/_validation.py +0 -0
  238. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/core.py +0 -0
  239. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/dates.py +0 -0
  240. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/events.py +0 -0
  241. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/calendars/sessions.py +0 -0
  242. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/derivatives.py +0 -0
  243. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/execution.py +0 -0
  244. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/formula_indices.py +0 -0
  245. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/__init__.py +0 -0
  246. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/_base.py +0 -0
  247. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/bulk_actions.py +0 -0
  248. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/collections.py +0 -0
  249. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/discovery.py +0 -0
  250. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/errors.py +0 -0
  251. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/operations.py +0 -0
  252. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/table_impact.py +0 -0
  253. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/http/tabular.py +0 -0
  254. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/indices.py +0 -0
  255. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/issuers.py +0 -0
  256. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/portfolios.py +0 -0
  257. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/api/virtual_funds.py +0 -0
  258. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/base.py +0 -0
  259. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/bootstrap.py +0 -0
  260. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/constants.py +0 -0
  261. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/__init__.py +0 -0
  262. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/__init__.py +0 -0
  263. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/constants.py +0 -0
  264. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/storage.py +0 -0
  265. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/virtual_funds/__init__.py +0 -0
  266. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/accounts/virtual_funds/storage.py +0 -0
  267. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/__init__.py +0 -0
  268. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/asset_indexed.py +0 -0
  269. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/snapshots.py +0 -0
  270. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/assets/storage.py +0 -0
  271. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/execution/__init__.py +0 -0
  272. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/execution/storage.py +0 -0
  273. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/__init__.py +0 -0
  274. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/formula.py +0 -0
  275. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/storage.py +0 -0
  276. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/timestamped.py +0 -0
  277. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/indices/values.py +0 -0
  278. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/__init__.py +0 -0
  279. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/namespaces.py +0 -0
  280. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/output_metadata.py +0 -0
  281. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/stamped.py +0 -0
  282. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/storage_schema.py +0 -0
  283. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/data_nodes/utils/time.py +0 -0
  284. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/migrations/__init__.py +0 -0
  285. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/__init__.py +0 -0
  286. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/allocation_models.py +0 -0
  287. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/core.py +0 -0
  288. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/groups.py +0 -0
  289. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/accounts/virtual_funds.py +0 -0
  290. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/__init__.py +0 -0
  291. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/bonds.py +0 -0
  292. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/categories.py +0 -0
  293. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/core.py +0 -0
  294. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/currency_spot.py +0 -0
  295. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/provider_details.py +0 -0
  296. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/assets/types.py +0 -0
  297. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/__init__.py +0 -0
  298. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/core.py +0 -0
  299. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/dates.py +0 -0
  300. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/events.py +0 -0
  301. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/calendars/sessions.py +0 -0
  302. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/derivatives.py +0 -0
  303. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/execution.py +0 -0
  304. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/index_dataset_availability.py +0 -0
  305. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/index_formulas.py +0 -0
  306. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/indices.py +0 -0
  307. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/issuers.py +0 -0
  308. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/__init__.py +0 -0
  309. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/core.py +0 -0
  310. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/portfolios/groups.py +0 -0
  311. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/models/registration.py +0 -0
  312. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/py.typed +0 -0
  313. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/__init__.py +0 -0
  314. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/account_allocation_models.py +0 -0
  315. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/account_groups.py +0 -0
  316. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/accounts.py +0 -0
  317. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/asset_categories.py +0 -0
  318. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/assets.py +0 -0
  319. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/base.py +0 -0
  320. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/__init__.py +0 -0
  321. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/core.py +0 -0
  322. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/dates.py +0 -0
  323. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/events.py +0 -0
  324. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/calendars/sessions.py +0 -0
  325. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/crud.py +0 -0
  326. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/execution.py +0 -0
  327. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/indices.py +0 -0
  328. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/portfolios.py +0 -0
  329. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/provider_details.py +0 -0
  330. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/repositories/virtual_funds.py +0 -0
  331. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/__init__.py +0 -0
  332. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/__init__.py +0 -0
  333. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/account_virtual_allocations.py +0 -0
  334. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/core.py +0 -0
  335. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/virtual_fund_holdings.py +0 -0
  336. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/virtual_funds.py +0 -0
  337. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/accounts/virtual_funds_public_api.py +0 -0
  338. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/asset_categories.py +0 -0
  339. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/asset_master_lists.py +0 -0
  340. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/__init__.py +0 -0
  341. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/open_figi_lists/market_sector.json +0 -0
  342. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/open_figi_lists/security_type.json +0 -0
  343. {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
  344. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/openfigi.py +0 -0
  345. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/assets/reference_details.py +0 -0
  346. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/__init__.py +0 -0
  347. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/materialization.py +0 -0
  348. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/pandas_market.py +0 -0
  349. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/records.py +0 -0
  350. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/calendars/validation.py +0 -0
  351. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/execution.py +0 -0
  352. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/holdings.py +0 -0
  353. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/__init__.py +0 -0
  354. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/actors.py +0 -0
  355. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/availability.py +0 -0
  356. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/catalog.py +0 -0
  357. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/contracts.py +0 -0
  358. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/delete_impact.py +0 -0
  359. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/indices/relationships.py +0 -0
  360. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/portfolios.py +0 -0
  361. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/provider_details.py +0 -0
  362. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/public_api_settings.py +0 -0
  363. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/reference_data.py +0 -0
  364. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/related_meta_tables.py +0 -0
  365. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/table_impact.py +0 -0
  366. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/services/target_positions.py +0 -0
  367. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm/settings.py +0 -0
  368. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_cli/__init__.py +0 -0
  369. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_cli/main.py +0 -0
  370. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/__init__.py +0 -0
  371. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/env.py +0 -0
  372. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/registry.py +0 -0
  373. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/script.py.mako +0 -0
  374. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/__init__.py +0 -0
  375. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_examples/__init__.py +0 -0
  376. {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
  377. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/0018_initial_schema.py +0 -0
  378. {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
  379. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/0020_expected_columns.json +0 -0
  380. {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
  381. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_migrations/versions/mainsequence_markets/__init__.py +0 -0
  382. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/__init__.py +0 -0
  383. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/__init__.py +0 -0
  384. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/configuration.py +0 -0
  385. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/contracts.py +0 -0
  386. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/lifecycle.py +0 -0
  387. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/projections.py +0 -0
  388. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/reducer.py +0 -0
  389. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/accounting/valuation.py +0 -0
  390. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/api/__init__.py +0 -0
  391. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/api/market_metadata.py +0 -0
  392. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/api/portfolios.py +0 -0
  393. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/asset_scope.py +0 -0
  394. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/bootstrap.py +0 -0
  395. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/configuration.py +0 -0
  396. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/__init__.py +0 -0
  397. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/prices/__init__.py +0 -0
  398. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/prices/data_nodes.py +0 -0
  399. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/prices/utils.py +0 -0
  400. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/__init__.py +0 -0
  401. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/external_weights.py +0 -0
  402. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/fixed_weights.py +0 -0
  403. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/intraday_trend.py +0 -0
  404. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/market_cap.py +0 -0
  405. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/portfolio_replicator.py +0 -0
  406. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/contrib/signals/regression_utils.py +0 -0
  407. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/__init__.py +0 -0
  408. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/base.py +0 -0
  409. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/constants.py +0 -0
  410. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/metadata.py +0 -0
  411. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolio_identity.py +0 -0
  412. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/__init__.py +0 -0
  413. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/accounting.py +0 -0
  414. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/analytics.py +0 -0
  415. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/calendar_events.py +0 -0
  416. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/rebalance.py +0 -0
  417. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/storage.py +0 -0
  418. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/temporal.py +0 -0
  419. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/portfolios/weights.py +0 -0
  420. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/prices/__init__.py +0 -0
  421. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/prices/storage.py +0 -0
  422. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/signals/__init__.py +0 -0
  423. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/signals/storage.py +0 -0
  424. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/data_nodes/signals/weights.py +0 -0
  425. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/enums.py +0 -0
  426. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/portfolios/__init__.py +0 -0
  427. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/portfolios/metadata.py +0 -0
  428. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/rebalancing.py +0 -0
  429. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/models/signals.py +0 -0
  430. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/__init__.py +0 -0
  431. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/accounting.py +0 -0
  432. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/base.py +0 -0
  433. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/calendar_event.py +0 -0
  434. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/immediate_signal.py +0 -0
  435. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/liquidity_constrained.py +0 -0
  436. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/time_weighted.py +0 -0
  437. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/trailing_average_daily_volume.py +0 -0
  438. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/rebalance_strategy/volume_participation.py +0 -0
  439. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/repositories/__init__.py +0 -0
  440. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/repositories/market_metadata.py +0 -0
  441. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/calendars.py +0 -0
  442. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/market_metadata.py +0 -0
  443. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/services/portfolio_timestamp_repair.py +0 -0
  444. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_portfolios/utils.py +0 -0
  445. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/README.md +0 -0
  446. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/__init__.py +0 -0
  447. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/__init__.py +0 -0
  448. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/spreads/__init__.py +0 -0
  449. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/spreads/base.py +0 -0
  450. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/analytics/spreads/fixed_income.py +0 -0
  451. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/__init__.py +0 -0
  452. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/asset_pricing_operations.py +0 -0
  453. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/curve_building_details.py +0 -0
  454. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/curves.py +0 -0
  455. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/index_convention_details.py +0 -0
  456. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/instruments.py +0 -0
  457. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/market_data_bindings.py +0 -0
  458. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/api/pricing_details.py +0 -0
  459. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/bootstrap.py +0 -0
  460. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/config.py +0 -0
  461. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_interface/__init__.py +0 -0
  462. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_interface/data_interface.py +0 -0
  463. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/__init__.py +0 -0
  464. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curve_codec.py +0 -0
  465. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curves/__init__.py +0 -0
  466. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curves/key_nodes.py +0 -0
  467. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/curves/storage.py +0 -0
  468. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/index_fixings/__init__.py +0 -0
  469. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/index_fixings/storage.py +0 -0
  470. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/pricing_details/__init__.py +0 -0
  471. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/data_nodes/pricing_details/storage.py +0 -0
  472. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/__init__.py +0 -0
  473. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/base_instrument.py +0 -0
  474. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/bond.py +0 -0
  475. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/bond_terms.py +0 -0
  476. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/callability.py +0 -0
  477. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/interest_rate_swap.py +0 -0
  478. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/json_codec.py +0 -0
  479. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/instruments/ql_fields.py +0 -0
  480. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/meta_tables.py +0 -0
  481. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/__init__.py +0 -0
  482. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/curve_building_details.py +0 -0
  483. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/curves.py +0 -0
  484. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/index_convention_details.py +0 -0
  485. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/market_data_bindings.py +0 -0
  486. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/models/pricing_details.py +0 -0
  487. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/__init__.py +0 -0
  488. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/bond_analytics.py +0 -0
  489. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/bond_pricer.py +0 -0
  490. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/coupon_schedules.py +0 -0
  491. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curve_overlays.py +0 -0
  492. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/__init__.py +0 -0
  493. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/adapters.py +0 -0
  494. {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
  495. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/bond_helpers.py +0 -0
  496. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/cross_currency_helpers.py +0 -0
  497. {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
  498. {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
  499. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/helper_key_nodes.py +0 -0
  500. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/helper_resolution.py +0 -0
  501. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/helpers.py +0 -0
  502. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/observations.py +0 -0
  503. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/quote_units.py +0 -0
  504. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/curves/reconstruction.py +0 -0
  505. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/indices.py +0 -0
  506. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/indices_builders.py +0 -0
  507. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/resolvers.py +0 -0
  508. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/pricing_engine/swap_pricer.py +0 -0
  509. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/__init__.py +0 -0
  510. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/__init__.py +0 -0
  511. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/engine.py +0 -0
  512. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/key_node_bumps.py +0 -0
  513. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/curves/models.py +0 -0
  514. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/__init__.py +0 -0
  515. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/engine.py +0 -0
  516. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/impacts.py +0 -0
  517. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/line_pricing.py +0 -0
  518. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/scenarios/valuation/models.py +0 -0
  519. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/settings.py +0 -0
  520. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/utils.py +0 -0
  521. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/src/msm_pricing/valuation.py +0 -0
  522. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/__init__.py +0 -0
  523. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/conftest.py +0 -0
  524. {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
  525. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/README.md +0 -0
  526. {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
  527. {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
  528. {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
  529. {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
  530. {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
  531. {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
  532. {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
  533. {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
  534. {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
  535. {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
  536. {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
  537. {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
  538. {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
  539. {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
  540. {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
  541. {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
  542. {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
  543. {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
  544. {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
  545. {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
  546. {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
  547. {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
  548. {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
  549. {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
  550. {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
  551. {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
  552. {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
  553. {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
  554. {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
  555. {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
  556. {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
  557. {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
  558. {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
  559. {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
  560. {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
  561. {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
  562. {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
  563. {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
  564. {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
  565. {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
  566. {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
  567. {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
  568. {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
  569. {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
  570. {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
  571. {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
  572. {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
  573. {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
  574. {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
  575. {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
  576. {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
  577. {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
  578. {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
  579. {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
  580. {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
  581. {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
  582. {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
  583. {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
  584. {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
  585. {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
  586. {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
  587. {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
  588. {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
  589. {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
  590. {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
  591. {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
  592. {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
  593. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/contracts/command-center-sdk-v0.1.13/manifest.json +0 -0
  594. {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
  595. {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
  596. {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
  597. {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
  598. {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
  599. {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
  600. {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
  601. {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
  602. {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
  603. {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
  604. {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
  605. {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
  606. {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
  607. {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
  608. {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
  609. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/__init__.py +0 -0
  610. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/__init__.py +0 -0
  611. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/calendars/__init__.py +0 -0
  612. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/calendars/test_rows.py +0 -0
  613. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_assets.py +0 -0
  614. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_bonds.py +0 -0
  615. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_derivatives.py +0 -0
  616. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_http.py +0 -0
  617. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_indices.py +0 -0
  618. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_issuers.py +0 -0
  619. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_portfolio_groups.py +0 -0
  620. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/api/test_rows.py +0 -0
  621. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/assets/__init__.py +0 -0
  622. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/assets/test_asset_snapshots.py +0 -0
  623. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/assets/test_openfigi.py +0 -0
  624. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/bootstrap/__init__.py +0 -0
  625. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/bootstrap/test_bootstrap.py +0 -0
  626. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/__init__.py +0 -0
  627. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_asset_indexed_data_nodes.py +0 -0
  628. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_contracts.py +0 -0
  629. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_datetime_normalization.py +0 -0
  630. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_index_stamped_data_nodes.py +0 -0
  631. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_package_structure.py +0 -0
  632. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_provisioning_boundary.py +0 -0
  633. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/data_nodes/test_target_positions_contracts.py +0 -0
  634. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/__init__.py +0 -0
  635. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/__init__.py +0 -0
  636. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_asset_categories.py +0 -0
  637. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_assets.py +0 -0
  638. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_bulk_action_contracts.py +0 -0
  639. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_bulk_actions.py +0 -0
  640. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_calendars.py +0 -0
  641. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_command_center_adapter.py +0 -0
  642. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_common.py +0 -0
  643. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_deployment_entrypoint.py +0 -0
  644. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_dev_cors.py +0 -0
  645. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_indices.py +0 -0
  646. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_lifespan_discovery.py +0 -0
  647. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_openapi.py +0 -0
  648. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_portfolio_groups.py +0 -0
  649. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_portfolio_signals.py +0 -0
  650. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_pricing_assets.py +0 -0
  651. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_pricing_curves.py +0 -0
  652. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_pricing_market_data.py +0 -0
  653. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_runtime_bootstrap.py +0 -0
  654. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_settings.py +0 -0
  655. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/fastapi/v1/test_virtual_funds.py +0 -0
  656. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/imports/__init__.py +0 -0
  657. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/imports/test_import.py +0 -0
  658. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_data_nodes.py +0 -0
  659. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_engine.py +0 -0
  660. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_examples.py +0 -0
  661. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_formula_index_contract.py +0 -0
  662. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_actor.py +0 -0
  663. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_availability.py +0 -0
  664. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_delete_impact.py +0 -0
  665. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_lifecycle_services.py +0 -0
  666. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_index_values.py +0 -0
  667. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_models_and_migration.py +0 -0
  668. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_public_api.py +0 -0
  669. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_related_meta_tables.py +0 -0
  670. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_resolution_and_repository.py +0 -0
  671. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/indices/test_spread_compatibility.py +0 -0
  672. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/fixtures/legacy_0017.sql +0 -0
  673. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_ledger_hypertable_migration.py +0 -0
  674. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/maintenance/test_migration_job.py +0 -0
  675. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/__init__.py +0 -0
  676. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/calendars/__init__.py +0 -0
  677. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/calendars/test_tables.py +0 -0
  678. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/models/test_metatable_models.py +0 -0
  679. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/repositories/__init__.py +0 -0
  680. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/repositories/test_repositories.py +0 -0
  681. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/assets/test_reference_details.py +0 -0
  682. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/calendars/__init__.py +0 -0
  683. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/calendars/test_materialization.py +0 -0
  684. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/test_account_virtual_allocations.py +0 -0
  685. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/test_latest_asset_references.py +0 -0
  686. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/services/test_table_impact.py +0 -0
  687. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_cli.py +0 -0
  688. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_constants.py +0 -0
  689. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_package_metadata.py +0 -0
  690. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm/test_schema_names.py +0 -0
  691. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/accounting/test_accounting.py +0 -0
  692. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/api/test_rows.py +0 -0
  693. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/configuration/test_prices_configuration.py +0 -0
  694. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_daily_price_interpolation.py +0 -0
  695. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_datetime_normalization.py +0 -0
  696. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_portfolio_contracts.py +0 -0
  697. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/data_nodes/test_storage_first_surface.py +0 -0
  698. {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
  699. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/examples/test_equal_weight_portfolio_schema.py +0 -0
  700. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/examples/test_trailing_adv_participation_preview.py +0 -0
  701. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/imports/test_bootstrap.py +0 -0
  702. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/imports/test_boundaries.py +0 -0
  703. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/models/test_model_graph.py +0 -0
  704. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/services/test_calendars.py +0 -0
  705. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/services/test_portfolio_timestamp_repair.py +0 -0
  706. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_portfolios/test_portfolios_logger.py +0 -0
  707. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/__init__.py +0 -0
  708. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/analytics/spreads/test_base.py +0 -0
  709. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/analytics/spreads/test_fixed_income.py +0 -0
  710. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/__init__.py +0 -0
  711. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_asset_pricing_operations.py +0 -0
  712. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_curve_building_details.py +0 -0
  713. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_curves.py +0 -0
  714. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_index_convention_details.py +0 -0
  715. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_instruments.py +0 -0
  716. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_market_data_bindings.py +0 -0
  717. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/api/test_pricing_details.py +0 -0
  718. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/data_interface/test_data_interface.py +0 -0
  719. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/data_nodes/test_curves.py +0 -0
  720. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/data_nodes/test_index_fixings.py +0 -0
  721. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/examples/test_mock_market_data.py +0 -0
  722. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/__init__.py +0 -0
  723. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_base_instrument.py +0 -0
  724. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_benchmark_curve_resolution.py +0 -0
  725. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_bond_terms.py +0 -0
  726. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_floating_bond_roundtrip.py +0 -0
  727. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/instruments/test_index_uid_references.py +0 -0
  728. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/models/__init__.py +0 -0
  729. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/models/test_pricing_details.py +0 -0
  730. {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
  731. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/curves/test_bond_helpers.py +0 -0
  732. {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
  733. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/curves/test_reconstruction.py +0 -0
  734. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/test_curve_overlays.py +0 -0
  735. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/pricing_engine/test_resolvers.py +0 -0
  736. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/curves/test_curve_scenarios.py +0 -0
  737. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/curves/test_key_node_bumps.py +0 -0
  738. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/curves/test_resolved_curve_scenarios.py +0 -0
  739. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/valuation/test_line_pricing.py +0 -0
  740. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/scenarios/valuation/test_workflow.py +0 -0
  741. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_bond_pricing_example.py +0 -0
  742. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_bootstrap.py +0 -0
  743. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_config.py +0 -0
  744. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_meta_tables.py +0 -0
  745. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_package_boundaries.py +0 -0
  746. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/msm_pricing/test_valuation.py +0 -0
  747. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/packaging/__init__.py +0 -0
  748. {ms_markets-2.2.13.dev37 → ms_markets-2.2.13.dev38}/tests/packaging/test_dev_release_version.py +0 -0
  749. {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. It is
17
- a proposal; nothing in it is implemented.
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.dev37
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`: client-facing Main Sequence market models and API wrappers
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`: client-facing Main Sequence market models and API wrappers
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. Nothing in this ADR is implemented. The
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`, `reader`) replace the Reader and
10
- Writer vocabulary used below; the grant boundaries this ADR draws are
11
- unchanged by that rename, and implementation must use the role names.
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`, which an Organization admin must
154
- push. Services enforce domain policy: ownership and Team scoping for
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. The Index routes
213
- derive their actor from that identity's `uid`; the deprecated
214
- `IndexActor.team_uids` stays empty for HTTP callers. Route code does not parse
215
- authentication headers or bind SDK request-header context variables.
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 delete are mutations.
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