aether-quant 0.2.0__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 (216) hide show
  1. aether_quant-0.2.0/.dockerignore +16 -0
  2. aether_quant-0.2.0/.env.compose.example +12 -0
  3. aether_quant-0.2.0/.gitattributes +2 -0
  4. aether_quant-0.2.0/.github/workflows/ci.yml +43 -0
  5. aether_quant-0.2.0/.github/workflows/release.yml +72 -0
  6. aether_quant-0.2.0/.gitignore +95 -0
  7. aether_quant-0.2.0/Dockerfile +18 -0
  8. aether_quant-0.2.0/Dockerfile.retraining_worker +14 -0
  9. aether_quant-0.2.0/Dockerfile.telegram_worker +9 -0
  10. aether_quant-0.2.0/Dockerfile.trigger_worker +8 -0
  11. aether_quant-0.2.0/Dockerfile.worker +7 -0
  12. aether_quant-0.2.0/PKG-INFO +5 -0
  13. aether_quant-0.2.0/README.md +409 -0
  14. aether_quant-0.2.0/aether_quant.egg-info/PKG-INFO +5 -0
  15. aether_quant-0.2.0/aether_quant.egg-info/SOURCES.txt +214 -0
  16. aether_quant-0.2.0/aether_quant.egg-info/dependency_links.txt +1 -0
  17. aether_quant-0.2.0/aether_quant.egg-info/entry_points.txt +2 -0
  18. aether_quant-0.2.0/aether_quant.egg-info/scm_file_list.json +211 -0
  19. aether_quant-0.2.0/aether_quant.egg-info/scm_version.json +8 -0
  20. aether_quant-0.2.0/aether_quant.egg-info/top_level.txt +2 -0
  21. aether_quant-0.2.0/analyzer/README.md +44 -0
  22. aether_quant-0.2.0/analyzer/__init__.py +13 -0
  23. aether_quant-0.2.0/analyzer/market_analyzer.py +217 -0
  24. aether_quant-0.2.0/aq_cli.py +329 -0
  25. aether_quant-0.2.0/backtests/.gitkeep +1 -0
  26. aether_quant-0.2.0/data/alternative/estimize/consensus/aapl/.keep +0 -0
  27. aether_quant-0.2.0/data/alternative/estimize/estimate/.keep +0 -0
  28. aether_quant-0.2.0/data/alternative/estimize/release/.keep +0 -0
  29. aether_quant-0.2.0/data/alternative/sec/aapl/.keep +0 -0
  30. aether_quant-0.2.0/data/alternative/trading-economics/.keep +0 -0
  31. aether_quant-0.2.0/data/alternative/trading-economics/calendar/.keep +0 -0
  32. aether_quant-0.2.0/data/alternative/trading-economics/earnings/.keep +0 -0
  33. aether_quant-0.2.0/data/alternative/trading-economics/indicator/.keep +0 -0
  34. aether_quant-0.2.0/data_pipeline/README.md +37 -0
  35. aether_quant-0.2.0/data_pipeline/__init__.py +6 -0
  36. aether_quant-0.2.0/data_pipeline/v2_manifest.py +75 -0
  37. aether_quant-0.2.0/data_pipeline/yfinance_backfill.py +335 -0
  38. aether_quant-0.2.0/development/Changelog.md +482 -0
  39. aether_quant-0.2.0/development/Problems.md +214 -0
  40. aether_quant-0.2.0/development/README.md +28 -0
  41. aether_quant-0.2.0/development/infrastructure.md +366 -0
  42. aether_quant-0.2.0/development/v2_architecture.md +1073 -0
  43. aether_quant-0.2.0/docker-compose.yml +164 -0
  44. aether_quant-0.2.0/execution/README.md +9 -0
  45. aether_quant-0.2.0/execution/__init__.py +13 -0
  46. aether_quant-0.2.0/execution/order_gate.py +75 -0
  47. aether_quant-0.2.0/experience/README.md +47 -0
  48. aether_quant-0.2.0/experience/__init__.py +16 -0
  49. aether_quant-0.2.0/experience/observation_metrics.py +124 -0
  50. aether_quant-0.2.0/experience/postgres_worker.py +334 -0
  51. aether_quant-0.2.0/experience/redis_queue.py +173 -0
  52. aether_quant-0.2.0/experience/simulated_portfolio.py +166 -0
  53. aether_quant-0.2.0/experts/README.md +34 -0
  54. aether_quant-0.2.0/experts/__init__.py +17 -0
  55. aether_quant-0.2.0/experts/expert_datasets.py +184 -0
  56. aether_quant-0.2.0/liquidity/README.md +57 -0
  57. aether_quant-0.2.0/liquidity/__init__.py +3 -0
  58. aether_quant-0.2.0/liquidity/market_liquidity.py +220 -0
  59. aether_quant-0.2.0/main.py +1392 -0
  60. aether_quant-0.2.0/ml/README.md +35 -0
  61. aether_quant-0.2.0/moe/README.md +19 -0
  62. aether_quant-0.2.0/moe/__init__.py +15 -0
  63. aether_quant-0.2.0/moe/gating.py +206 -0
  64. aether_quant-0.2.0/monitoring/README.md +19 -0
  65. aether_quant-0.2.0/monitoring/__init__.py +2 -0
  66. aether_quant-0.2.0/monitoring/api_server.py +120 -0
  67. aether_quant-0.2.0/monitoring/neural_network_state.py +219 -0
  68. aether_quant-0.2.0/notifications/README.md +49 -0
  69. aether_quant-0.2.0/notifications/__init__.py +13 -0
  70. aether_quant-0.2.0/notifications/postgres_telegram.py +99 -0
  71. aether_quant-0.2.0/notifications/telegram_alerts.py +64 -0
  72. aether_quant-0.2.0/notifications/telegram_client.py +79 -0
  73. aether_quant-0.2.0/notifications/telegram_worker.py +203 -0
  74. aether_quant-0.2.0/performance/README.md +53 -0
  75. aether_quant-0.2.0/performance/__init__.py +45 -0
  76. aether_quant-0.2.0/performance/postgres_triggers.py +345 -0
  77. aether_quant-0.2.0/performance/trigger_worker.py +174 -0
  78. aether_quant-0.2.0/performance/triggers.py +827 -0
  79. aether_quant-0.2.0/pyproject.toml +38 -0
  80. aether_quant-0.2.0/regime/README.md +18 -0
  81. aether_quant-0.2.0/regime/__init__.py +17 -0
  82. aether_quant-0.2.0/regime/market_regime.py +187 -0
  83. aether_quant-0.2.0/requirements/README.md +26 -0
  84. aether_quant-0.2.0/requirements/requirements-dev.txt +26 -0
  85. aether_quant-0.2.0/requirements/requirements-retraining-worker.txt +15 -0
  86. aether_quant-0.2.0/requirements/requirements-runtime.txt +3 -0
  87. aether_quant-0.2.0/requirements/requirements-telegram-worker.txt +8 -0
  88. aether_quant-0.2.0/requirements/requirements-trigger-worker.txt +3 -0
  89. aether_quant-0.2.0/requirements/requirements-worker.txt +4 -0
  90. aether_quant-0.2.0/requirements/requirements.txt +27 -0
  91. aether_quant-0.2.0/retraining/README.md +72 -0
  92. aether_quant-0.2.0/retraining/__init__.py +89 -0
  93. aether_quant-0.2.0/retraining/artifacts.py +159 -0
  94. aether_quant-0.2.0/retraining/backtest_gate.py +63 -0
  95. aether_quant-0.2.0/retraining/lean_backtest.py +64 -0
  96. aether_quant-0.2.0/retraining/orchestrator.py +489 -0
  97. aether_quant-0.2.0/retraining/planning.py +238 -0
  98. aether_quant-0.2.0/retraining/postgres_registry.py +367 -0
  99. aether_quant-0.2.0/retraining/status_export.py +117 -0
  100. aether_quant-0.2.0/retraining/validation_gate.py +134 -0
  101. aether_quant-0.2.0/retraining/vault_client.py +108 -0
  102. aether_quant-0.2.0/retraining/vault_commands.py +52 -0
  103. aether_quant-0.2.0/retraining/worker.py +182 -0
  104. aether_quant-0.2.0/risk/README.md +19 -0
  105. aether_quant-0.2.0/risk/__init__.py +16 -0
  106. aether_quant-0.2.0/risk/manual_override.py +61 -0
  107. aether_quant-0.2.0/risk/position_sizing.py +113 -0
  108. aether_quant-0.2.0/risk_controls.py +41 -0
  109. aether_quant-0.2.0/setup.cfg +4 -0
  110. aether_quant-0.2.0/tests/README.md +41 -0
  111. aether_quant-0.2.0/tests/test_aq_cli.py +313 -0
  112. aether_quant-0.2.0/tests/test_backtest_gate.py +65 -0
  113. aether_quant-0.2.0/tests/test_experience_queue.py +200 -0
  114. aether_quant-0.2.0/tests/test_expert_datasets.py +86 -0
  115. aether_quant-0.2.0/tests/test_expert_models.py +153 -0
  116. aether_quant-0.2.0/tests/test_gating_network.py +97 -0
  117. aether_quant-0.2.0/tests/test_lean_backtest.py +67 -0
  118. aether_quant-0.2.0/tests/test_lean_backtest_ml_coverage.py +146 -0
  119. aether_quant-0.2.0/tests/test_learned_topology.py +344 -0
  120. aether_quant-0.2.0/tests/test_manual_override.py +75 -0
  121. aether_quant-0.2.0/tests/test_market_analyzer.py +227 -0
  122. aether_quant-0.2.0/tests/test_market_liquidity.py +168 -0
  123. aether_quant-0.2.0/tests/test_market_regime.py +109 -0
  124. aether_quant-0.2.0/tests/test_market_topology.py +151 -0
  125. aether_quant-0.2.0/tests/test_neural_network_state.py +119 -0
  126. aether_quant-0.2.0/tests/test_observation_metrics.py +181 -0
  127. aether_quant-0.2.0/tests/test_order_gate.py +124 -0
  128. aether_quant-0.2.0/tests/test_position_sizing.py +55 -0
  129. aether_quant-0.2.0/tests/test_postgres_telegram.py +101 -0
  130. aether_quant-0.2.0/tests/test_postgres_triggers.py +244 -0
  131. aether_quant-0.2.0/tests/test_postgres_worker.py +216 -0
  132. aether_quant-0.2.0/tests/test_retraining_artifacts.py +211 -0
  133. aether_quant-0.2.0/tests/test_retraining_orchestrator.py +275 -0
  134. aether_quant-0.2.0/tests/test_retraining_planning.py +240 -0
  135. aether_quant-0.2.0/tests/test_retraining_postgres_registry.py +189 -0
  136. aether_quant-0.2.0/tests/test_retraining_worker.py +140 -0
  137. aether_quant-0.2.0/tests/test_risk_controls.py +56 -0
  138. aether_quant-0.2.0/tests/test_simulated_portfolio.py +127 -0
  139. aether_quant-0.2.0/tests/test_status_export.py +67 -0
  140. aether_quant-0.2.0/tests/test_telegram_alerts.py +77 -0
  141. aether_quant-0.2.0/tests/test_telegram_client.py +66 -0
  142. aether_quant-0.2.0/tests/test_telegram_worker.py +199 -0
  143. aether_quant-0.2.0/tests/test_train_pipeline.py +219 -0
  144. aether_quant-0.2.0/tests/test_train_topology.py +156 -0
  145. aether_quant-0.2.0/tests/test_trigger_worker.py +182 -0
  146. aether_quant-0.2.0/tests/test_triggers.py +527 -0
  147. aether_quant-0.2.0/tests/test_v2_pipeline_manifest.py +41 -0
  148. aether_quant-0.2.0/tests/test_validation_gate.py +111 -0
  149. aether_quant-0.2.0/tests/test_vault_client.py +109 -0
  150. aether_quant-0.2.0/tests/test_vault_commands.py +65 -0
  151. aether_quant-0.2.0/tests/test_yfinance_backfill.py +256 -0
  152. aether_quant-0.2.0/topology/README.md +69 -0
  153. aether_quant-0.2.0/topology/__init__.py +21 -0
  154. aether_quant-0.2.0/topology/learned_topology.py +280 -0
  155. aether_quant-0.2.0/topology/market_topology.py +418 -0
  156. aether_quant-0.2.0/train.py +2359 -0
  157. aether_quant-0.2.0/train_topology.py +318 -0
  158. aether_quant-0.2.0/visualization/README.md +32 -0
  159. aether_quant-0.2.0/webui/.gitignore +24 -0
  160. aether_quant-0.2.0/webui/.oxlintrc.json +8 -0
  161. aether_quant-0.2.0/webui/README.md +66 -0
  162. aether_quant-0.2.0/webui/index.html +13 -0
  163. aether_quant-0.2.0/webui/overview_v2_12.png +0 -0
  164. aether_quant-0.2.0/webui/package-lock.json +2642 -0
  165. aether_quant-0.2.0/webui/package.json +34 -0
  166. aether_quant-0.2.0/webui/public/favicon.svg +1 -0
  167. aether_quant-0.2.0/webui/public/icons.svg +24 -0
  168. aether_quant-0.2.0/webui/risk_v2_12.png +0 -0
  169. aether_quant-0.2.0/webui/src/App.tsx +26 -0
  170. aether_quant-0.2.0/webui/src/api/client.ts +22 -0
  171. aether_quant-0.2.0/webui/src/api/hooks.ts +78 -0
  172. aether_quant-0.2.0/webui/src/components/heatmap/AssetHeatmap.tsx +43 -0
  173. aether_quant-0.2.0/webui/src/components/layout/AppShell.tsx +102 -0
  174. aether_quant-0.2.0/webui/src/components/layout/Panel.tsx +13 -0
  175. aether_quant-0.2.0/webui/src/components/monitoring/CountTable.tsx +21 -0
  176. aether_quant-0.2.0/webui/src/components/monitoring/MonitoringFeeds.tsx +35 -0
  177. aether_quant-0.2.0/webui/src/components/monitoring/ObservationPanel.tsx +50 -0
  178. aether_quant-0.2.0/webui/src/components/monitoring/PerformanceTriggersPanel.tsx +63 -0
  179. aether_quant-0.2.0/webui/src/components/monitoring/RawStateViewer.tsx +28 -0
  180. aether_quant-0.2.0/webui/src/components/monitoring/RetrainingStatusPanel.tsx +84 -0
  181. aether_quant-0.2.0/webui/src/components/neuralnet/NeuralNetworkScene3D.tsx +174 -0
  182. aether_quant-0.2.0/webui/src/components/neuralnet/NeuralNetworkStatsPanel.tsx +87 -0
  183. aether_quant-0.2.0/webui/src/components/risk/AssetSizingTable.tsx +116 -0
  184. aether_quant-0.2.0/webui/src/components/risk/LiquidityTable.tsx +122 -0
  185. aether_quant-0.2.0/webui/src/components/risk/RiskBar.tsx +14 -0
  186. aether_quant-0.2.0/webui/src/components/risk/RiskCore.tsx +65 -0
  187. aether_quant-0.2.0/webui/src/components/risk/StrategyRiskCards.tsx +35 -0
  188. aether_quant-0.2.0/webui/src/components/scene3d/Scene3D.tsx +94 -0
  189. aether_quant-0.2.0/webui/src/components/scorecards/Scorecards.tsx +27 -0
  190. aether_quant-0.2.0/webui/src/components/signals/Badge.tsx +30 -0
  191. aether_quant-0.2.0/webui/src/components/signals/PositionsList.tsx +36 -0
  192. aether_quant-0.2.0/webui/src/components/signals/SignalBoard.tsx +45 -0
  193. aether_quant-0.2.0/webui/src/components/topology/ClusterList.tsx +45 -0
  194. aether_quant-0.2.0/webui/src/components/topology/TopologyLearningPanel.tsx +93 -0
  195. aether_quant-0.2.0/webui/src/components/topology/TopologyScene3D.tsx +125 -0
  196. aether_quant-0.2.0/webui/src/components/tracing/AssetPerformancePanel.tsx +56 -0
  197. aether_quant-0.2.0/webui/src/components/tracing/BacktestEquityPanel.tsx +93 -0
  198. aether_quant-0.2.0/webui/src/components/tracing/DivergingBarChart.tsx +49 -0
  199. aether_quant-0.2.0/webui/src/components/tracing/LineChart.tsx +195 -0
  200. aether_quant-0.2.0/webui/src/components/tracing/MetricsSnapshotPanel.tsx +46 -0
  201. aether_quant-0.2.0/webui/src/components/tracing/ObservationEquityPanel.tsx +72 -0
  202. aether_quant-0.2.0/webui/src/index.css +11 -0
  203. aether_quant-0.2.0/webui/src/lib/downsample.ts +13 -0
  204. aether_quant-0.2.0/webui/src/lib/format.ts +25 -0
  205. aether_quant-0.2.0/webui/src/main.tsx +18 -0
  206. aether_quant-0.2.0/webui/src/pages/NeuralNetworkPage.tsx +15 -0
  207. aether_quant-0.2.0/webui/src/pages/Overview.tsx +34 -0
  208. aether_quant-0.2.0/webui/src/pages/RiskPage.tsx +16 -0
  209. aether_quant-0.2.0/webui/src/pages/TopologyPage.tsx +20 -0
  210. aether_quant-0.2.0/webui/src/pages/TracingPage.tsx +26 -0
  211. aether_quant-0.2.0/webui/src/types/state.ts +371 -0
  212. aether_quant-0.2.0/webui/src/types/tracing.ts +26 -0
  213. aether_quant-0.2.0/webui/tsconfig.app.json +25 -0
  214. aether_quant-0.2.0/webui/tsconfig.json +7 -0
  215. aether_quant-0.2.0/webui/tsconfig.node.json +23 -0
  216. aether_quant-0.2.0/webui/vite.config.ts +16 -0
@@ -0,0 +1,16 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.pyo
4
+ .venv/
5
+ node_modules/
6
+ webui/node_modules/
7
+ webui/dist/
8
+ backtests/
9
+ .lean/
10
+ .git/
11
+ .claude/
12
+ Aether-quant-Obsidian-Vault/
13
+ # Large data directories not needed by the FastAPI server
14
+ data/
15
+ ml/
16
+ storage/
@@ -0,0 +1,12 @@
1
+ # Copy this file to .env (untracked, .gitignore'd) and fill in real values.
2
+ # docker-compose.yml reads .env automatically for ${VAR} substitutions.
3
+
4
+ # PostgreSQL (defaults already work for local dev — override for anything else)
5
+ POSTGRES_DB=aether_quant
6
+ POSTGRES_USER=aether
7
+ POSTGRES_PASSWORD=aether_dev_password
8
+
9
+ # Telegram alerts (V2-19) — required for notifications.telegram_worker to
10
+ # actually send messages; leave blank to run the worker as a safe no-op.
11
+ AETHER_TELEGRAM_BOT_TOKEN=
12
+ AETHER_TELEGRAM_CHAT_ID=
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
@@ -0,0 +1,43 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.11"
17
+
18
+ - name: Install dependencies
19
+ run: pip install -r requirements/requirements.txt -r requirements/requirements-dev.txt
20
+
21
+ - name: Run tests
22
+ run: pytest
23
+ # tests/test_lean_backtest_ml_coverage.py self-skips: it requires the
24
+ # QuantConnect Lean CLI, which GitHub-hosted runners don't have.
25
+
26
+ webui:
27
+ runs-on: ubuntu-latest
28
+ defaults:
29
+ run:
30
+ working-directory: webui
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+
34
+ - uses: actions/setup-node@v4
35
+ with:
36
+ node-version: "20"
37
+ cache: "npm"
38
+ cache-dependency-path: webui/package-lock.json
39
+
40
+ - run: npm ci
41
+ - run: npx tsc -b
42
+ - run: npx oxlint
43
+ - run: npm run build
@@ -0,0 +1,72 @@
1
+ name: Release
2
+
3
+ # Releasing is a manual, deliberate act: tag a commit on main and push the
4
+ # tag. Nothing else triggers this workflow - matches this project's existing
5
+ # bias toward no uncontrolled automatic actions (see e.g. retraining's
6
+ # manual promote/rollback).
7
+ on:
8
+ push:
9
+ tags: ["v*.*.*"]
10
+
11
+ jobs:
12
+ publish-pypi:
13
+ runs-on: ubuntu-latest
14
+ environment: pypi # must match the Environment name configured in PyPI's Trusted Publisher setup
15
+ permissions:
16
+ # Required for PyPI Trusted Publishing (OIDC) - no PyPI token is ever
17
+ # stored as a secret. Requires a one-time Trusted Publisher setup on
18
+ # the PyPI project page (repo + this workflow filename).
19
+ id-token: write
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ fetch-depth: 0 # full history/tags - required for setuptools-scm
24
+
25
+ - uses: actions/setup-python@v5
26
+ with:
27
+ python-version: "3.11"
28
+
29
+ - name: Build sdist and wheel
30
+ run: |
31
+ pip install build
32
+ python -m build
33
+
34
+ - name: Publish to PyPI
35
+ uses: pypa/gh-action-pypi-publish@release/v1
36
+
37
+ publish-docker:
38
+ runs-on: ubuntu-latest
39
+ permissions:
40
+ contents: read
41
+ packages: write
42
+ env:
43
+ # Hardcoded lowercase, not derived from ${{ github.repository }}:
44
+ # the repo is leon1706-lol/Aether-quant (capital A), but Docker image
45
+ # references must be all-lowercase - using github.repository directly
46
+ # would fail with "invalid reference format".
47
+ IMAGE_NAME: ghcr.io/leon1706-lol/aether-quant
48
+ steps:
49
+ - uses: actions/checkout@v4
50
+
51
+ - uses: docker/setup-buildx-action@v3
52
+
53
+ - uses: docker/login-action@v3
54
+ with:
55
+ registry: ghcr.io
56
+ username: ${{ github.actor }}
57
+ password: ${{ secrets.GITHUB_TOKEN }}
58
+
59
+ - id: meta
60
+ uses: docker/metadata-action@v5
61
+ with:
62
+ images: ${{ env.IMAGE_NAME }}
63
+ tags: |
64
+ type=semver,pattern={{version}}
65
+ type=raw,value=latest
66
+
67
+ - uses: docker/build-push-action@v6
68
+ with:
69
+ context: .
70
+ push: true
71
+ tags: ${{ steps.meta.outputs.tags }}
72
+ labels: ${{ steps.meta.outputs.labels }}
@@ -0,0 +1,95 @@
1
+ # Python cache and virtual environments
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ .ruff_cache/
8
+ .venv/
9
+ venv/
10
+ env/
11
+ *.egg-info/
12
+ /dist/
13
+ /build/
14
+
15
+ # Local secrets and broker/API credentials
16
+ .env
17
+ .env.*
18
+ !.env.compose.example
19
+ ib_config.py
20
+ *_config.local.py
21
+ config.json
22
+ config.local.json
23
+ lean.json
24
+ lean.local.json
25
+
26
+ *.key
27
+ *.pem
28
+
29
+ # OS/editor noise
30
+ .DS_Store
31
+ Thumbs.db
32
+ .idea/
33
+ .vscode/
34
+ .claude/
35
+ docker-compose.override.yml
36
+ postgres-data/
37
+ redis-data/
38
+ grafana-data/
39
+ pgdata/
40
+
41
+ # Lean market data: too large for a public GitHub repo
42
+ data/**
43
+ !data/**/
44
+ !data/**/.keep
45
+ !data/**/.gitkeep
46
+
47
+ # Lean object store / local runtime output
48
+ storage/
49
+ objectstore/
50
+
51
+ # Backtest results and generated reports
52
+ backtests/**
53
+ !backtests/
54
+ !backtests/.gitkeep
55
+
56
+ # Generated ML datasets and binary artifacts
57
+ ml/datasets/
58
+ ml/expert_datasets/
59
+ ml/expert_models/
60
+ ml/model.pt
61
+ ml/scaler.pkl
62
+ ml/*.pkl
63
+ ml/*.pt
64
+ ml/*.pth
65
+ ml/*.onnx
66
+
67
+ # Generated ML/runtime JSON artifacts
68
+ ml/dataset_inventory.json
69
+ ml/dataset_manifest.json
70
+ ml/expert_dataset_manifest.json
71
+ ml/feature_schema.json
72
+ ml/model_weights.json
73
+ ml/scaler_stats.json
74
+ ml/training_metrics.json
75
+ ml/expert_training_metrics.json
76
+
77
+ # Generated visualization/runtime feeds
78
+ visualization/state.json
79
+ visualization/scene.json
80
+ visualization/topology_state.json
81
+ visualization/grafana/
82
+
83
+ # Logs and temporary files
84
+ .coverage
85
+ coverage.xml
86
+ htmlcov/
87
+ *.log
88
+ *.tmp
89
+ *.bak
90
+ # Obsidian vault for project graphs and AI handoffs
91
+ Aether-quant-Obsidian-Vault/
92
+
93
+ # Webui (React/Vite) build artifacts and dependencies
94
+ webui/node_modules/
95
+ webui/dist/
@@ -0,0 +1,18 @@
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: Python runtime (FastAPI server only — no ML deps)
10
+ FROM python:3.11-slim
11
+ WORKDIR /app
12
+ COPY requirements/requirements-runtime.txt .
13
+ RUN pip install --no-cache-dir -r requirements-runtime.txt
14
+ COPY monitoring/ ./monitoring/
15
+ COPY visualization/ ./visualization/
16
+ COPY --from=webui-builder /app/webui/dist ./webui/dist
17
+ EXPOSE 8000
18
+ CMD ["uvicorn", "monitoring.api_server:app", "--host", "0.0.0.0", "--port", "8000"]
@@ -0,0 +1,14 @@
1
+ FROM python:3.11-slim
2
+ WORKDIR /app
3
+ COPY requirements/requirements-retraining-worker.txt .
4
+ RUN pip install --no-cache-dir -r requirements-retraining-worker.txt
5
+ COPY execution/ ./execution/
6
+ COPY experience/ ./experience/
7
+ COPY performance/ ./performance/
8
+ COPY regime/ ./regime/
9
+ COPY experts/ ./experts/
10
+ COPY topology/ ./topology/
11
+ COPY retraining/ ./retraining/
12
+ COPY train.py .
13
+ COPY train_topology.py .
14
+ CMD ["python", "-m", "retraining.worker"]
@@ -0,0 +1,9 @@
1
+ FROM python:3.11-slim
2
+ WORKDIR /app
3
+ COPY requirements/requirements-telegram-worker.txt .
4
+ RUN pip install --no-cache-dir -r requirements-telegram-worker.txt
5
+ COPY execution/ ./execution/
6
+ COPY experience/ ./experience/
7
+ COPY performance/ ./performance/
8
+ COPY notifications/ ./notifications/
9
+ CMD ["python", "-m", "notifications.telegram_worker"]
@@ -0,0 +1,8 @@
1
+ FROM python:3.11-slim
2
+ WORKDIR /app
3
+ COPY requirements/requirements-trigger-worker.txt .
4
+ RUN pip install --no-cache-dir -r requirements-trigger-worker.txt
5
+ COPY execution/ ./execution/
6
+ COPY experience/ ./experience/
7
+ COPY performance/ ./performance/
8
+ CMD ["python", "-m", "performance.trigger_worker"]
@@ -0,0 +1,7 @@
1
+ FROM python:3.11-slim
2
+ WORKDIR /app
3
+ COPY requirements/requirements-worker.txt .
4
+ RUN pip install --no-cache-dir -r requirements-worker.txt
5
+ COPY execution/ ./execution/
6
+ COPY experience/ ./experience/
7
+ CMD ["python", "-m", "experience.postgres_worker"]
@@ -0,0 +1,5 @@
1
+ Metadata-Version: 2.4
2
+ Name: aether-quant
3
+ Version: 0.2.0
4
+ Summary: Aether Quant convenience CLI
5
+ Requires-Python: >=3.10