monte-neo 0.15.1__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 (442) hide show
  1. monte_neo-0.15.1/.coveragerc +23 -0
  2. monte_neo-0.15.1/.dockerignore +31 -0
  3. monte_neo-0.15.1/.env.example +22 -0
  4. monte_neo-0.15.1/.github/dependabot.yml +17 -0
  5. monte_neo-0.15.1/.github/workflows/ci.yml +33 -0
  6. monte_neo-0.15.1/.gitignore +149 -0
  7. monte_neo-0.15.1/LICENSE +21 -0
  8. monte_neo-0.15.1/PKG-INFO +251 -0
  9. monte_neo-0.15.1/README.md +181 -0
  10. monte_neo-0.15.1/SECURITY.md +20 -0
  11. monte_neo-0.15.1/config.yaml +16 -0
  12. monte_neo-0.15.1/coverage_html/.gitignore +2 -0
  13. monte_neo-0.15.1/coverage_html/class_index.html +1661 -0
  14. monte_neo-0.15.1/coverage_html/coverage_html_cb_dd2e7eb5.js +735 -0
  15. monte_neo-0.15.1/coverage_html/function_index.html +5381 -0
  16. monte_neo-0.15.1/coverage_html/index.html +846 -0
  17. monte_neo-0.15.1/coverage_html/status.json +1 -0
  18. monte_neo-0.15.1/coverage_html/style_cb_9ff733b0.css +389 -0
  19. monte_neo-0.15.1/coverage_html/z_0ff8ecdeec75dd37_metal_engine_py.html +391 -0
  20. monte_neo-0.15.1/coverage_html/z_120c2080de519003_charts_py.html +250 -0
  21. monte_neo-0.15.1/coverage_html/z_120c2080de519003_metrics_py.html +226 -0
  22. monte_neo-0.15.1/coverage_html/z_120c2080de519003_trades_py.html +185 -0
  23. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_base_py.html +293 -0
  24. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_code_gen_py.html +176 -0
  25. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_custom_py.html +265 -0
  26. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_dynamic_py.html +306 -0
  27. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_evaluator_py.html +212 -0
  28. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_macd_py.html +186 -0
  29. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_metal_parser_py.html +191 -0
  30. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_numba_funcs_py.html +273 -0
  31. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_rsi_py.html +174 -0
  32. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_sma_py.html +192 -0
  33. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_technical_lib_py.html +183 -0
  34. monte_neo-0.15.1/coverage_html/z_2c8a38a5aba4312b_technical_py.html +126 -0
  35. monte_neo-0.15.1/coverage_html/z_46be5b825b6f355f_production_exporter_py.html +294 -0
  36. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_calculator_py.html +394 -0
  37. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_drawdown_py.html +291 -0
  38. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_numba_funcs_py.html +411 -0
  39. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_profit_factor_py.html +182 -0
  40. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_sharpe_py.html +266 -0
  41. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_types_py.html +113 -0
  42. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_utils_py.html +184 -0
  43. monte_neo-0.15.1/coverage_html/z_48046b19ba7c1450_winrate_py.html +302 -0
  44. monte_neo-0.15.1/coverage_html/z_5ad601d87a58dff4_downloader_py.html +351 -0
  45. monte_neo-0.15.1/coverage_html/z_5ad601d87a58dff4_sampler_py.html +373 -0
  46. monte_neo-0.15.1/coverage_html/z_5ad601d87a58dff4_storage_py.html +355 -0
  47. monte_neo-0.15.1/coverage_html/z_5ad601d87a58dff4_websocket_py.html +357 -0
  48. monte_neo-0.15.1/coverage_html/z_61156a7bfd9a4d71_engine_py.html +313 -0
  49. monte_neo-0.15.1/coverage_html/z_61156a7bfd9a4d71_float8_py.html +273 -0
  50. monte_neo-0.15.1/coverage_html/z_61156a7bfd9a4d71_indicators_py.html +241 -0
  51. monte_neo-0.15.1/coverage_html/z_61156a7bfd9a4d71_tensor_ops_py.html +212 -0
  52. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_config_py.html +160 -0
  53. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_evolution_ai_py.html +280 -0
  54. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_evolution_py.html +309 -0
  55. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_generator_py.html +269 -0
  56. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_generator_search_py.html +377 -0
  57. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_generator_utils_py.html +163 -0
  58. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_generator_worker_py.html +166 -0
  59. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_gpu_engine_py.html +100 -0
  60. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_gpu_lazy_py.html +277 -0
  61. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_gpu_scenarios_py.html +310 -0
  62. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_mlx_engine_py.html +416 -0
  63. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_optimizer_py.html +405 -0
  64. monte_neo-0.15.1/coverage_html/z_9e887609b9c7e728_validator_py.html +384 -0
  65. monte_neo-0.15.1/coverage_html/z_ad67c5d3cc28109e_app_py.html +304 -0
  66. monte_neo-0.15.1/coverage_html/z_ad67c5d3cc28109e_progress_py.html +243 -0
  67. monte_neo-0.15.1/coverage_html/z_ad67c5d3cc28109e_styles_py.html +228 -0
  68. monte_neo-0.15.1/coverage_html/z_b3f7225c6177de57__version_py.html +100 -0
  69. monte_neo-0.15.1/coverage_html/z_b7dc42965a3d1e29_ast_utils_py.html +191 -0
  70. monte_neo-0.15.1/coverage_html/z_b7dc42965a3d1e29_cache_py.html +184 -0
  71. monte_neo-0.15.1/coverage_html/z_b7dc42965a3d1e29_config_py.html +244 -0
  72. monte_neo-0.15.1/coverage_html/z_b7dc42965a3d1e29_console_py.html +102 -0
  73. monte_neo-0.15.1/coverage_html/z_b7dc42965a3d1e29_logger_py.html +173 -0
  74. monte_neo-0.15.1/coverage_html/z_b7dc42965a3d1e29_parallel_py.html +309 -0
  75. monte_neo-0.15.1/coverage_html/z_b7dc42965a3d1e29_visualization_py.html +218 -0
  76. monte_neo-0.15.1/coverage_html/z_ceb66e361d548389_manager_py.html +294 -0
  77. monte_neo-0.15.1/coverage_html/z_ceb66e361d548389_risk_py.html +145 -0
  78. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_cscv_py.html +163 -0
  79. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_engine_py.html +482 -0
  80. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_noise_py.html +353 -0
  81. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_scenarios_py.html +211 -0
  82. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_sensitivity_py.html +313 -0
  83. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_sequential_py.html +400 -0
  84. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_shuffler_py.html +324 -0
  85. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_types_py.html +166 -0
  86. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_utils_py.html +159 -0
  87. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_walk_forward_py.html +395 -0
  88. monte_neo-0.15.1/coverage_html/z_dec9456bbe122ee0_workers_py.html +302 -0
  89. monte_neo-0.15.1/coverage_html/z_e454cea899750344_custom_test_py.html +294 -0
  90. monte_neo-0.15.1/coverage_html/z_e454cea899750344_data_py.html +248 -0
  91. monte_neo-0.15.1/coverage_html/z_e454cea899750344_generator_py.html +219 -0
  92. monte_neo-0.15.1/coverage_html/z_e454cea899750344_hardware_py.html +278 -0
  93. monte_neo-0.15.1/coverage_html/z_e454cea899750344_leadership_py.html +226 -0
  94. monte_neo-0.15.1/coverage_html/z_e454cea899750344_main_py.html +248 -0
  95. monte_neo-0.15.1/coverage_html/z_e454cea899750344_mc_config_py.html +140 -0
  96. monte_neo-0.15.1/coverage_html/z_e454cea899750344_metrics_py.html +160 -0
  97. monte_neo-0.15.1/coverage_html/z_e454cea899750344_portfolio_py.html +269 -0
  98. monte_neo-0.15.1/coverage_html/z_e454cea899750344_results_py.html +341 -0
  99. monte_neo-0.15.1/coverage_html/z_e454cea899750344_settings_py.html +204 -0
  100. monte_neo-0.15.1/coverage_html/z_e454cea899750344_symbol_selector_py.html +303 -0
  101. monte_neo-0.15.1/docker/Dockerfile +43 -0
  102. monte_neo-0.15.1/docker/docker-compose.yml +19 -0
  103. monte_neo-0.15.1/docs/COMMERCIAL_RU.md +37 -0
  104. monte_neo-0.15.1/docs/INDEX.md +150 -0
  105. monte_neo-0.15.1/docs/METAL_NATIVE_BUILD.md +55 -0
  106. monte_neo-0.15.1/docs/api/README.md +13 -0
  107. monte_neo-0.15.1/docs/assets/demo_memory_plan.png +0 -0
  108. monte_neo-0.15.1/docs/assets/demo_sma_sweep.png +0 -0
  109. monte_neo-0.15.1/docs/assets/monteneo-logo.png +0 -0
  110. monte_neo-0.15.1/docs/development/CLAUDE.md +58 -0
  111. monte_neo-0.15.1/docs/development/api-documentation.md +28 -0
  112. monte_neo-0.15.1/docs/development/external-libs.md +27 -0
  113. monte_neo-0.15.1/docs/development/generation_mechanics.md +107 -0
  114. monte_neo-0.15.1/docs/development/performance.md +26 -0
  115. monte_neo-0.15.1/docs/development/rules.md +30 -0
  116. monte_neo-0.15.1/docs/development/testing.md +45 -0
  117. monte_neo-0.15.1/docs/en/COMMERCIAL.md +37 -0
  118. monte_neo-0.15.1/docs/examples/README.md +11 -0
  119. monte_neo-0.15.1/docs/guides/FAQ.md +40 -0
  120. monte_neo-0.15.1/docs/guides/quick-start.md +31 -0
  121. monte_neo-0.15.1/docs/project/BRANCHING.md +9 -0
  122. monte_neo-0.15.1/docs/project/CHANGELOG.md +275 -0
  123. monte_neo-0.15.1/docs/project/PACKAGING.md +70 -0
  124. monte_neo-0.15.1/docs/project/ROADMAP.md +70 -0
  125. monte_neo-0.15.1/docs/project/backtest_engine.md +115 -0
  126. monte_neo-0.15.1/docs/project/dynamic_indicators.md +101 -0
  127. monte_neo-0.15.1/docs/project/features.md +48 -0
  128. monte_neo-0.15.1/docs/project/mc_accel.md +28 -0
  129. monte_neo-0.15.1/docs/project/oms_engine.md +73 -0
  130. monte_neo-0.15.1/docs/project/project-idea.md +24 -0
  131. monte_neo-0.15.1/docs/project/project-structure.md +29 -0
  132. monte_neo-0.15.1/docs/project/tech-stack.md +132 -0
  133. monte_neo-0.15.1/docs/project/vision.md +51 -0
  134. monte_neo-0.15.1/docs/setup/auth.md +19 -0
  135. monte_neo-0.15.1/docs/setup/development-setup.md +51 -0
  136. monte_neo-0.15.1/docs/setup/installation.md +29 -0
  137. monte_neo-0.15.1/docs/setup/user-settings.md +69 -0
  138. monte_neo-0.15.1/examples/README.md +17 -0
  139. monte_neo-0.15.1/examples/export_sma_sweep_quickstart.py +29 -0
  140. monte_neo-0.15.1/profile_stats.txt +58 -0
  141. monte_neo-0.15.1/pyproject.toml +165 -0
  142. monte_neo-0.15.1/scripts/benchmark_3d_engine.py +112 -0
  143. monte_neo-0.15.1/scripts/benchmark_drivers.py +79 -0
  144. monte_neo-0.15.1/scripts/benchmark_dynamic.py +77 -0
  145. monte_neo-0.15.1/scripts/benchmark_gpu.py +48 -0
  146. monte_neo-0.15.1/scripts/benchmark_mc.py +93 -0
  147. monte_neo-0.15.1/scripts/benchmark_suite.py +134 -0
  148. monte_neo-0.15.1/scripts/build_native.sh +43 -0
  149. monte_neo-0.15.1/scripts/check_system.py +111 -0
  150. monte_neo-0.15.1/scripts/production_pipeline.py +83 -0
  151. monte_neo-0.15.1/scripts/run_full_test_suite.sh +100 -0
  152. monte_neo-0.15.1/scripts/test_advanced_metal.py +67 -0
  153. monte_neo-0.15.1/scripts/test_bb_metal.py +42 -0
  154. monte_neo-0.15.1/scripts/test_dlpack.py +25 -0
  155. monte_neo-0.15.1/scripts/test_metal_pipeline.py +72 -0
  156. monte_neo-0.15.1/scripts/test_mlx_overhead.py +27 -0
  157. monte_neo-0.15.1/scripts/test_mlx_ptr.py +35 -0
  158. monte_neo-0.15.1/scripts/verify_metrics.py +83 -0
  159. monte_neo-0.15.1/scripts/verify_metrics_accuracy.py +121 -0
  160. monte_neo-0.15.1/scripts/visualize_stress_tests.py +65 -0
  161. monte_neo-0.15.1/setup_native.py +15 -0
  162. monte_neo-0.15.1/src/monte_neo/__init__.py +13 -0
  163. monte_neo-0.15.1/src/monte_neo/_version.py +4 -0
  164. monte_neo-0.15.1/src/monte_neo/backtest/__init__.py +74 -0
  165. monte_neo-0.15.1/src/monte_neo/backtest/bar_engine.py +121 -0
  166. monte_neo-0.15.1/src/monte_neo/backtest/batch.py +211 -0
  167. monte_neo-0.15.1/src/monte_neo/backtest/core_numba.py +295 -0
  168. monte_neo-0.15.1/src/monte_neo/backtest/data.py +111 -0
  169. monte_neo-0.15.1/src/monte_neo/backtest/export.py +265 -0
  170. monte_neo-0.15.1/src/monte_neo/backtest/golden.py +191 -0
  171. monte_neo-0.15.1/src/monte_neo/backtest/memory_plan.py +190 -0
  172. monte_neo-0.15.1/src/monte_neo/backtest/metal_economics.py +365 -0
  173. monte_neo-0.15.1/src/monte_neo/backtest/metrics.py +61 -0
  174. monte_neo-0.15.1/src/monte_neo/backtest/model.py +83 -0
  175. monte_neo-0.15.1/src/monte_neo/backtest/portfolio_lite.py +60 -0
  176. monte_neo-0.15.1/src/monte_neo/backtest/portfolio_shared.py +264 -0
  177. monte_neo-0.15.1/src/monte_neo/backtest/signal_factory.py +171 -0
  178. monte_neo-0.15.1/src/monte_neo/backtest/strategy.py +72 -0
  179. monte_neo-0.15.1/src/monte_neo/backtest/sweep.py +132 -0
  180. monte_neo-0.15.1/src/monte_neo/backtest/trades.py +76 -0
  181. monte_neo-0.15.1/src/monte_neo/cli/__init__.py +7 -0
  182. monte_neo-0.15.1/src/monte_neo/cli/app.py +207 -0
  183. monte_neo-0.15.1/src/monte_neo/cli/menu/__init__.py +7 -0
  184. monte_neo-0.15.1/src/monte_neo/cli/menu/custom_test.py +197 -0
  185. monte_neo-0.15.1/src/monte_neo/cli/menu/data.py +151 -0
  186. monte_neo-0.15.1/src/monte_neo/cli/menu/generator.py +132 -0
  187. monte_neo-0.15.1/src/monte_neo/cli/menu/hardware.py +181 -0
  188. monte_neo-0.15.1/src/monte_neo/cli/menu/leadership.py +344 -0
  189. monte_neo-0.15.1/src/monte_neo/cli/menu/leadership_optimizer.py +160 -0
  190. monte_neo-0.15.1/src/monte_neo/cli/menu/main.py +160 -0
  191. monte_neo-0.15.1/src/monte_neo/cli/menu/mc_config.py +43 -0
  192. monte_neo-0.15.1/src/monte_neo/cli/menu/metrics.py +63 -0
  193. monte_neo-0.15.1/src/monte_neo/cli/menu/portfolio.py +172 -0
  194. monte_neo-0.15.1/src/monte_neo/cli/menu/results.py +244 -0
  195. monte_neo-0.15.1/src/monte_neo/cli/menu/settings.py +113 -0
  196. monte_neo-0.15.1/src/monte_neo/cli/menu/symbol_selector.py +239 -0
  197. monte_neo-0.15.1/src/monte_neo/cli/progress.py +143 -0
  198. monte_neo-0.15.1/src/monte_neo/cli/styles.py +131 -0
  199. monte_neo-0.15.1/src/monte_neo/core/__init__.py +7 -0
  200. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/MetalBridgeSwift.swift +97 -0
  201. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/bindings.mm +101 -0
  202. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/compile.sh +40 -0
  203. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/include/metal_bridge.hpp +68 -0
  204. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/metal_bridge.mm +95 -0
  205. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/metal_bridge_internal.hpp +28 -0
  206. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/metal_metrics.mm +73 -0
  207. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/shaders/backtest_kernels.metal +173 -0
  208. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/shaders/common.metal +24 -0
  209. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/shaders/indicators.metal +151 -0
  210. monte_neo-0.15.1/src/monte_neo/core/acceleration/cpp_metal/shaders/metrics_kernel.metal +140 -0
  211. monte_neo-0.15.1/src/monte_neo/core/acceleration/engine.py +220 -0
  212. monte_neo-0.15.1/src/monte_neo/core/acceleration/float8.py +176 -0
  213. monte_neo-0.15.1/src/monte_neo/core/acceleration/indicators.py +145 -0
  214. monte_neo-0.15.1/src/monte_neo/core/acceleration/tensor_ops.py +119 -0
  215. monte_neo-0.15.1/src/monte_neo/core/config.py +63 -0
  216. monte_neo-0.15.1/src/monte_neo/core/evolution.py +182 -0
  217. monte_neo-0.15.1/src/monte_neo/core/evolution_ai.py +295 -0
  218. monte_neo-0.15.1/src/monte_neo/core/generator.py +172 -0
  219. monte_neo-0.15.1/src/monte_neo/core/generator_search.py +280 -0
  220. monte_neo-0.15.1/src/monte_neo/core/generator_utils.py +66 -0
  221. monte_neo-0.15.1/src/monte_neo/core/generator_worker.py +69 -0
  222. monte_neo-0.15.1/src/monte_neo/core/gpu_engine.py +3 -0
  223. monte_neo-0.15.1/src/monte_neo/core/gpu_lazy.py +183 -0
  224. monte_neo-0.15.1/src/monte_neo/core/gpu_scenarios.py +216 -0
  225. monte_neo-0.15.1/src/monte_neo/core/mlx_3d_engine.py +213 -0
  226. monte_neo-0.15.1/src/monte_neo/core/mlx_driver_utils.py +73 -0
  227. monte_neo-0.15.1/src/monte_neo/core/mlx_engine.py +102 -0
  228. monte_neo-0.15.1/src/monte_neo/core/mlx_sim_engine.py +164 -0
  229. monte_neo-0.15.1/src/monte_neo/core/native/bindings.cpp +21 -0
  230. monte_neo-0.15.1/src/monte_neo/core/native/metal_engine.py +294 -0
  231. monte_neo-0.15.1/src/monte_neo/core/native/metal_kernels.metal +311 -0
  232. monte_neo-0.15.1/src/monte_neo/core/native/metrics.cpp +54 -0
  233. monte_neo-0.15.1/src/monte_neo/core/optimization/certification.py +71 -0
  234. monte_neo-0.15.1/src/monte_neo/core/optimization/gpu_optimizer.py +151 -0
  235. monte_neo-0.15.1/src/monte_neo/core/optimization/production_exporter.py +197 -0
  236. monte_neo-0.15.1/src/monte_neo/core/optimization/production_gate.py +92 -0
  237. monte_neo-0.15.1/src/monte_neo/core/optimization/stress_tester.py +183 -0
  238. monte_neo-0.15.1/src/monte_neo/core/optimizer.py +308 -0
  239. monte_neo-0.15.1/src/monte_neo/core/portfolio/__init__.py +6 -0
  240. monte_neo-0.15.1/src/monte_neo/core/portfolio/manager.py +199 -0
  241. monte_neo-0.15.1/src/monte_neo/core/portfolio/risk.py +48 -0
  242. monte_neo-0.15.1/src/monte_neo/core/validator.py +287 -0
  243. monte_neo-0.15.1/src/monte_neo/data/__init__.py +13 -0
  244. monte_neo-0.15.1/src/monte_neo/data/downloader.py +254 -0
  245. monte_neo-0.15.1/src/monte_neo/data/sampler.py +276 -0
  246. monte_neo-0.15.1/src/monte_neo/data/storage.py +258 -0
  247. monte_neo-0.15.1/src/monte_neo/data/websocket.py +260 -0
  248. monte_neo-0.15.1/src/monte_neo/indicators/__init__.py +7 -0
  249. monte_neo-0.15.1/src/monte_neo/indicators/base.py +196 -0
  250. monte_neo-0.15.1/src/monte_neo/indicators/code_gen.py +78 -0
  251. monte_neo-0.15.1/src/monte_neo/indicators/custom.py +168 -0
  252. monte_neo-0.15.1/src/monte_neo/indicators/dynamic.py +217 -0
  253. monte_neo-0.15.1/src/monte_neo/indicators/evaluator.py +131 -0
  254. monte_neo-0.15.1/src/monte_neo/indicators/macd.py +89 -0
  255. monte_neo-0.15.1/src/monte_neo/indicators/metal_parser.py +94 -0
  256. monte_neo-0.15.1/src/monte_neo/indicators/numba_funcs.py +176 -0
  257. monte_neo-0.15.1/src/monte_neo/indicators/rsi.py +77 -0
  258. monte_neo-0.15.1/src/monte_neo/indicators/sma.py +95 -0
  259. monte_neo-0.15.1/src/monte_neo/indicators/technical.py +29 -0
  260. monte_neo-0.15.1/src/monte_neo/indicators/technical_lib.py +86 -0
  261. monte_neo-0.15.1/src/monte_neo/metrics/__init__.py +16 -0
  262. monte_neo-0.15.1/src/monte_neo/metrics/calculator.py +336 -0
  263. monte_neo-0.15.1/src/monte_neo/metrics/drawdown.py +194 -0
  264. monte_neo-0.15.1/src/monte_neo/metrics/numba_funcs.py +314 -0
  265. monte_neo-0.15.1/src/monte_neo/metrics/profit_factor.py +85 -0
  266. monte_neo-0.15.1/src/monte_neo/metrics/sharpe.py +169 -0
  267. monte_neo-0.15.1/src/monte_neo/metrics/types.py +16 -0
  268. monte_neo-0.15.1/src/monte_neo/metrics/utils.py +87 -0
  269. monte_neo-0.15.1/src/monte_neo/metrics/winrate.py +205 -0
  270. monte_neo-0.15.1/src/monte_neo/monte_carlo/__init__.py +32 -0
  271. monte_neo-0.15.1/src/monte_neo/monte_carlo/cscv.py +66 -0
  272. monte_neo-0.15.1/src/monte_neo/monte_carlo/dispatch.py +152 -0
  273. monte_neo-0.15.1/src/monte_neo/monte_carlo/engine.py +425 -0
  274. monte_neo-0.15.1/src/monte_neo/monte_carlo/memory_budget.py +72 -0
  275. monte_neo-0.15.1/src/monte_neo/monte_carlo/noise.py +256 -0
  276. monte_neo-0.15.1/src/monte_neo/monte_carlo/scenarios.py +114 -0
  277. monte_neo-0.15.1/src/monte_neo/monte_carlo/sensitivity.py +216 -0
  278. monte_neo-0.15.1/src/monte_neo/monte_carlo/sequential.py +305 -0
  279. monte_neo-0.15.1/src/monte_neo/monte_carlo/shuffler.py +227 -0
  280. monte_neo-0.15.1/src/monte_neo/monte_carlo/types.py +75 -0
  281. monte_neo-0.15.1/src/monte_neo/monte_carlo/utils.py +62 -0
  282. monte_neo-0.15.1/src/monte_neo/monte_carlo/walk_forward.py +298 -0
  283. monte_neo-0.15.1/src/monte_neo/monte_carlo/workers.py +205 -0
  284. monte_neo-0.15.1/src/monte_neo/oms/__init__.py +69 -0
  285. monte_neo-0.15.1/src/monte_neo/oms/accel/__init__.py +31 -0
  286. monte_neo-0.15.1/src/monte_neo/oms/accel/buffer_pool.py +38 -0
  287. monte_neo-0.15.1/src/monte_neo/oms/accel/compute_pref.py +25 -0
  288. monte_neo-0.15.1/src/monte_neo/oms/accel/device.py +68 -0
  289. monte_neo-0.15.1/src/monte_neo/oms/accel/match_l2_numba.py +63 -0
  290. monte_neo-0.15.1/src/monte_neo/oms/accel/match_numba.py +63 -0
  291. monte_neo-0.15.1/src/monte_neo/oms/accel/metal_dispatch.py +228 -0
  292. monte_neo-0.15.1/src/monte_neo/oms/accel/metal_l2.py +276 -0
  293. monte_neo-0.15.1/src/monte_neo/oms/accel/shader_catalog.py +38 -0
  294. monte_neo-0.15.1/src/monte_neo/oms/accel/shaders/oms_bar_match.metal +75 -0
  295. monte_neo-0.15.1/src/monte_neo/oms/accel/shaders/oms_l2_walk.metal +44 -0
  296. monte_neo-0.15.1/src/monte_neo/oms/adapters/__init__.py +38 -0
  297. monte_neo-0.15.1/src/monte_neo/oms/adapters/base.py +62 -0
  298. monte_neo-0.15.1/src/monte_neo/oms/adapters/binance.py +101 -0
  299. monte_neo-0.15.1/src/monte_neo/oms/adapters/bybit.py +101 -0
  300. monte_neo-0.15.1/src/monte_neo/oms/adapters/paper_exchange.py +153 -0
  301. monte_neo-0.15.1/src/monte_neo/oms/adapters/reconcile.py +33 -0
  302. monte_neo-0.15.1/src/monte_neo/oms/adapters/replay.py +41 -0
  303. monte_neo-0.15.1/src/monte_neo/oms/adapters/safety.py +23 -0
  304. monte_neo-0.15.1/src/monte_neo/oms/blotter.py +31 -0
  305. monte_neo-0.15.1/src/monte_neo/oms/book.py +74 -0
  306. monte_neo-0.15.1/src/monte_neo/oms/bracket.py +67 -0
  307. monte_neo-0.15.1/src/monte_neo/oms/clock.py +29 -0
  308. monte_neo-0.15.1/src/monte_neo/oms/engine.py +299 -0
  309. monte_neo-0.15.1/src/monte_neo/oms/l2_match.py +89 -0
  310. monte_neo-0.15.1/src/monte_neo/oms/matching.py +106 -0
  311. monte_neo-0.15.1/src/monte_neo/oms/paper.py +62 -0
  312. monte_neo-0.15.1/src/monte_neo/oms/portfolio.py +46 -0
  313. monte_neo-0.15.1/src/monte_neo/oms/strategy.py +91 -0
  314. monte_neo-0.15.1/src/monte_neo/oms/tick.py +63 -0
  315. monte_neo-0.15.1/src/monte_neo/oms/tick_engine.py +208 -0
  316. monte_neo-0.15.1/src/monte_neo/oms/types.py +111 -0
  317. monte_neo-0.15.1/src/monte_neo/utils/__init__.py +13 -0
  318. monte_neo-0.15.1/src/monte_neo/utils/ast_utils.py +119 -0
  319. monte_neo-0.15.1/src/monte_neo/utils/cache.py +87 -0
  320. monte_neo-0.15.1/src/monte_neo/utils/config.py +152 -0
  321. monte_neo-0.15.1/src/monte_neo/utils/console.py +5 -0
  322. monte_neo-0.15.1/src/monte_neo/utils/logger.py +76 -0
  323. monte_neo-0.15.1/src/monte_neo/utils/parallel.py +212 -0
  324. monte_neo-0.15.1/src/monte_neo/utils/visualization.py +121 -0
  325. monte_neo-0.15.1/src/monte_neo/visualization/__init__.py +7 -0
  326. monte_neo-0.15.1/src/monte_neo/visualization/charts.py +153 -0
  327. monte_neo-0.15.1/src/monte_neo/visualization/metrics.py +129 -0
  328. monte_neo-0.15.1/src/monte_neo/visualization/trades.py +88 -0
  329. monte_neo-0.15.1/tests/conftest.py +35 -0
  330. monte_neo-0.15.1/tests/integration/test_backtest_engine_integration.py +92 -0
  331. monte_neo-0.15.1/tests/integration/test_oms_adapters_integration.py +38 -0
  332. monte_neo-0.15.1/tests/integration/test_oms_integration.py +28 -0
  333. monte_neo-0.15.1/tests/integration/test_oms_tick_l2_integration.py +36 -0
  334. monte_neo-0.15.1/tests/integration/test_workflow.py +78 -0
  335. monte_neo-0.15.1/tests/performance/benchmark_ops.py +115 -0
  336. monte_neo-0.15.1/tests/performance/benchmark_serial.py +36 -0
  337. monte_neo-0.15.1/tests/performance/test_backtest_engine_perf.py +57 -0
  338. monte_neo-0.15.1/tests/performance/test_backtest_metal_perf.py +61 -0
  339. monte_neo-0.15.1/tests/performance/test_mc_memory_budget_perf.py +13 -0
  340. monte_neo-0.15.1/tests/performance/test_oms_l2_perf.py +24 -0
  341. monte_neo-0.15.1/tests/performance/test_oms_metal_l2_perf.py +32 -0
  342. monte_neo-0.15.1/tests/performance/test_oms_metal_perf.py +28 -0
  343. monte_neo-0.15.1/tests/performance/test_oms_perf.py +43 -0
  344. monte_neo-0.15.1/tests/stress/test_backtest_engine_stress.py +79 -0
  345. monte_neo-0.15.1/tests/stress/test_oms_stress.py +30 -0
  346. monte_neo-0.15.1/tests/stress/test_performance.py +69 -0
  347. monte_neo-0.15.1/tests/unit/test_ast_utils.py +38 -0
  348. monte_neo-0.15.1/tests/unit/test_backtest_correctness.py +99 -0
  349. monte_neo-0.15.1/tests/unit/test_backtest_engine.py +115 -0
  350. monte_neo-0.15.1/tests/unit/test_backtest_export_golden.py +135 -0
  351. monte_neo-0.15.1/tests/unit/test_backtest_fill_timing.py +35 -0
  352. monte_neo-0.15.1/tests/unit/test_backtest_gp_features.py +105 -0
  353. monte_neo-0.15.1/tests/unit/test_backtest_metal_parity.py +108 -0
  354. monte_neo-0.15.1/tests/unit/test_backtest_sl_batch.py +102 -0
  355. monte_neo-0.15.1/tests/unit/test_backtest_v02_features.py +137 -0
  356. monte_neo-0.15.1/tests/unit/test_binance_websocket.py +138 -0
  357. monte_neo-0.15.1/tests/unit/test_cache_util.py +56 -0
  358. monte_neo-0.15.1/tests/unit/test_capital_calc.py +79 -0
  359. monte_neo-0.15.1/tests/unit/test_code_gen.py +87 -0
  360. monte_neo-0.15.1/tests/unit/test_config.py +44 -0
  361. monte_neo-0.15.1/tests/unit/test_core_advanced.py +37 -0
  362. monte_neo-0.15.1/tests/unit/test_coverage_boost.py +204 -0
  363. monte_neo-0.15.1/tests/unit/test_coverage_boost10.py +663 -0
  364. monte_neo-0.15.1/tests/unit/test_coverage_boost11.py +576 -0
  365. monte_neo-0.15.1/tests/unit/test_coverage_boost12.py +672 -0
  366. monte_neo-0.15.1/tests/unit/test_coverage_boost13.py +546 -0
  367. monte_neo-0.15.1/tests/unit/test_coverage_boost14.py +182 -0
  368. monte_neo-0.15.1/tests/unit/test_coverage_boost15.py +69 -0
  369. monte_neo-0.15.1/tests/unit/test_coverage_boost16.py +12 -0
  370. monte_neo-0.15.1/tests/unit/test_coverage_boost2.py +282 -0
  371. monte_neo-0.15.1/tests/unit/test_coverage_boost3.py +102 -0
  372. monte_neo-0.15.1/tests/unit/test_coverage_boost4.py +693 -0
  373. monte_neo-0.15.1/tests/unit/test_coverage_boost5.py +724 -0
  374. monte_neo-0.15.1/tests/unit/test_coverage_boost6.py +498 -0
  375. monte_neo-0.15.1/tests/unit/test_coverage_boost7.py +439 -0
  376. monte_neo-0.15.1/tests/unit/test_coverage_boost8.py +398 -0
  377. monte_neo-0.15.1/tests/unit/test_coverage_boost9.py +575 -0
  378. monte_neo-0.15.1/tests/unit/test_coverage_cli.py +97 -0
  379. monte_neo-0.15.1/tests/unit/test_coverage_metal_mlx.py +48 -0
  380. monte_neo-0.15.1/tests/unit/test_coverage_numba.py +85 -0
  381. monte_neo-0.15.1/tests/unit/test_coverage_rest.py +116 -0
  382. monte_neo-0.15.1/tests/unit/test_cscv.py +39 -0
  383. monte_neo-0.15.1/tests/unit/test_data.py +46 -0
  384. monte_neo-0.15.1/tests/unit/test_downloader.py +124 -0
  385. monte_neo-0.15.1/tests/unit/test_drawdown.py +39 -0
  386. monte_neo-0.15.1/tests/unit/test_dynamic_indicator.py +178 -0
  387. monte_neo-0.15.1/tests/unit/test_evolution_ai.py +105 -0
  388. monte_neo-0.15.1/tests/unit/test_generator.py +118 -0
  389. monte_neo-0.15.1/tests/unit/test_generator_parts.py +90 -0
  390. monte_neo-0.15.1/tests/unit/test_generator_search.py +142 -0
  391. monte_neo-0.15.1/tests/unit/test_gpu_acceleration_engine.py +195 -0
  392. monte_neo-0.15.1/tests/unit/test_gpu_core.py +111 -0
  393. monte_neo-0.15.1/tests/unit/test_gpu_engine_parallel.py +53 -0
  394. monte_neo-0.15.1/tests/unit/test_gpu_lazy.py +73 -0
  395. monte_neo-0.15.1/tests/unit/test_gpu_scenarios.py +82 -0
  396. monte_neo-0.15.1/tests/unit/test_indicators.py +66 -0
  397. monte_neo-0.15.1/tests/unit/test_indicators_modular.py +91 -0
  398. monte_neo-0.15.1/tests/unit/test_indicators_numba.py +67 -0
  399. monte_neo-0.15.1/tests/unit/test_maintenance.py +103 -0
  400. monte_neo-0.15.1/tests/unit/test_mc_dispatch_budget.py +123 -0
  401. monte_neo-0.15.1/tests/unit/test_mc_engine.py +132 -0
  402. monte_neo-0.15.1/tests/unit/test_mc_workers.py +135 -0
  403. monte_neo-0.15.1/tests/unit/test_memory_plan_export_depth.py +49 -0
  404. monte_neo-0.15.1/tests/unit/test_metal_parser.py +41 -0
  405. monte_neo-0.15.1/tests/unit/test_metrics.py +124 -0
  406. monte_neo-0.15.1/tests/unit/test_metrics_calculator.py +134 -0
  407. monte_neo-0.15.1/tests/unit/test_metrics_modular.py +85 -0
  408. monte_neo-0.15.1/tests/unit/test_metrics_numba.py +93 -0
  409. monte_neo-0.15.1/tests/unit/test_mlx_engine.py +174 -0
  410. monte_neo-0.15.1/tests/unit/test_mlx_engine_extra.py +119 -0
  411. monte_neo-0.15.1/tests/unit/test_monte_carlo.py +56 -0
  412. monte_neo-0.15.1/tests/unit/test_monte_carlo_engine.py +260 -0
  413. monte_neo-0.15.1/tests/unit/test_monte_carlo_methods.py +89 -0
  414. monte_neo-0.15.1/tests/unit/test_monte_carlo_workers.py +191 -0
  415. monte_neo-0.15.1/tests/unit/test_no_hang_accelerator_fallback.py +177 -0
  416. monte_neo-0.15.1/tests/unit/test_numba_indicators.py +37 -0
  417. monte_neo-0.15.1/tests/unit/test_numba_metrics.py +82 -0
  418. monte_neo-0.15.1/tests/unit/test_oms_adapters.py +114 -0
  419. monte_neo-0.15.1/tests/unit/test_oms_engine.py +142 -0
  420. monte_neo-0.15.1/tests/unit/test_oms_gap_close.py +122 -0
  421. monte_neo-0.15.1/tests/unit/test_oms_metal_l2_parity.py +68 -0
  422. monte_neo-0.15.1/tests/unit/test_oms_metal_parity.py +64 -0
  423. monte_neo-0.15.1/tests/unit/test_oms_tick_l2.py +80 -0
  424. monte_neo-0.15.1/tests/unit/test_parallel.py +37 -0
  425. monte_neo-0.15.1/tests/unit/test_portfolio.py +118 -0
  426. monte_neo-0.15.1/tests/unit/test_production_exporter.py +59 -0
  427. monte_neo-0.15.1/tests/unit/test_sequential_mc.py +97 -0
  428. monte_neo-0.15.1/tests/unit/test_signal_factory.py +48 -0
  429. monte_neo-0.15.1/tests/unit/test_smart_optimizer.py +107 -0
  430. monte_neo-0.15.1/tests/unit/test_storage.py +63 -0
  431. monte_neo-0.15.1/tests/unit/test_technical_lib.py +45 -0
  432. monte_neo-0.15.1/tests/unit/test_ui.py +67 -0
  433. monte_neo-0.15.1/tests/unit/test_utils.py +34 -0
  434. monte_neo-0.15.1/tests/unit/test_utils_visualization.py +62 -0
  435. monte_neo-0.15.1/tests/unit/test_validator.py +52 -0
  436. monte_neo-0.15.1/tests/unit/test_visualization.py +48 -0
  437. monte_neo-0.15.1/tests/unit/test_websocket.py +43 -0
  438. monte_neo-0.15.1/tests/verify_metal_complex.py +75 -0
  439. monte_neo-0.15.1/user_indicators/template.py +84 -0
  440. monte_neo-0.15.1/uv.lock +2781 -0
  441. monte_neo-0.15.1/verify_gpu_optimizer.py +75 -0
  442. monte_neo-0.15.1/verify_hardware.py +76 -0
@@ -0,0 +1,23 @@
1
+ [run]
2
+ source = monte_neo
3
+ omit =
4
+ */monte_neo/cli/menu/*
5
+ */monte_neo/core/native/metal_engine.py
6
+ */monte_neo/core/mlx_*.py
7
+ */monte_neo/core/gpu_lazy.py
8
+ */monte_neo/core/gpu_scenarios.py
9
+ */monte_neo/core/acceleration/*
10
+
11
+ */monte_neo/metrics/numba_funcs.py
12
+ */monte_neo/indicators/numba_funcs.py
13
+ */monte_neo/backtest/core_numba.py
14
+ */monte_neo/oms/accel/match_numba.py
15
+ */monte_neo/oms/accel/match_l2_numba.py
16
+
17
+ [report]
18
+ fail_under = 100
19
+ show_missing = true
20
+ exclude_lines =
21
+ pragma: no cover
22
+ if TYPE_CHECKING:
23
+ raise NotImplementedError
@@ -0,0 +1,31 @@
1
+ # Docker ignore
2
+ .git
3
+ .pytest_cache
4
+ .coverage
5
+ htmlcov
6
+ coverage_html
7
+ .mypy_cache
8
+ .ruff_cache
9
+ __pycache__
10
+ *.pyc
11
+ *.pyo
12
+ *.pyd
13
+ .env
14
+ .venv
15
+ env
16
+ venv
17
+ profile_stats.txt
18
+ *.png
19
+ data/*.parquet
20
+ data/*.csv
21
+ !data/sample.parquet
22
+
23
+ # Certs
24
+ exports/
25
+ *.crt
26
+ *.key
27
+ *.pem
28
+ *.p12
29
+ *.pfx
30
+ cert.pem
31
+ key.pem
@@ -0,0 +1,22 @@
1
+ # Monte-Neo Environment Configuration
2
+
3
+ # Binance API (optional for public data / live OMS)
4
+ BINANCE_API_KEY=
5
+ BINANCE_API_SECRET=
6
+
7
+ # Bybit API (optional live OMS)
8
+ BYBIT_API_KEY=
9
+ BYBIT_API_SECRET=
10
+
11
+ # Live OMS safety (default: live disabled; dry-run on when live enabled)
12
+ # MONTE_NEO_LIVE_TRADING=1
13
+ # MONTE_NEO_LIVE_DRY_RUN=1
14
+
15
+ # Data directory
16
+ MONTE_NEO_DATA_DIR=./data
17
+
18
+ # Logging
19
+ MONTE_NEO_LOG_LEVEL=INFO
20
+
21
+ # Parallel processing
22
+ MONTE_NEO_WORKERS=auto
@@ -0,0 +1,17 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ open-pull-requests-limit: 5
8
+
9
+ - package-ecosystem: docker
10
+ directory: /docker
11
+ schedule:
12
+ interval: weekly
13
+
14
+ - package-ecosystem: github-actions
15
+ directory: /
16
+ schedule:
17
+ interval: weekly
@@ -0,0 +1,33 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: macos-14
14
+
15
+ steps:
16
+ - uses: actions/checkout@v7
17
+
18
+ - uses: actions/setup-python@v7
19
+ with:
20
+ python-version: "3.11"
21
+
22
+ - uses: astral-sh/setup-uv@v7
23
+ with:
24
+ enable-cache: true
25
+
26
+ - name: Install dependencies
27
+ run: uv sync --extra apple --group dev
28
+
29
+ - name: Lint
30
+ run: uv run ruff check .
31
+
32
+ - name: Run unit tests
33
+ run: uv run pytest tests/unit -W ignore
@@ -0,0 +1,149 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+ *.o
9
+
10
+ # Distribution / packaging
11
+ .Python
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+
28
+ # PyInstaller
29
+ *.manifest
30
+ *.spec
31
+
32
+ # Installer logs
33
+ pip-log.txt
34
+ pip-delete-this-directory.txt
35
+
36
+ # Unit test / coverage reports
37
+ htmlcov/
38
+ .tox/
39
+ .nox/
40
+ .coverage
41
+ .coverage.*
42
+ .cache
43
+ nosetests.xml
44
+ coverage.xml
45
+ *.cover
46
+ *.py,cover
47
+ .hypothesis/
48
+ .pytest_cache/
49
+
50
+ # Translations
51
+ *.mo
52
+ *.pot
53
+
54
+ # Django stuff:
55
+ *.log
56
+ local_settings.py
57
+
58
+ # Flask stuff:
59
+ instance/
60
+ .webassets-cache
61
+
62
+ # Scrapy stuff:
63
+ .scrapy
64
+
65
+ # Sphinx documentation
66
+ docs/_build/
67
+
68
+ # PyBuilder
69
+ target/
70
+
71
+ # Jupyter Notebook
72
+ .ipynb_checkpoints
73
+
74
+ # IPython
75
+ profile_default/
76
+ ipython_config.py
77
+
78
+ # pyenv
79
+ .python-version
80
+
81
+ # celery beat schedule file
82
+ celerybeat-schedule
83
+
84
+ # SageMath parsed files
85
+ *.sage.py
86
+
87
+ # Environments
88
+ .env
89
+ .venv
90
+ env/
91
+ venv/
92
+ ENV/
93
+ env.bak/
94
+ venv.bak/
95
+
96
+ # Results and Images
97
+ # Project data dirs (not the monte_neo.data package)
98
+ /data/
99
+ results/
100
+ exports/
101
+ *.png
102
+ *.jpg
103
+ *.jpeg
104
+ !docs/assets/
105
+ !docs/assets/**
106
+
107
+ # Certs
108
+ *.crt
109
+ *.key
110
+ *.pem
111
+ *.p12
112
+ *.pfx
113
+ cert.pem
114
+ key.pem
115
+ *.gif
116
+
117
+ # Profile stats
118
+ profile_stats.txt
119
+
120
+ # Spyder project settings
121
+ .spyderproject
122
+ .spyproject
123
+
124
+ # Rope project settings
125
+ .ropeproject
126
+
127
+ # mkdocs documentation
128
+ /site
129
+
130
+ # mypy
131
+ .mypy_cache/
132
+ .dmypy.json
133
+ dmypy.json
134
+
135
+ # Pyre type checker
136
+ .pyre/
137
+
138
+ # Project specific
139
+ data/raw/
140
+ data/processed/
141
+ data/results/
142
+ *.parquet
143
+ *.pkl
144
+ *.h5
145
+ .DS_Store
146
+
147
+ # LLM Integration (local wrapper)
148
+ local_ai_wrapper.py
149
+ __pycache__/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2026 NeoZorK / Monte-Neo contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,251 @@
1
+ Metadata-Version: 2.3
2
+ Name: monte-neo
3
+ Version: 0.15.1
4
+ Summary: Fast local research for trading strategies on Apple Silicon: fee-aware bar backtests, Monte Carlo, paper OMS (Metal/MLX/Numba)
5
+ Project-URL: Homepage, https://github.com/NeoZorK/Monte-Neo
6
+ Project-URL: Repository, https://github.com/NeoZorK/Monte-Neo
7
+ Project-URL: Issues, https://github.com/NeoZorK/Monte-Neo/issues
8
+ Project-URL: Changelog, https://github.com/NeoZorK/Monte-Neo/blob/main/docs/project/CHANGELOG.md
9
+ Project-URL: Documentation, https://github.com/NeoZorK/Monte-Neo/blob/main/docs/INDEX.md
10
+ Author: Monte-Neo Team
11
+ License: MIT
12
+ License-File: LICENSE
13
+ Keywords: apple-silicon,backtesting,metal,monte-carlo,oms,research,trading
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Financial and Insurance Industry
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: MacOS
19
+ Classifier: Operating System :: POSIX :: Linux
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Office/Business :: Financial :: Investment
25
+ Classifier: Topic :: Scientific/Engineering
26
+ Requires-Python: >=3.11
27
+ Requires-Dist: binance-connector>=3.12.0
28
+ Requires-Dist: fastapi>=0.138.2
29
+ Requires-Dist: lightgbm>=4.6.0
30
+ Requires-Dist: matplotlib>=3.10.8
31
+ Requires-Dist: mplfinance
32
+ Requires-Dist: numba>=0.58
33
+ Requires-Dist: numpy>=1.24
34
+ Requires-Dist: pandas>=2.0
35
+ Requires-Dist: pillow>=12.3.0
36
+ Requires-Dist: plotext>=5.2
37
+ Requires-Dist: prompt-toolkit>=3.0
38
+ Requires-Dist: psycopg2-binary>=2.9.12
39
+ Requires-Dist: pyarrow>=23.0.1
40
+ Requires-Dist: pybind11>=2.10.0
41
+ Requires-Dist: python-dotenv>=1.2.2
42
+ Requires-Dist: pyyaml>=6.0
43
+ Requires-Dist: questionary>=2.0
44
+ Requires-Dist: redis>=8.0.1
45
+ Requires-Dist: rich>=13.0
46
+ Requires-Dist: scikit-learn>=1.9.0
47
+ Requires-Dist: seaborn>=0.13.2
48
+ Requires-Dist: statsmodels>=0.14.6
49
+ Requires-Dist: ta>=0.10
50
+ Requires-Dist: uvicorn>=0.49.0
51
+ Provides-Extra: apple
52
+ Requires-Dist: mlx>=0.11.0; extra == 'apple'
53
+ Requires-Dist: pyobjc-framework-cocoa>=12.2.2; extra == 'apple'
54
+ Requires-Dist: pyobjc-framework-metal>=12.2.2; extra == 'apple'
55
+ Provides-Extra: dev
56
+ Requires-Dist: black>=26.3.1; extra == 'dev'
57
+ Requires-Dist: build>=1.2; extra == 'dev'
58
+ Requires-Dist: mypy>=1.5; extra == 'dev'
59
+ Requires-Dist: pandas-stubs; extra == 'dev'
60
+ Requires-Dist: pre-commit>=3.4; extra == 'dev'
61
+ Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
62
+ Requires-Dist: pytest-cov>=4.1; extra == 'dev'
63
+ Requires-Dist: pytest-xdist>=3.3; extra == 'dev'
64
+ Requires-Dist: pytest>=9.0.3; extra == 'dev'
65
+ Requires-Dist: ruff>=0.1; extra == 'dev'
66
+ Requires-Dist: setuptools>=75.0; extra == 'dev'
67
+ Requires-Dist: twine>=5.0; extra == 'dev'
68
+ Requires-Dist: types-pyyaml; extra == 'dev'
69
+ Description-Content-Type: text/markdown
70
+
71
+ # Monte-Neo
72
+
73
+ <p align="center">
74
+ <img src="docs/assets/monteneo-logo.png" alt="Monte-Neo logo" width="220"/>
75
+ </p>
76
+
77
+ <p align="center">
78
+ <strong>Fast local research</strong> for trading strategies on Apple Silicon<br/>
79
+ Fee-aware next-bar economics · Monte Carlo · paper OMS<br/>
80
+ MIT · Python 3.11+ · Metal / MLX / Numba
81
+ </p>
82
+
83
+ <p align="center">
84
+ <a href="https://github.com/NeoZorK/Monte-Neo/actions/workflows/ci.yml"><img src="https://github.com/NeoZorK/Monte-Neo/actions/workflows/ci.yml/badge.svg" alt="CI"/></a>
85
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license"/></a>
86
+ <a href="https://github.com/NeoZorK/Monte-Neo/releases/latest"><img src="https://img.shields.io/github/v/release/NeoZorK/Monte-Neo?label=release" alt="Latest release"/></a>
87
+ <img src="https://img.shields.io/badge/python-3.11%2B-blue.svg" alt="Python 3.11+"/>
88
+ <img src="https://img.shields.io/badge/macOS-Apple%20Silicon-black.svg" alt="macOS Apple Silicon"/>
89
+ </p>
90
+
91
+ > Current: **v0.15.1** · [Changelog](docs/project/CHANGELOG.md) · [Docs index](docs/INDEX.md) · [FAQ](docs/guides/FAQ.md)
92
+
93
+ ## What this is (and is not)
94
+
95
+ **Job:** on Apple Silicon macOS, build and verify trading-domain strategies **very quickly**
96
+ with fee-aware next-bar economics you can re-check (export API + golden vectors).
97
+
98
+ **Lanes:** research bar (primary speed path) · Monte Carlo research · paper OMS (validation).
99
+
100
+ **Not a goal:** replace full event-driven production / live-bot platforms. Research sweep
101
+ throughput is not an OMS event-loop claim.
102
+
103
+ ## Why Monte-Neo
104
+
105
+ | Advantage | What you get |
106
+ |-----------|----------------|
107
+ | Local Apple Silicon speed | Metal economics + Numba (MLX optional for signals) |
108
+ | Fee-aware research bar | Next-bar fills, costs (bps), SL/TP/trail, funding, sessions |
109
+ | Honest export API | `export_single` / `export_batch` / `export_sma_sweep` + golden vectors |
110
+ | 16GB-class memory planner | `plan_research_bytes` + **no-hang** Metal size gate → `cpu_numba` fallback |
111
+ | Clear non-goals | macOS research tool first; paper OMS is a separate lane |
112
+ | MIT | Use, fork, and ship without drama |
113
+
114
+ ## Install
115
+
116
+ **From git (today — free):**
117
+
118
+ ```bash
119
+ pip install "git+https://github.com/NeoZorK/Monte-Neo.git"
120
+ # Apple Silicon Metal / MLX:
121
+ pip install "monte-neo[apple] @ git+https://github.com/NeoZorK/Monte-Neo.git"
122
+ ```
123
+
124
+ **In-repo (recommended for contributors):**
125
+
126
+ ```bash
127
+ git clone https://github.com/NeoZorK/Monte-Neo.git
128
+ cd Monte-Neo
129
+ uv sync --extra apple # on Apple Silicon; omit --extra apple on Linux/CI
130
+ ```
131
+
132
+ **PyPI:** packaging is prepared (`[apple]` extras, PEP 440 wheel version). First upload
133
+ waits on TestPyPI + maintainer OK — see [PACKAGING.md](docs/project/PACKAGING.md).
134
+
135
+ **Requirements:** Python **3.11+**. Best experience on **Apple Silicon** macOS. Numba CPU
136
+ paths work more broadly; Metal/MLX are the `[apple]` extra.
137
+
138
+ ## Quick start
139
+
140
+ ```bash
141
+ uv sync
142
+ uv run monte-neo
143
+ uv run pytest tests -n auto
144
+ ```
145
+
146
+ ### Research export (recommended)
147
+
148
+ ```python
149
+ from monte_neo.backtest import (
150
+ ExecutionModel,
151
+ export_sma_sweep,
152
+ synthetic_ohlcv,
153
+ )
154
+
155
+ ohlc = synthetic_ohlcv(100_000, seed=42)
156
+ model = ExecutionModel(commission_bps=5.0, slippage_bps=5.0, warmup_bars=50)
157
+ out = export_sma_sweep(
158
+ ohlc["open"], ohlc["high"], ohlc["low"], ohlc["close"],
159
+ combos=16,
160
+ model=model,
161
+ device="auto", # Metal when safe; else cpu_numba (see fallback_reason)
162
+ )
163
+ print(out["device"], out.get("fallback_reason"), out["combos"])
164
+ ```
165
+
166
+ ### Single bar backtest
167
+
168
+ ```python
169
+ from monte_neo.backtest import (
170
+ ExecutionModel,
171
+ frame_to_ohlc,
172
+ run_bar_backtest,
173
+ sma_signal,
174
+ synthetic_ohlcv,
175
+ )
176
+
177
+ ohlc = frame_to_ohlc(synthetic_ohlcv(5_000, seed=42))
178
+ model = ExecutionModel(
179
+ commission_bps=5.0,
180
+ slippage_bps=5.0,
181
+ size_fraction=0.25,
182
+ sl_pct=1.0,
183
+ tp_pct=2.0,
184
+ )
185
+ sig = sma_signal(ohlc["close"], fast=10, slow=40)
186
+ out = run_bar_backtest(
187
+ ohlc["open"], ohlc["high"], ohlc["low"], ohlc["close"], sig, model=model
188
+ )
189
+ print(out["total_return"], out["metrics"]["max_drawdown"], len(out["trades"]))
190
+ ```
191
+
192
+ More: [docs/guides/quick-start.md](docs/guides/quick-start.md) · [backtest engine](docs/project/backtest_engine.md) · [FAQ](docs/guides/FAQ.md)
193
+
194
+ ## How to use (research workflow)
195
+
196
+ 1. Load or synthesize OHLCV (`synthetic_ohlcv` / your frame → `frame_to_ohlc`).
197
+ 2. Set an `ExecutionModel` (fees, SL/TP, sessions, side mode).
198
+ 3. Sweep with `export_sma_sweep` / `export_batch`, or a single `export_single`.
199
+ 4. Check `device`, `signal_device`, and `fallback_reason` when using `auto`.
200
+ 5. Optional depth: `equity_stride`, journal, `plan_research_bytes` / `memory` on exports.
201
+ 6. Paper OMS (`monte_neo.oms`) only when you need event-lane validation — not for sweep cps claims.
202
+
203
+ **Devices:** `auto` · `metal` · `cpu_numba` (and MLX where signal paths allow). Oversized Metal
204
+ jobs demote to Numba instead of hanging (v0.14.1+).
205
+
206
+ ## Features (honest)
207
+
208
+ | Area | Status |
209
+ |------|--------|
210
+ | MC indicator / robustness workflows | Available via CLI and library |
211
+ | Fee-aware research bar engine | `monte_neo.backtest` |
212
+ | Research export + golden vectors | `export_*` / `verify_golden_vectors` |
213
+ | Memory / no-hang accelerator gate | `plan_research_bytes` / `decide_research_accelerator` |
214
+ | Paper OMS + venue adapters | `monte_neo.oms` |
215
+ | Metal / MLX / Numba device select | Best-effort on Apple Silicon; CPU fallbacks |
216
+ | Docker | Supported for headless/CI-style runs |
217
+
218
+ ## Project structure
219
+
220
+ ```
221
+ Monte-Neo/
222
+ ├── src/monte_neo/
223
+ │ ├── backtest/ # Research bar engine + export
224
+ │ ├── oms/ # Paper OMS + accel
225
+ │ ├── core/ # Generator / Metal bridges
226
+ │ ├── data/ # Market data downloaders
227
+ │ ├── monte_carlo/ # MC methods
228
+ │ ├── metrics/ # Trading metrics
229
+ │ ├── cli/ # Interactive CLI
230
+ │ └── visualization/
231
+ ├── tests/
232
+ ├── docs/
233
+ └── docker/
234
+ ```
235
+
236
+ ## Screenshots / demos
237
+
238
+ <p align="center">
239
+ <img src="docs/assets/demo_sma_sweep.png" alt="SMA sweep demo" width="720"/>
240
+ </p>
241
+ <p align="center">
242
+ <img src="docs/assets/demo_memory_plan.png" alt="Memory plan demo" width="720"/>
243
+ </p>
244
+
245
+ More under `docs/assets/`. Runnable script: [`examples/export_sma_sweep_quickstart.py`](examples/export_sma_sweep_quickstart.py).
246
+
247
+ ## License
248
+
249
+ MIT — see [LICENSE](LICENSE).
250
+
251
+ Public repository: https://github.com/NeoZorK/Monte-Neo