aether-quant 1.0.0__tar.gz → 4.12.3__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.
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.dockerignore +12 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.github/workflows/ci.yml +3 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.gitignore +10 -0
- aether_quant-4.12.3/Dockerfile +53 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/PKG-INFO +1 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/README.md +215 -155
- {aether_quant-1.0.0 → aether_quant-4.12.3}/aether_quant.egg-info/PKG-INFO +1 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/aether_quant.egg-info/SOURCES.txt +44 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/aether_quant.egg-info/scm_file_list.json +318 -275
- aether_quant-4.12.3/aether_quant.egg-info/scm_version.json +8 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/analyzer/README.md +1 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/analyzer/market_analyzer.py +1 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/aq_cli.py +280 -21
- {aether_quant-1.0.0 → aether_quant-4.12.3}/config.json +364 -14
- aether_quant-4.12.3/data/reference/forex_pair_specs.json +108 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/reference/futures_contract_specs.json +1 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data_pipeline/README.md +27 -0
- aether_quant-4.12.3/data_pipeline/dividend_backfill.py +243 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data_pipeline/fetch.py +31 -3
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data_pipeline/fred_backfill.py +138 -3
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data_pipeline/yfinance_backfill.py +112 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/development/Changelog.md +1048 -12
- {aether_quant-1.0.0 → aether_quant-4.12.3}/development/Problems.md +1167 -9
- {aether_quant-1.0.0 → aether_quant-4.12.3}/development/README.md +2 -3
- aether_quant-1.0.0/development/v2_architecture.md → aether_quant-4.12.3/development/architecture.md +357 -124
- {aether_quant-1.0.0 → aether_quant-4.12.3}/development/asset_universe.md +62 -9
- aether_quant-4.12.3/development/backtest_equity_chart.png +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/development/infrastructure.md +68 -30
- {aether_quant-1.0.0 → aether_quant-4.12.3}/development/project_structure.md +4 -3
- {aether_quant-1.0.0 → aether_quant-4.12.3}/docker-compose.yml +29 -3
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/README.md +3 -3
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/order_gate.py +28 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experience/README.md +15 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experience/__init__.py +7 -1
- aether_quant-4.12.3/experience/redis_queue.py +369 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/features/README.md +13 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/features/__init__.py +26 -0
- aether_quant-4.12.3/features/alt_data_features.py +110 -0
- aether_quant-4.12.3/features/bond_features.py +275 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/features/options_greeks.py +139 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/inference/README.md +65 -2
- {aether_quant-1.0.0 → aether_quant-4.12.3}/inference/__init__.py +7 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/inference/exported_model.py +175 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/inference/parallel_inference.py +22 -0
- aether_quant-4.12.3/inference/strategy_selector_inference.py +75 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/lean.json +1 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/main.py +2452 -324
- {aether_quant-1.0.0 → aether_quant-4.12.3}/ml/README.md +22 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/monitoring/README.md +1 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/monitoring/api_server.py +39 -11
- {aether_quant-1.0.0 → aether_quant-4.12.3}/monitoring/assets_status.py +9 -0
- aether_quant-4.12.3/monitoring/strategy_catalog.py +39 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/portfolio/README.md +179 -5
- aether_quant-4.12.3/portfolio/options_arbitrage_detector.py +232 -0
- aether_quant-4.12.3/portfolio/options_assignment_risk.py +119 -0
- aether_quant-4.12.3/portfolio/options_margin_sizing.py +333 -0
- aether_quant-4.12.3/portfolio/options_strategy.py +1999 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/regime/README.md +15 -4
- {aether_quant-1.0.0 → aether_quant-4.12.3}/requirements/README.md +2 -2
- {aether_quant-1.0.0 → aether_quant-4.12.3}/requirements/requirements-dev.txt +4 -0
- aether_quant-4.12.3/requirements/requirements.txt +38 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/README.md +3 -3
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/__init__.py +4 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/artifacts.py +33 -5
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/orchestrator.py +78 -2
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/worker.py +10 -0
- aether_quant-4.12.3/risk/README.md +598 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/risk/__init__.py +10 -0
- aether_quant-4.12.3/risk/asset_class_router.py +584 -0
- aether_quant-4.12.3/risk/forex_risk.py +158 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/risk/futures_risk.py +41 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/risk/position_sizing.py +24 -2
- aether_quant-4.12.3/risk/rl_sizing.py +183 -0
- aether_quant-4.12.3/risk_controls.py +178 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/scripts/README.md +2 -1
- aether_quant-4.12.3/scripts/profile_inference.py +585 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/scripts/profile_subsystems.py +118 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/README.md +4 -3
- aether_quant-4.12.3/tests/test_alt_data_features.py +97 -0
- aether_quant-4.12.3/tests/test_api_server.py +114 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_aq_cli.py +250 -2
- aether_quant-4.12.3/tests/test_asset_class_router.py +512 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_bond_features.py +103 -0
- aether_quant-4.12.3/tests/test_dividend_backfill.py +184 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_experience_queue.py +183 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_exported_model.py +99 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_fetch.py +101 -2
- aether_quant-4.12.3/tests/test_forex_risk.py +124 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_fred_backfill.py +112 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_futures_risk.py +63 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_lean_backtest_ml_coverage.py +22 -14
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_learned_topology.py +142 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_market_topology.py +334 -12
- aether_quant-4.12.3/tests/test_options_arbitrage_detector.py +170 -0
- aether_quant-4.12.3/tests/test_options_assignment_risk.py +195 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_options_greeks.py +75 -0
- aether_quant-4.12.3/tests/test_options_margin_sizing.py +178 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_options_strategy.py +106 -0
- aether_quant-4.12.3/tests/test_options_strategy_multileg.py +572 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_order_gate.py +75 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_parallel_inference.py +25 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_position_sizing.py +101 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_postgres_worker.py +43 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_profile_inference.py +28 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_profile_subsystems.py +25 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_retraining_artifacts.py +54 -0
- aether_quant-4.12.3/tests/test_risk_controls.py +388 -0
- aether_quant-4.12.3/tests/test_rl_sizing.py +193 -0
- aether_quant-4.12.3/tests/test_strategy_catalog.py +37 -0
- aether_quant-4.12.3/tests/test_strategy_selector_inference.py +83 -0
- aether_quant-4.12.3/tests/test_train_alt_data_features.py +206 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_bond_features.py +68 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_cross_sectional_features.py +168 -2
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_ranking_validation.py +146 -10
- aether_quant-4.12.3/tests/test_train_rl_sizing.py +169 -0
- aether_quant-4.12.3/tests/test_train_strategy_selector.py +145 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_topology.py +15 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_yfinance_backfill.py +82 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/topology/README.md +80 -9
- {aether_quant-1.0.0 → aether_quant-4.12.3}/topology/learned_topology.py +22 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/topology/market_topology.py +198 -39
- {aether_quant-1.0.0 → aether_quant-4.12.3}/train.py +402 -38
- {aether_quant-1.0.0 → aether_quant-4.12.3}/train_gating.py +16 -6
- aether_quant-4.12.3/train_rl_sizing.py +429 -0
- aether_quant-4.12.3/train_strategy_selector.py +275 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/train_topology.py +29 -6
- {aether_quant-1.0.0 → aether_quant-4.12.3}/visualization/README.md +15 -3
- aether_quant-4.12.3/webui/README.md +153 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/package-lock.json +1388 -16
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/package.json +8 -1
- aether_quant-4.12.3/webui/src/App.tsx +52 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/api/client.ts +3 -1
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/api/hooks.ts +14 -0
- aether_quant-4.12.3/webui/src/components/layout/AppShell.tsx +76 -0
- aether_quant-4.12.3/webui/src/components/neuralnet/NeuralNetworkStatsPanel.test.tsx +106 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/neuralnet/NeuralNetworkStatsPanel.tsx +70 -16
- aether_quant-4.12.3/webui/src/components/optionsstrategy/CorporateActionsPanel.tsx +42 -0
- aether_quant-4.12.3/webui/src/components/optionsstrategy/DividendScheduleSummaryPanel.tsx +43 -0
- aether_quant-4.12.3/webui/src/components/optionsstrategy/ForexPairDetailPanel.tsx +51 -0
- aether_quant-4.12.3/webui/src/components/optionsstrategy/HeldMultiLegPositionsPanel.tsx +71 -0
- aether_quant-4.12.3/webui/src/components/optionsstrategy/StrategyCatalogBrowser.tsx +48 -0
- aether_quant-4.12.3/webui/src/components/optionsstrategy/StrategySelectorScoresPanel.tsx +48 -0
- aether_quant-4.12.3/webui/src/components/risk/AssetSizingTable.test.tsx +52 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/risk/AssetSizingTable.tsx +67 -7
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/risk/DerivativesMacroPanel.tsx +14 -3
- aether_quant-4.12.3/webui/src/components/risk/MacroSnapshotPanel.test.tsx +35 -0
- aether_quant-4.12.3/webui/src/components/risk/MacroSnapshotPanel.tsx +49 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/signals/Badge.tsx +5 -0
- aether_quant-4.12.3/webui/src/components/topology/TopologyScene3D.test.tsx +51 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/topology/TopologyScene3D.tsx +15 -1
- aether_quant-4.12.3/webui/src/components/tracing/DivergingBarChart.test.tsx +41 -0
- aether_quant-4.12.3/webui/src/components/tracing/LineChart.test.tsx +73 -0
- aether_quant-4.12.3/webui/src/lib/format.test.ts +74 -0
- aether_quant-1.0.0/webui/src/pages/Overview.tsx → aether_quant-4.12.3/webui/src/pages/OperationsPage.tsx +4 -18
- aether_quant-4.12.3/webui/src/pages/OptionsStrategyPage.tsx +27 -0
- aether_quant-4.12.3/webui/src/pages/Overview.tsx +26 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/pages/RiskPage.tsx +2 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/pages/TracingPage.tsx +9 -5
- aether_quant-4.12.3/webui/src/pages/pages.test.tsx +158 -0
- aether_quant-4.12.3/webui/src/test/setup.ts +24 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/types/state.ts +200 -4
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/vite.config.ts +9 -0
- aether_quant-1.0.0/Dockerfile +0 -29
- aether_quant-1.0.0/aether_quant.egg-info/scm_version.json +0 -8
- aether_quant-1.0.0/development/backtest_equity_chart.png +0 -0
- aether_quant-1.0.0/experience/redis_queue.py +0 -198
- aether_quant-1.0.0/features/bond_features.py +0 -123
- aether_quant-1.0.0/portfolio/options_strategy.py +0 -349
- aether_quant-1.0.0/requirements/requirements.txt +0 -28
- aether_quant-1.0.0/risk/README.md +0 -248
- aether_quant-1.0.0/risk/asset_class_router.py +0 -275
- aether_quant-1.0.0/risk_controls.py +0 -55
- aether_quant-1.0.0/scripts/profile_inference.py +0 -327
- aether_quant-1.0.0/tests/test_api_server.py +0 -39
- aether_quant-1.0.0/tests/test_asset_class_router.py +0 -235
- aether_quant-1.0.0/tests/test_risk_controls.py +0 -75
- aether_quant-1.0.0/webui/README.md +0 -79
- aether_quant-1.0.0/webui/src/App.tsx +0 -26
- aether_quant-1.0.0/webui/src/components/layout/AppShell.tsx +0 -102
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.devcontainer/devcontainer.json +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.devcontainer/dind-v1-test/devcontainer.json +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.env.compose.example +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.env.live.example +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.gitattributes +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.githooks/pre-commit +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/.github/workflows/release.yml +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/LICENSE +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/aether_quant.egg-info/dependency_links.txt +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/aether_quant.egg-info/entry_points.txt +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/aether_quant.egg-info/top_level.txt +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/analyzer/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/audit/README.md +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/audit/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/audit/hash_chain.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/audit/postgres_audit.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/audit/postgres_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/audit/redis_queue.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/audit/status_export.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/backtests/.gitkeep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/cpp_inference_ext/README.md +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/cpp_inference_ext/pyproject.toml +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/cpp_inference_ext/setup.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/cpp_inference_ext/src/linear_batched.cpp +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/estimize/consensus/aapl/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/estimize/estimate/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/estimize/release/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/sec/aapl/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/trading-economics/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/trading-economics/calendar/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/trading-economics/earnings/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/alternative/trading-economics/indicator/.keep +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data/reference/sector_mapping.json +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data_pipeline/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data_pipeline/ib_backfill.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/data_pipeline/v2_manifest.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/development/logo.png +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/config_cache.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/lean_config_render.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/live_credentials.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/live_credentials_io.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/paper_readiness.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/paper_readiness_io.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/paper_readiness_report.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/paper_readiness_scheduler.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/runtime_config_io.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/execution/secret_scan.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experience/observation_metrics.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experience/postgres_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experience/simulated_portfolio.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experts/README.md +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experts/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/experts/expert_datasets.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/features/derivatives_macro_features.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/features/macro_features.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/features/technical_indicators.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/generate_backtest_report.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/liquidity/README.md +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/liquidity/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/liquidity/market_liquidity.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/moe/README.md +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/moe/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/moe/gating.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/monitoring/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/monitoring/neural_network_state.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/notifications/README.md +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/notifications/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/notifications/postgres_telegram.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/notifications/telegram_alerts.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/notifications/telegram_client.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/notifications/telegram_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/performance/README.md +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/performance/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/performance/postgres_triggers.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/performance/rank_ic_monitor.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/performance/trigger_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/performance/triggers.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/portfolio/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/portfolio/book_construction.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/pyproject.toml +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/regime/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/regime/market_regime.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/requirements.txt +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/backtest_gate.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/lean_backtest.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/planning.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/postgres_registry.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/status_export.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/validation_gate.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/vault_client.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/retraining/vault_commands.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/risk/manual_override.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/scripts/render_lean_credentials.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/setup.cfg +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_assets_status.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_audit_postgres_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_audit_queue.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_audit_status_export.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_backtest_gate.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_config_cache.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_derivatives_macro_features.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_dockerignore_secrets.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_expert_datasets.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_expert_models.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_gating_network.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_generate_backtest_report.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_hash_chain.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_ib_backfill.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_lean_backtest.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_lean_config_render.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_live_credentials.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_live_credentials_io.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_macro_features.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_manual_override.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_market_analyzer.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_market_liquidity.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_market_regime.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_neural_network_state.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_observation_metrics.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_paper_readiness.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_paper_readiness_io.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_paper_readiness_report.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_paper_readiness_scheduler.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_portfolio_book_construction.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_postgres_audit.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_postgres_telegram.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_postgres_triggers.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_rank_ic_monitor.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_retraining_orchestrator.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_retraining_planning.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_retraining_postgres_registry.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_retraining_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_runtime_config_io.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_secret_scan.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_simulated_portfolio.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_status_export.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_technical_indicators.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_telegram_alerts.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_telegram_client.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_telegram_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_asset_class_context_features.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_derivatives_macro_features.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_gating.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_indicators.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_macro_features.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_multitask.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_multitask_architecture.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_pipeline.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_select_model_context_columns.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_sequence.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_sequence_architecture.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_threshold_and_early_stop.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_train_walk_forward_windows.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_trigger_worker.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_triggers.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_v2_pipeline_manifest.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_validation_gate.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_vault_client.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/tests/test_vault_commands.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/topology/__init__.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/train_multitask.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/train_sequence.py +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/.gitignore +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/.oxlintrc.json +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/index.html +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/overview_v2_12.png +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/public/favicon.svg +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/public/icons.svg +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/risk_v2_12.png +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/heatmap/AssetHeatmap.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/layout/Panel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/AssetsStatusPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/AuditLogPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/CountTable.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/MonitoringFeeds.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/ObservationPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/PaperReadinessPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/PerformanceTriggersPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/RawStateViewer.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/monitoring/RetrainingStatusPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/neuralnet/NeuralNetworkScene3D.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/risk/LiquidityTable.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/risk/RiskBar.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/risk/RiskCore.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/risk/StrategyRiskCards.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/scene3d/Scene3D.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/scorecards/Scorecards.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/signals/PositionsList.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/signals/SignalBoard.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/topology/ClusterList.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/topology/TopologyLearningPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/tracing/AssetPerformancePanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/tracing/BacktestEquityPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/tracing/DivergingBarChart.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/tracing/LineChart.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/tracing/MetricsSnapshotPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/components/tracing/ObservationEquityPanel.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/index.css +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/lib/downsample.ts +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/lib/format.ts +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/main.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/pages/NeuralNetworkPage.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/pages/TopologyPage.tsx +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/types/audit.ts +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/src/types/tracing.ts +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/tsconfig.app.json +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/tsconfig.json +0 -0
- {aether_quant-1.0.0 → aether_quant-4.12.3}/webui/tsconfig.node.json +0 -0
|
@@ -37,3 +37,15 @@ lean.live.json
|
|
|
37
37
|
lean.json
|
|
38
38
|
*.key
|
|
39
39
|
*.pem
|
|
40
|
+
|
|
41
|
+
# cpp_inference_ext/'s compiled build artifacts - mirrors .gitignore's own
|
|
42
|
+
# exclusion list. Docker now builds this extension fresh for the
|
|
43
|
+
# container's own Python 3.11 (see Dockerfile) - a locally-pre-built
|
|
44
|
+
# stray .pyd/.so from a developer's own (ABI-incompatible) host Python
|
|
45
|
+
# must never leak into the build context and get baked into the image,
|
|
46
|
+
# which is published to a public ghcr registry.
|
|
47
|
+
cpp_inference_ext/build/
|
|
48
|
+
cpp_inference_ext/*.egg-info/
|
|
49
|
+
cpp_inference_ext/*.pyd
|
|
50
|
+
cpp_inference_ext/*.so
|
|
51
|
+
cpp_inference_ext/install_log*.txt
|
|
@@ -15,6 +15,9 @@ jobs:
|
|
|
15
15
|
with:
|
|
16
16
|
python-version: "3.11"
|
|
17
17
|
|
|
18
|
+
- name: Syntax-check main.py (no Lean runtime available in CI - see development/Problems.md #69)
|
|
19
|
+
run: python -m py_compile main.py
|
|
20
|
+
|
|
18
21
|
- name: Install dependencies
|
|
19
22
|
run: pip install -r requirements/requirements.txt -r requirements/requirements-dev.txt
|
|
20
23
|
|
|
@@ -103,6 +103,16 @@ ml/sequence_training_metrics.json
|
|
|
103
103
|
ml/gating_model.json
|
|
104
104
|
ml/gating_feature_schema.json
|
|
105
105
|
ml/gating_training_metrics.json
|
|
106
|
+
# Topology overlay + RL sizing artifacts (Phase 4.12/4.12.3,
|
|
107
|
+
# development/Problems.md #71) - same reasoning as the multitask/sequence/
|
|
108
|
+
# gating rules above: a trained model's weights must never end up
|
|
109
|
+
# committed to the public repo just because it's a newer artifact type.
|
|
110
|
+
ml/topology_model.json
|
|
111
|
+
ml/topology_feature_schema.json
|
|
112
|
+
ml/topology_training_metrics.json
|
|
113
|
+
ml/rl_sizing_model.json
|
|
114
|
+
ml/rl_sizing_feature_schema.json
|
|
115
|
+
ml/rl_sizing_training_metrics.json
|
|
106
116
|
|
|
107
117
|
# Generated visualization/runtime feeds
|
|
108
118
|
visualization/state.json
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Stage 1: build webui
|
|
2
|
+
FROM node:20-alpine AS webui-builder
|
|
3
|
+
WORKDIR /app/webui
|
|
4
|
+
COPY webui/package*.json ./
|
|
5
|
+
RUN npm ci
|
|
6
|
+
COPY webui/ .
|
|
7
|
+
RUN npm run build
|
|
8
|
+
|
|
9
|
+
# Stage 2: consolidated engine image - serves the FastAPI app AND every
|
|
10
|
+
# worker (experience/performance-trigger/telegram/paper-readiness/
|
|
11
|
+
# retraining). One image, one COPY of the whole source tree (respecting
|
|
12
|
+
# .dockerignore's exclusions - .venv/, node_modules/, data/, ml/,
|
|
13
|
+
# backtests/, etc., which arrive at runtime via compose volume mounts
|
|
14
|
+
# instead) rather than a hand-maintained per-worker COPY allow-list.
|
|
15
|
+
# This is the direct fix for development/Problems.md #1/#2/#20/#30 - four
|
|
16
|
+
# separate incidents where a per-worker Dockerfile's COPY list drifted out
|
|
17
|
+
# of sync with that worker's actual import graph and crash-looped on
|
|
18
|
+
# ModuleNotFoundError. With one image copying everything, that whole bug
|
|
19
|
+
# class is structurally impossible now. Each service's actual entrypoint
|
|
20
|
+
# is selected via docker-compose.yml's per-service `command:` override
|
|
21
|
+
# (CMD below is just the default/app entrypoint).
|
|
22
|
+
FROM python:3.11-slim
|
|
23
|
+
WORKDIR /app
|
|
24
|
+
COPY requirements/requirements.txt ./requirements/
|
|
25
|
+
RUN pip install --no-cache-dir -r requirements/requirements.txt
|
|
26
|
+
COPY . .
|
|
27
|
+
|
|
28
|
+
# Optional C++/pybind11 accelerator for inference/exported_model.py's
|
|
29
|
+
# _linear_batched() (development/Problems.md #32). This was previously
|
|
30
|
+
# never built for the actual container image - only ever built manually
|
|
31
|
+
# on a developer's own host machine for that machine's own (ABI-
|
|
32
|
+
# incompatible) local Python version, so the compiled .pyd/.so it produced
|
|
33
|
+
# never reached any deployed image. python:3.11-slim ships no C++
|
|
34
|
+
# compiler, so build-essential is installed just for this step and purged
|
|
35
|
+
# again in the SAME RUN (a separate `apt-get purge` in a later RUN would
|
|
36
|
+
# not shrink the image - Docker layers are additive). The whole extension
|
|
37
|
+
# is optional by design (inference/exported_model.py deferred-imports it
|
|
38
|
+
# and falls back to a pure-NumPy path on ANY import/call failure), so
|
|
39
|
+
# this step is deliberately soft-fail: if anything here breaks (a future
|
|
40
|
+
# base-image change, a pybind11/ABI mismatch, etc.) the `|| echo` swallows
|
|
41
|
+
# it and the Docker build still succeeds, exactly like every environment
|
|
42
|
+
# that has never had the accelerator built.
|
|
43
|
+
RUN (apt-get update && \
|
|
44
|
+
apt-get install -y --no-install-recommends build-essential && \
|
|
45
|
+
pip install --no-cache-dir "pybind11>=2.10" && \
|
|
46
|
+
pip install --no-cache-dir ./cpp_inference_ext && \
|
|
47
|
+
apt-get purge -y --auto-remove build-essential && \
|
|
48
|
+
rm -rf /var/lib/apt/lists/*) \
|
|
49
|
+
|| echo "cpp_inference_ext: optional C++ accelerator build failed or was skipped - continuing without it (see development/Problems.md #32/#68)"
|
|
50
|
+
|
|
51
|
+
COPY --from=webui-builder /app/webui/dist ./webui/dist
|
|
52
|
+
EXPOSE 8000
|
|
53
|
+
CMD ["uvicorn", "monitoring.api_server:app", "--host", "0.0.0.0", "--port", "8000"]
|