dexbot 1.4.13 → 1.4.15

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 (330) hide show
  1. package/README.md +77 -68
  2. package/claw/data/positions.json +3391 -1
  3. package/claw/docs/AI_BOT_LIBRARY_API.md +1 -1
  4. package/claw/docs/POSITION_HEALTH.md +2 -2
  5. package/claw/modules/claw_catalog.ts +1 -3
  6. package/claw/modules/claw_launcher.ts +2 -3
  7. package/claw/modules/claw_skill_md.ts +1 -1
  8. package/claw/modules/decision_loop.ts +1 -1
  9. package/claw/modules/dexbot_profiles.ts +2 -33
  10. package/claw/modules/feed_price_source.ts +3 -32
  11. package/claw/modules/launcher_mode_detector.ts +1 -1
  12. package/claw/modules/mcp_utils.ts +1 -1
  13. package/claw/modules/mpa_utils.ts +36 -1
  14. package/claw/modules/position_discovery.ts +1 -28
  15. package/claw/modules/position_health.ts +1 -20
  16. package/claw/modules/position_manager.ts +3 -28
  17. package/claw/modules/skill_utils.ts +1 -1
  18. package/claw/modules/types.ts +0 -53
  19. package/claw/package.json +1 -1
  20. package/claw/runtimes/openclaw-plugin/openclaw.plugin.json +1 -1
  21. package/claw/runtimes/openclaw-plugin/package.json +1 -1
  22. package/claw/skills/margin-trading/references/honest-assets.md +1 -1
  23. package/claw/skills/margin-trading/references/position-management.md +2 -2
  24. package/claw/skills/shared/references/js-automation-overview.md +2 -2
  25. package/claw/skills/trend-detection/references/service.md +24 -17
  26. package/claw/tests/test_claw_bridge.ts +47 -47
  27. package/claw/tests/test_claw_catalog_and_credentials.ts +9 -9
  28. package/claw/tests/test_claw_chain_layer.ts +54 -54
  29. package/claw/tests/test_claw_data_flow.ts +41 -41
  30. package/claw/tests/test_claw_domain_logic.ts +26 -26
  31. package/claw/tests/test_claw_manifest_and_matrix.ts +1 -1
  32. package/claw/tests/test_claw_mcp_transport.ts +16 -16
  33. package/claw/tests/test_claw_regressions.ts +43 -43
  34. package/claw/tests/test_claw_skill_generation.ts +1 -1
  35. package/claw/tests/test_claw_state_store.ts +2 -2
  36. package/claw/tests/test_dexbot_profiles.ts +4 -4
  37. package/claw/tests/test_memu_bridge.ts +3 -3
  38. package/claw/tests/test_nullclaw_tmp_integration.ts +1 -1
  39. package/claw/tests/test_position_health.ts +2 -2
  40. package/claw/tests/test_position_manager.ts +18 -18
  41. package/claw/tests/test_position_manager_watch_health.ts +2 -2
  42. package/claw/tests/test_short_mpa_strategy.ts +12 -12
  43. package/dist/analysis/chart_utils.d.ts +13 -1
  44. package/dist/analysis/chart_utils.d.ts.map +1 -1
  45. package/dist/analysis/chart_utils.js +16 -1
  46. package/dist/analysis/chart_utils.js.map +1 -1
  47. package/dist/analysis/math_utils.d.ts +8 -12
  48. package/dist/analysis/math_utils.d.ts.map +1 -1
  49. package/dist/analysis/math_utils.js +9 -75
  50. package/dist/analysis/math_utils.js.map +1 -1
  51. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +4 -4
  52. package/dist/dexbot.d.ts.map +1 -1
  53. package/dist/dexbot.js +54 -35
  54. package/dist/dexbot.js.map +1 -1
  55. package/dist/market_adapter/candle_utils.d.ts +18 -1
  56. package/dist/market_adapter/candle_utils.d.ts.map +1 -1
  57. package/dist/market_adapter/candle_utils.js +50 -1
  58. package/dist/market_adapter/candle_utils.js.map +1 -1
  59. package/dist/market_adapter/core/config_normalizers.js +1 -1
  60. package/dist/market_adapter/core/config_normalizers.js.map +1 -1
  61. package/dist/market_adapter/core/kibana_client.d.ts +2 -2
  62. package/dist/market_adapter/core/kibana_client.js +2 -2
  63. package/dist/market_adapter/core/kibana_market_candles.d.ts +1 -87
  64. package/dist/market_adapter/core/kibana_market_candles.d.ts.map +1 -1
  65. package/dist/market_adapter/core/kibana_market_candles.js +1 -80
  66. package/dist/market_adapter/core/kibana_market_candles.js.map +1 -1
  67. package/dist/market_adapter/core/market_adapter_service.d.ts +0 -8
  68. package/dist/market_adapter/core/market_adapter_service.d.ts.map +1 -1
  69. package/dist/market_adapter/core/market_adapter_service.js +28 -115
  70. package/dist/market_adapter/core/market_adapter_service.js.map +1 -1
  71. package/dist/market_adapter/core/signals/hurst_analyzer.d.ts.map +1 -0
  72. package/dist/{analysis/trend_detection → market_adapter/core/signals}/hurst_analyzer.js +2 -2
  73. package/dist/market_adapter/core/signals/hurst_analyzer.js.map +1 -0
  74. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_trend_analyzer.d.ts +0 -1
  75. package/dist/market_adapter/core/signals/kalman_trend_analyzer.d.ts.map +1 -0
  76. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_trend_analyzer.js +2 -4
  77. package/dist/market_adapter/core/signals/kalman_trend_analyzer.js.map +1 -0
  78. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_velocity_smoothing.d.ts +25 -4
  79. package/dist/market_adapter/core/signals/kalman_velocity_smoothing.d.ts.map +1 -0
  80. package/dist/{analysis/trend_detection → market_adapter/core/signals}/kalman_velocity_smoothing.js +41 -19
  81. package/dist/market_adapter/core/signals/kalman_velocity_smoothing.js.map +1 -0
  82. package/dist/market_adapter/core/signals/permutation_entropy_analyzer.d.ts.map +1 -0
  83. package/dist/{analysis/trend_detection → market_adapter/core/signals}/permutation_entropy_analyzer.js +2 -2
  84. package/dist/market_adapter/core/signals/permutation_entropy_analyzer.js.map +1 -0
  85. package/dist/market_adapter/core/strategies/ama.d.ts +1 -19
  86. package/dist/market_adapter/core/strategies/ama.d.ts.map +1 -1
  87. package/dist/market_adapter/core/strategies/ama.js +1 -1
  88. package/dist/market_adapter/core/strategies/ama.js.map +1 -1
  89. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts +2 -13
  90. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts.map +1 -1
  91. package/dist/market_adapter/core/strategies/ama_slope_model.js +15 -26
  92. package/dist/market_adapter/core/strategies/ama_slope_model.js.map +1 -1
  93. package/dist/market_adapter/core/strategies/atr/calculator.d.ts +38 -3
  94. package/dist/market_adapter/core/strategies/atr/calculator.d.ts.map +1 -1
  95. package/dist/market_adapter/core/strategies/atr/calculator.js +84 -24
  96. package/dist/market_adapter/core/strategies/atr/calculator.js.map +1 -1
  97. package/dist/market_adapter/core/strategies/collateral_manager.d.ts +1 -1
  98. package/dist/market_adapter/core/strategies/collateral_manager.js +1 -1
  99. package/dist/market_adapter/core/strategies/dynamic_weight_series.d.ts +32 -0
  100. package/dist/market_adapter/core/strategies/dynamic_weight_series.d.ts.map +1 -0
  101. package/dist/market_adapter/core/strategies/dynamic_weight_series.js +136 -0
  102. package/dist/market_adapter/core/strategies/dynamic_weight_series.js.map +1 -0
  103. package/dist/market_adapter/core/strategies/regime_gate.d.ts +6 -21
  104. package/dist/market_adapter/core/strategies/regime_gate.d.ts.map +1 -1
  105. package/dist/market_adapter/core/strategies/regime_gate.js +11 -74
  106. package/dist/market_adapter/core/strategies/regime_gate.js.map +1 -1
  107. package/dist/market_adapter/core/strategies/regime_interp.d.ts +13 -0
  108. package/dist/market_adapter/core/strategies/regime_interp.d.ts.map +1 -0
  109. package/dist/market_adapter/core/strategies/regime_interp.js +74 -0
  110. package/dist/market_adapter/core/strategies/regime_interp.js.map +1 -0
  111. package/dist/market_adapter/core/strategies/volatility_shift.d.ts +22 -0
  112. package/dist/market_adapter/core/strategies/volatility_shift.d.ts.map +1 -0
  113. package/dist/market_adapter/core/strategies/volatility_shift.js +37 -0
  114. package/dist/market_adapter/core/strategies/volatility_shift.js.map +1 -0
  115. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +3 -4
  116. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js.map +1 -1
  117. package/dist/market_adapter/inputs/fetch_lp_data.d.ts +1 -10
  118. package/dist/market_adapter/inputs/fetch_lp_data.d.ts.map +1 -1
  119. package/dist/market_adapter/inputs/fetch_lp_data.js +1 -1
  120. package/dist/market_adapter/inputs/fetch_lp_data.js.map +1 -1
  121. package/dist/market_adapter/lp_chart_core.d.ts.map +1 -1
  122. package/dist/market_adapter/lp_chart_core.js +0 -10
  123. package/dist/market_adapter/lp_chart_core.js.map +1 -1
  124. package/dist/market_adapter/lp_chart_runner.d.ts +1 -16
  125. package/dist/market_adapter/lp_chart_runner.d.ts.map +1 -1
  126. package/dist/market_adapter/lp_chart_runner.js +1 -15
  127. package/dist/market_adapter/lp_chart_runner.js.map +1 -1
  128. package/dist/market_adapter/market_adapter.d.ts +3 -3
  129. package/dist/market_adapter/market_adapter.d.ts.map +1 -1
  130. package/dist/market_adapter/market_adapter.js +6 -8
  131. package/dist/market_adapter/market_adapter.js.map +1 -1
  132. package/dist/market_adapter/merge_lp_data.js +5 -5
  133. package/dist/market_adapter/utils/adapter_client.d.ts +1 -3
  134. package/dist/market_adapter/utils/adapter_client.d.ts.map +1 -1
  135. package/dist/market_adapter/utils/adapter_client.js +1 -14
  136. package/dist/market_adapter/utils/adapter_client.js.map +1 -1
  137. package/dist/market_adapter/utils/data_discovery.d.ts.map +1 -1
  138. package/dist/market_adapter/utils/data_discovery.js +1 -2
  139. package/dist/market_adapter/utils/data_discovery.js.map +1 -1
  140. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts +1 -3
  141. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts.map +1 -1
  142. package/dist/market_adapter/utils/dynamic_grid_snapshot.js +1 -1
  143. package/dist/market_adapter/utils/dynamic_grid_snapshot.js.map +1 -1
  144. package/dist/market_adapter/utils/file_lock.d.ts +10 -2
  145. package/dist/market_adapter/utils/file_lock.d.ts.map +1 -1
  146. package/dist/market_adapter/utils/file_lock.js +171 -102
  147. package/dist/market_adapter/utils/file_lock.js.map +1 -1
  148. package/dist/market_adapter/utils/native_history.d.ts +1 -9
  149. package/dist/market_adapter/utils/native_history.d.ts.map +1 -1
  150. package/dist/market_adapter/utils/native_history.js +1 -21
  151. package/dist/market_adapter/utils/native_history.js.map +1 -1
  152. package/dist/modules/account_bots.d.ts +16 -38
  153. package/dist/modules/account_bots.d.ts.map +1 -1
  154. package/dist/modules/account_bots.js +16 -38
  155. package/dist/modules/account_bots.js.map +1 -1
  156. package/dist/modules/account_orders.d.ts +11 -11
  157. package/dist/modules/account_orders.d.ts.map +1 -1
  158. package/dist/modules/account_orders.js +11 -18
  159. package/dist/modules/account_orders.js.map +1 -1
  160. package/dist/modules/bitshares_client.d.ts +5 -8
  161. package/dist/modules/bitshares_client.d.ts.map +1 -1
  162. package/dist/modules/bitshares_client.js +6 -10
  163. package/dist/modules/bitshares_client.js.map +1 -1
  164. package/dist/modules/bots_file_lock.d.ts +8 -5
  165. package/dist/modules/bots_file_lock.d.ts.map +1 -1
  166. package/dist/modules/bots_file_lock.js +8 -5
  167. package/dist/modules/bots_file_lock.js.map +1 -1
  168. package/dist/modules/chain_keys.d.ts +31 -22
  169. package/dist/modules/chain_keys.d.ts.map +1 -1
  170. package/dist/modules/chain_keys.js +31 -22
  171. package/dist/modules/chain_keys.js.map +1 -1
  172. package/dist/modules/chain_orders.d.ts +52 -48
  173. package/dist/modules/chain_orders.d.ts.map +1 -1
  174. package/dist/modules/chain_orders.js +124 -49
  175. package/dist/modules/chain_orders.js.map +1 -1
  176. package/dist/modules/config.d.ts +3 -0
  177. package/dist/modules/config.d.ts.map +1 -1
  178. package/dist/modules/config.js +3 -0
  179. package/dist/modules/config.js.map +1 -1
  180. package/dist/modules/constants.d.ts +17 -13
  181. package/dist/modules/constants.d.ts.map +1 -1
  182. package/dist/modules/constants.js +42 -21
  183. package/dist/modules/constants.js.map +1 -1
  184. package/dist/modules/cr_planner.d.ts +2 -1
  185. package/dist/modules/cr_planner.d.ts.map +1 -1
  186. package/dist/modules/cr_planner.js +1 -1
  187. package/dist/modules/cr_planner.js.map +1 -1
  188. package/dist/modules/credential_policy.d.ts +6 -4
  189. package/dist/modules/credential_policy.d.ts.map +1 -1
  190. package/dist/modules/credential_policy.js +6 -4
  191. package/dist/modules/credential_policy.js.map +1 -1
  192. package/dist/modules/credit_runtime.d.ts.map +1 -1
  193. package/dist/modules/credit_runtime.js +4 -8
  194. package/dist/modules/credit_runtime.js.map +1 -1
  195. package/dist/modules/dexbot_class.d.ts +33 -88
  196. package/dist/modules/dexbot_class.d.ts.map +1 -1
  197. package/dist/modules/dexbot_class.js +36 -68
  198. package/dist/modules/dexbot_class.js.map +1 -1
  199. package/dist/modules/dexbot_cow_runtime.d.ts +7 -7
  200. package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -1
  201. package/dist/modules/dexbot_cow_runtime.js +7 -7
  202. package/dist/modules/dexbot_cow_runtime.js.map +1 -1
  203. package/dist/modules/dexbot_credential_client.d.ts +3 -3
  204. package/dist/modules/dexbot_credential_client.js +3 -3
  205. package/dist/modules/dexbot_credential_client.js.map +1 -1
  206. package/dist/modules/dexbot_fill_runtime.d.ts +1 -7
  207. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
  208. package/dist/modules/dexbot_fill_runtime.js +1 -9
  209. package/dist/modules/dexbot_fill_runtime.js.map +1 -1
  210. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
  211. package/dist/modules/dexbot_maintenance_runtime.js +3 -1
  212. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
  213. package/dist/modules/dexbot_state_recovery.d.ts.map +1 -1
  214. package/dist/modules/dexbot_state_recovery.js +99 -1
  215. package/dist/modules/dexbot_state_recovery.js.map +1 -1
  216. package/dist/modules/graceful_shutdown.d.ts +4 -2
  217. package/dist/modules/graceful_shutdown.d.ts.map +1 -1
  218. package/dist/modules/graceful_shutdown.js +4 -2
  219. package/dist/modules/graceful_shutdown.js.map +1 -1
  220. package/dist/modules/launcher/bot_supervisor.d.ts +1 -1
  221. package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -1
  222. package/dist/modules/launcher/bot_supervisor.js +1 -4
  223. package/dist/modules/launcher/bot_supervisor.js.map +1 -1
  224. package/dist/modules/launcher/child_env.d.ts.map +1 -1
  225. package/dist/modules/launcher/child_env.js +3 -0
  226. package/dist/modules/launcher/child_env.js.map +1 -1
  227. package/dist/modules/market_adapter_whitelist.d.ts +1 -2
  228. package/dist/modules/market_adapter_whitelist.d.ts.map +1 -1
  229. package/dist/modules/market_adapter_whitelist.js +1 -4
  230. package/dist/modules/market_adapter_whitelist.js.map +1 -1
  231. package/dist/modules/node_health_cache.d.ts +12 -4
  232. package/dist/modules/node_health_cache.d.ts.map +1 -1
  233. package/dist/modules/node_health_cache.js +13 -13
  234. package/dist/modules/node_health_cache.js.map +1 -1
  235. package/dist/modules/node_manager.d.ts.map +1 -1
  236. package/dist/modules/node_manager.js +3 -6
  237. package/dist/modules/node_manager.js.map +1 -1
  238. package/dist/modules/order/accounting.d.ts +2 -37
  239. package/dist/modules/order/accounting.d.ts.map +1 -1
  240. package/dist/modules/order/accounting.js +2 -64
  241. package/dist/modules/order/accounting.js.map +1 -1
  242. package/dist/modules/order/export.d.ts +1 -37
  243. package/dist/modules/order/export.d.ts.map +1 -1
  244. package/dist/modules/order/export.js +1 -1
  245. package/dist/modules/order/export.js.map +1 -1
  246. package/dist/modules/order/format.d.ts +28 -14
  247. package/dist/modules/order/format.d.ts.map +1 -1
  248. package/dist/modules/order/format.js +73 -18
  249. package/dist/modules/order/format.js.map +1 -1
  250. package/dist/modules/order/grid.d.ts +11 -5
  251. package/dist/modules/order/grid.d.ts.map +1 -1
  252. package/dist/modules/order/grid.js +79 -37
  253. package/dist/modules/order/grid.js.map +1 -1
  254. package/dist/modules/order/grid_reconcile_internal.js +2 -2
  255. package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
  256. package/dist/modules/order/logger_state.d.ts +3 -45
  257. package/dist/modules/order/logger_state.d.ts.map +1 -1
  258. package/dist/modules/order/logger_state.js +3 -55
  259. package/dist/modules/order/logger_state.js.map +1 -1
  260. package/dist/modules/order/manager.d.ts +0 -4
  261. package/dist/modules/order/manager.d.ts.map +1 -1
  262. package/dist/modules/order/manager.js +3 -9
  263. package/dist/modules/order/manager.js.map +1 -1
  264. package/dist/modules/order/sync_engine.d.ts +0 -2
  265. package/dist/modules/order/sync_engine.d.ts.map +1 -1
  266. package/dist/modules/order/sync_engine.js +1 -4
  267. package/dist/modules/order/sync_engine.js.map +1 -1
  268. package/dist/modules/order/utils/math.d.ts +2 -11
  269. package/dist/modules/order/utils/math.d.ts.map +1 -1
  270. package/dist/modules/order/utils/math.js +3 -14
  271. package/dist/modules/order/utils/math.js.map +1 -1
  272. package/dist/modules/order/utils/order.d.ts +1 -17
  273. package/dist/modules/order/utils/order.d.ts.map +1 -1
  274. package/dist/modules/order/utils/order.js +3 -21
  275. package/dist/modules/order/utils/order.js.map +1 -1
  276. package/dist/modules/order/utils/system.d.ts +1 -11
  277. package/dist/modules/order/utils/system.d.ts.map +1 -1
  278. package/dist/modules/order/utils/system.js +3 -3
  279. package/dist/modules/order/utils/system.js.map +1 -1
  280. package/dist/modules/order/utils/validate.d.ts +1 -26
  281. package/dist/modules/order/utils/validate.d.ts.map +1 -1
  282. package/dist/modules/order/utils/validate.js +1 -1
  283. package/dist/modules/order/utils/validate.js.map +1 -1
  284. package/dist/modules/order/working_grid.d.ts +3 -9
  285. package/dist/modules/order/working_grid.d.ts.map +1 -1
  286. package/dist/modules/order/working_grid.js +3 -11
  287. package/dist/modules/order/working_grid.js.map +1 -1
  288. package/dist/modules/paths.d.ts +43 -2
  289. package/dist/modules/paths.d.ts.map +1 -1
  290. package/dist/modules/paths.js +81 -21
  291. package/dist/modules/paths.js.map +1 -1
  292. package/dist/modules/runtime_settings.js +1 -1
  293. package/dist/modules/runtime_settings.js.map +1 -1
  294. package/dist/pm2.d.ts +1 -1
  295. package/dist/pm2.d.ts.map +1 -1
  296. package/dist/pm2.js +1 -4
  297. package/dist/pm2.js.map +1 -1
  298. package/dist/scripts/analyze-orders.d.ts.map +1 -1
  299. package/dist/scripts/analyze-orders.js +36 -45
  300. package/dist/scripts/analyze-orders.js.map +1 -1
  301. package/dist/scripts/sync-version.js +22 -0
  302. package/dist/scripts/sync-version.js.map +1 -1
  303. package/ecosystem.config.cjs +32 -0
  304. package/package.json +4 -1
  305. package/scripts/README.md +24 -8
  306. package/scripts/clear-all.sh +39 -12
  307. package/scripts/clear-logs.sh +1 -1
  308. package/scripts/clear-market-adapter.sh +3 -3
  309. package/scripts/clear-orders.sh +1 -1
  310. package/scripts/create-bot-symlinks.sh +4 -2
  311. package/scripts/lib/dexbot-paths.sh +63 -0
  312. package/scripts/reset-settings.sh +1 -1
  313. package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +0 -1
  314. package/dist/analysis/trend_detection/hurst_analyzer.js.map +0 -1
  315. package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts.map +0 -1
  316. package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +0 -1
  317. package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts.map +0 -1
  318. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +0 -1
  319. package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts.map +0 -1
  320. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +0 -1
  321. package/dist/market_adapter/index.d.ts +0 -32
  322. package/dist/market_adapter/index.d.ts.map +0 -1
  323. package/dist/market_adapter/index.js +0 -39
  324. package/dist/market_adapter/index.js.map +0 -1
  325. package/dist/scripts/fix-err-message.d.ts +0 -3
  326. package/dist/scripts/fix-err-message.d.ts.map +0 -1
  327. package/dist/scripts/fix-err-message.js +0 -193
  328. package/dist/scripts/fix-err-message.js.map +0 -1
  329. /package/dist/{analysis/trend_detection → market_adapter/core/signals}/hurst_analyzer.d.ts +0 -0
  330. /package/dist/{analysis/trend_detection → market_adapter/core/signals}/permutation_entropy_analyzer.d.ts +0 -0
@@ -0,0 +1,136 @@
1
+ 'use strict';
2
+ /**
3
+ * Dynamic weight per-bar series — canonical implementation shared by the live
4
+ * market adapter service, the research test harness, and the browser-embedded
5
+ * dynamic-weight chart script.
6
+ *
7
+ * Computes the per-bar AMA/Kalman offset channels, the alpha-blended combined
8
+ * series, the pre-gain dead-band gate, the final gain/clamp, and the signal
9
+ * confirmation latch — the exact shape both the live `_computeDynamicWeights`
10
+ * and the interactive research chart render.
11
+ *
12
+ * This module is intentionally fully self-contained (no imports): the chart
13
+ * generator embeds its exact source into generated HTML via fn.toString(), so
14
+ * every consumer runs one logic path. The pure helper computeAverageAmaSlopePct
15
+ * is re-exported by strategies/ama_slope_model.ts so Node callers keep their
16
+ * existing import path.
17
+ */
18
+ function computeAverageAmaSlopePct(current, past, lookbackBars) {
19
+ const safeLookbackBars = Number.isFinite(lookbackBars) && lookbackBars > 0
20
+ ? Math.ceil(lookbackBars)
21
+ : 1;
22
+ if (!Number.isFinite(current) || !Number.isFinite(past) || past === 0) {
23
+ return null;
24
+ }
25
+ return ((current - past) / past * 100) / safeLookbackBars;
26
+ }
27
+ function echoLatchSeries(appliedSeries, preGainSeries, confirmBars) {
28
+ const n = Array.isArray(appliedSeries) ? appliedSeries.length : 0;
29
+ const echoedAppliedSeries = new Array(n).fill(0);
30
+ const echoedPreGainSeries = new Array(n).fill(0);
31
+ const safeConfirmBars = Math.max(0, Math.min(5, Math.round(confirmBars)));
32
+ if (safeConfirmBars === 0) {
33
+ for (let i = 0; i < n; i++) {
34
+ echoedAppliedSeries[i] = appliedSeries[i];
35
+ echoedPreGainSeries[i] = preGainSeries?.[i];
36
+ }
37
+ return { echoedAppliedSeries, echoedPreGainSeries };
38
+ }
39
+ let latchedSign = 0;
40
+ let pendingSign = 0;
41
+ let pendingCount = 0;
42
+ let latchedOff = 0;
43
+ let latchedGatedOff = 0;
44
+ for (let i = 0; i < n; i++) {
45
+ const raw = appliedSeries[i];
46
+ const sign = raw > 0 ? 1 : raw < 0 ? -1 : 0;
47
+ if (sign === latchedSign) {
48
+ pendingSign = 0;
49
+ pendingCount = 0;
50
+ latchedOff = raw;
51
+ latchedGatedOff = preGainSeries?.[i];
52
+ }
53
+ else {
54
+ if (pendingSign !== sign) {
55
+ pendingSign = sign;
56
+ pendingCount = 1;
57
+ }
58
+ else {
59
+ pendingCount++;
60
+ }
61
+ if (pendingCount >= safeConfirmBars) {
62
+ latchedSign = sign;
63
+ pendingSign = 0;
64
+ pendingCount = 0;
65
+ latchedOff = raw;
66
+ latchedGatedOff = preGainSeries?.[i];
67
+ }
68
+ }
69
+ echoedAppliedSeries[i] = latchedOff;
70
+ echoedPreGainSeries[i] = latchedGatedOff;
71
+ }
72
+ return { echoedAppliedSeries, echoedPreGainSeries };
73
+ }
74
+ function roundToN(value, factor) {
75
+ if (!Number.isFinite(value))
76
+ return NaN;
77
+ return Math.round(value * factor) / factor;
78
+ }
79
+ function computeDynamicWeightSeries(inputs) {
80
+ const { amaValues, kalmanVelocityPct, kalmanDisplacementPct, kalmanIsReady, regimeMultipliers, lookbackBars, amaErPeriod, amaClipThreshold, kalClipThreshold, neutralZonePct, amaMaxSlopePct, kalmanMaxSlopePct, offsetClamp, dispScaleMinPct, alpha, dw, gain, minOutputThreshold, signalConfirmBars, clampFinalOutput = true, } = inputs;
81
+ const n = Array.isArray(amaValues) ? amaValues.length : 0;
82
+ const channelNorm = Math.max(Math.abs(offsetClamp), 1e-9);
83
+ const amaReadyBar = lookbackBars + Math.max(0, Math.ceil(amaErPeriod));
84
+ const amaOffsets = new Array(n).fill(0);
85
+ const kalmanOffsets = new Array(n).fill(0);
86
+ for (let i = 0; i < n; i++) {
87
+ if (i < amaReadyBar)
88
+ continue;
89
+ const last = amaValues[i];
90
+ const past = amaValues[i - lookbackBars];
91
+ const sp = computeAverageAmaSlopePct(last, past, lookbackBars);
92
+ if (sp == null)
93
+ continue;
94
+ const csp = Math.max(-amaClipThreshold, Math.min(amaClipThreshold, sp));
95
+ if (Math.abs(csp) < neutralZonePct)
96
+ continue;
97
+ amaOffsets[i] = Math.max(-offsetClamp, Math.min(offsetClamp, (csp / amaMaxSlopePct) * offsetClamp));
98
+ }
99
+ for (let i = 0; i < n; i++) {
100
+ const vp = kalmanVelocityPct?.[i];
101
+ const dp = kalmanDisplacementPct?.[i];
102
+ if (!kalmanIsReady?.[i] || vp == null || dp == null)
103
+ continue;
104
+ const clippedV = Math.max(-kalClipThreshold, Math.min(kalClipThreshold, vp));
105
+ if (Math.abs(clippedV) < neutralZonePct)
106
+ continue;
107
+ const dispScale = Math.max(1e-6, dispScaleMinPct);
108
+ const dispConf = Math.min(Math.abs(dp) / dispScale, 1.0);
109
+ const momAlign = Math.max(0, (clippedV * dp) / (Math.abs(clippedV) * Math.abs(dp) + 1e-10));
110
+ const composite = clippedV * (1 - dw + dw * dispConf * momAlign);
111
+ kalmanOffsets[i] = Math.max(-offsetClamp, Math.min(offsetClamp, (composite / kalmanMaxSlopePct) * offsetClamp));
112
+ }
113
+ const combinedOffSeries = new Array(n).fill(0);
114
+ const gatedOffSeries = new Array(n).fill(0);
115
+ for (let i = 0; i < n; i++) {
116
+ const blendedOff = (alpha * (amaOffsets[i] / channelNorm) + (1 - alpha) * (kalmanOffsets[i] / channelNorm));
117
+ const regimeAdjusted = blendedOff * (regimeMultipliers?.[i] ?? 1.0);
118
+ const gatedOff = Math.abs(regimeAdjusted) < minOutputThreshold ? 0 : regimeAdjusted;
119
+ const applied = clampFinalOutput
120
+ ? Math.max(-offsetClamp, Math.min(offsetClamp, gatedOff * gain))
121
+ : (gatedOff * gain);
122
+ gatedOffSeries[i] = gatedOff;
123
+ combinedOffSeries[i] = roundToN(applied, 1000);
124
+ }
125
+ const latched = echoLatchSeries(combinedOffSeries, gatedOffSeries, signalConfirmBars);
126
+ return {
127
+ amaOffsets,
128
+ kalmanOffsets,
129
+ combinedOffSeries,
130
+ gatedOffSeries,
131
+ echoedOffSeries: latched.echoedAppliedSeries,
132
+ echoedGatedOffSeries: latched.echoedPreGainSeries,
133
+ };
134
+ }
135
+ export { computeDynamicWeightSeries, computeAverageAmaSlopePct, echoLatchSeries, roundToN };
136
+ //# sourceMappingURL=dynamic_weight_series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic_weight_series.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/dynamic_weight_series.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,11 @@
1
- declare function resolveHNodes(hurstZoneBand?: null): number[];
2
- declare function resolvePeNodes(peNodes?: any): any[];
3
- declare function classifyHurstRegime(h: any, hurstZoneBand?: any): "TRENDING" | "MEAN_REVERTING" | "RANDOM";
4
- declare function classifyPeRegime(pe: any, peNodes?: any): "STRUCTURED" | "NOISE" | "MIXED";
5
- /**
6
- * Bilinear interpolation over the 3×3 regime table.
7
- *
8
- * For a given (h, pe), find the enclosing cell in the node grid, compute the
9
- * fractional position within that cell, and blend the four corner values.
10
- * Inputs outside the node range are clamped to the table boundary.
11
- *
12
- * @param {number} h - Hurst exponent [0, 1]
13
- * @param {number} pe - Normalized permutation entropy [0, 1]
14
- * @param {Array} [regimeTable] - Optional override for regime table
15
- * @param {Object} [opts] - Optional threshold overrides for interpolation
16
- * @param {number} [opts.hurstZoneBand] – Override Hurst neutral-zone width
17
- * @param {Array} [opts.peNodes] – Override entropy thresholds
18
- * @returns {number} - Interpolated multiplier
19
- */
20
- declare function bilinearInterpolate(h: any, pe: any, regimeTable?: any, opts?: any): number;
1
+ import { bilinearInterpolate } from './regime_interp.js';
21
2
  /**
22
3
  * Compute the Hurst+PE regime multiplier from a price series.
23
4
  *
5
+ * Bilinear interpolation over the 3×3 regime table is delegated to the
6
+ * canonical pure implementation in strategies/regime_interp.ts (shared with the
7
+ * browser-embedded chart scripts).
8
+ *
24
9
  * Feeds all prices through HurstAnalyzer and PermutationEntropyAnalyzer,
25
10
  * then bilinear-interpolates the regime table to produce a multiplier that
26
11
  * gates the AMA slope offset in production weight computation.
@@ -54,5 +39,5 @@ declare function computeRegimeMultiplier(closes: any, opts?: any): {
54
39
  isReady: boolean;
55
40
  series: number[];
56
41
  };
57
- export { computeRegimeMultiplier, bilinearInterpolate, classifyHurstRegime, classifyPeRegime, resolveHNodes, resolvePeNodes };
42
+ export { computeRegimeMultiplier, bilinearInterpolate };
58
43
  //# sourceMappingURL=regime_gate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"regime_gate.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/regime_gate.ts"],"names":[],"mappings":"AAUA,iBAAS,aAAa,CAAC,aAAa,OAAO,YAG1C;AAED,iBAAS,cAAc,CAAC,OAAO,GAAE,GAAU,SAK1C;AAED,iBAAS,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,GAAE,GAAU,4CAK7D;AAED,iBAAS,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,GAAE,GAAU,oCAKrD;AAED;;;;;;;;;;;;;;GAcG;AACH,iBAAS,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,GAAE,GAAU,EAAE,IAAI,GAAE,GAAQ,UAyCpF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,GAAE,GAAQ;;;;;;;;;;;;;;;;EAgE3D;AAED,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"regime_gate.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/regime_gate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAgCzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAS,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,GAAE,GAAQ;;;;;;;;;;;;;;;;EAgE3D;AAED,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,CAAA"}
@@ -1,7 +1,8 @@
1
- import { HurstAnalyzer } from '../../../analysis/trend_detection/hurst_analyzer.js';
2
- import { PermutationEntropyAnalyzer } from '../../../analysis/trend_detection/permutation_entropy_analyzer.js';
1
+ import { HurstAnalyzer } from '../signals/hurst_analyzer.js';
2
+ import { PermutationEntropyAnalyzer } from '../signals/permutation_entropy_analyzer.js';
3
3
  import { MARKET_ADAPTER } from '../../../modules/constants.js';
4
4
  import { roundTo } from '../../../modules/utils/math_utils.js';
5
+ import { bilinearInterpolate } from './regime_interp.js';
5
6
  'use strict';
6
7
  const HURST_CONFIG = MARKET_ADAPTER.HURST_CONFIG;
7
8
  const PE_CONFIG = MARKET_ADAPTER.PE_CONFIG;
@@ -31,77 +32,13 @@ function classifyPeRegime(pe, peNodes = null) {
31
32
  return 'NOISE';
32
33
  return 'MIXED';
33
34
  }
34
- /**
35
- * Bilinear interpolation over the 3×3 regime table.
36
- *
37
- * For a given (h, pe), find the enclosing cell in the node grid, compute the
38
- * fractional position within that cell, and blend the four corner values.
39
- * Inputs outside the node range are clamped to the table boundary.
40
- *
41
- * @param {number} h - Hurst exponent [0, 1]
42
- * @param {number} pe - Normalized permutation entropy [0, 1]
43
- * @param {Array} [regimeTable] - Optional override for regime table
44
- * @param {Object} [opts] - Optional threshold overrides for interpolation
45
- * @param {number} [opts.hurstZoneBand] – Override Hurst neutral-zone width
46
- * @param {Array} [opts.peNodes] – Override entropy thresholds
47
- * @returns {number} - Interpolated multiplier
48
- */
49
- function bilinearInterpolate(h, pe, regimeTable = null, opts = {}) {
50
- const table = regimeTable ?? MARKET_ADAPTER.REGIME_TABLE;
51
- const H_NODES = resolveHNodes(opts.hurstZoneBand);
52
- const PE_NODES = resolvePeNodes(opts.peNodes);
53
- // --- Hurst axis (H_NODES derived from HURST_ZONE_BAND, decreasing) ---
54
- // Find which interval h falls in: row r0, r1 = r0+1, fraction tRow toward r1
55
- let r0, tRow;
56
- if (h >= H_NODES[0]) {
57
- r0 = 0;
58
- tRow = 0; // at or above top node
59
- }
60
- else if (h <= H_NODES[2]) {
61
- r0 = 1;
62
- tRow = 1; // at or below bottom node
63
- }
64
- else if (h >= H_NODES[1]) {
65
- r0 = 0;
66
- tRow = (H_NODES[0] - h) / (H_NODES[0] - H_NODES[1]); // between nodes 0 and 1
67
- }
68
- else {
69
- r0 = 1;
70
- tRow = (H_NODES[1] - h) / (H_NODES[1] - H_NODES[2]); // between nodes 1 and 2
71
- }
72
- const r1 = Math.min(2, r0 + 1);
73
- // --- PE axis (PE_NODES from constants, increasing) ---
74
- // Find which interval pe falls in: col c0, c1 = c0+1, fraction tCol toward c1
75
- let c0, tCol;
76
- if (pe <= PE_NODES[0]) {
77
- c0 = 0;
78
- tCol = 0;
79
- }
80
- else if (pe >= PE_NODES[2]) {
81
- c0 = 1;
82
- tCol = 1;
83
- }
84
- else if (pe <= PE_NODES[1]) {
85
- c0 = 0;
86
- tCol = (pe - PE_NODES[0]) / (PE_NODES[1] - PE_NODES[0]);
87
- }
88
- else {
89
- c0 = 1;
90
- tCol = (pe - PE_NODES[1]) / (PE_NODES[2] - PE_NODES[1]);
91
- }
92
- const c1 = Math.min(2, c0 + 1);
93
- // --- Bilinear blend ---
94
- const v00 = table[r0][c0];
95
- const v01 = table[r0][c1];
96
- const v10 = table[r1][c0];
97
- const v11 = table[r1][c1];
98
- const top = v00 * (1 - tCol) + v01 * tCol;
99
- const bottom = v10 * (1 - tCol) + v11 * tCol;
100
- return top * (1 - tRow) + bottom * tRow;
101
- }
102
35
  /**
103
36
  * Compute the Hurst+PE regime multiplier from a price series.
104
37
  *
38
+ * Bilinear interpolation over the 3×3 regime table is delegated to the
39
+ * canonical pure implementation in strategies/regime_interp.ts (shared with the
40
+ * browser-embedded chart scripts).
41
+ *
105
42
  * Feeds all prices through HurstAnalyzer and PermutationEntropyAnalyzer,
106
43
  * then bilinear-interpolates the regime table to produce a multiplier that
107
44
  * gates the AMA slope offset in production weight computation.
@@ -120,9 +57,9 @@ function bilinearInterpolate(h, pe, regimeTable = null, opts = {}) {
120
57
  */
121
58
  function computeRegimeMultiplier(closes, opts = {}) {
122
59
  const sensitivity = Number.isFinite(opts.regimeSensitivity) ? opts.regimeSensitivity : 1.0;
123
- const regimeTable = opts.regimeTable ?? null;
124
- const hurstZoneBand = Number.isFinite(opts.hurstZoneBand) ? opts.hurstZoneBand : null;
125
- const peNodes = Array.isArray(opts.peNodes) ? opts.peNodes : null;
60
+ const regimeTable = opts.regimeTable ?? MARKET_ADAPTER.REGIME_TABLE;
61
+ const hurstZoneBand = Number.isFinite(opts.hurstZoneBand) ? opts.hurstZoneBand : MARKET_ADAPTER.HURST_ZONE_BAND;
62
+ const peNodes = Array.isArray(opts.peNodes) ? opts.peNodes : MARKET_ADAPTER.PE_NODES;
126
63
  const hurstCfg = opts.hurstConfig ?? HURST_CONFIG;
127
64
  const peCfg = opts.peConfig ?? PE_CONFIG;
128
65
  const notReady = {
@@ -178,5 +115,5 @@ function computeRegimeMultiplier(closes, opts = {}) {
178
115
  series: series.map((value) => roundTo(value, 1000)),
179
116
  };
180
117
  }
181
- export { computeRegimeMultiplier, bilinearInterpolate, classifyHurstRegime, classifyPeRegime, resolveHNodes, resolvePeNodes };
118
+ export { computeRegimeMultiplier, bilinearInterpolate };
182
119
  //# sourceMappingURL=regime_gate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"regime_gate.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/regime_gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regime_gate.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/regime_gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Regime bilinear interpolation — canonical implementation shared by the live
3
+ * regime gate (regime_gate.ts) and the browser-embedded dynamic-weight chart
4
+ * script (injected via fn.toString()).
5
+ *
6
+ * Self-contained on purpose so the chart generator can inject this exact source
7
+ * into generated HTML — do not add imports referenced from the function body.
8
+ * Node-side defaults below mirror MARKET_ADAPTER.REGIME_TABLE /
9
+ * HURST_ZONE_BAND / PE_NODES; callers may pass explicit hNodes/pNodes/table.
10
+ */
11
+ declare function bilinearInterpolate(h: any, pe: any, regimeTable?: any, opts?: any): number;
12
+ export { bilinearInterpolate };
13
+ //# sourceMappingURL=regime_interp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regime_interp.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/regime_interp.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,iBAAS,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,GAAE,GAAU,EAAE,IAAI,GAAE,GAAQ,UAkDpF;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+ /**
3
+ * Regime bilinear interpolation — canonical implementation shared by the live
4
+ * regime gate (regime_gate.ts) and the browser-embedded dynamic-weight chart
5
+ * script (injected via fn.toString()).
6
+ *
7
+ * Self-contained on purpose so the chart generator can inject this exact source
8
+ * into generated HTML — do not add imports referenced from the function body.
9
+ * Node-side defaults below mirror MARKET_ADAPTER.REGIME_TABLE /
10
+ * HURST_ZONE_BAND / PE_NODES; callers may pass explicit hNodes/pNodes/table.
11
+ */
12
+ function bilinearInterpolate(h, pe, regimeTable = null, opts = {}) {
13
+ const table = regimeTable ?? [
14
+ [1.0, 0.7, 0.3],
15
+ [0.6, 0.4, 0.15],
16
+ [0.3, 0.2, 0.05],
17
+ ];
18
+ const band = Number.isFinite(opts.hurstZoneBand) ? opts.hurstZoneBand : 0.05;
19
+ const H_NODES = (Array.isArray(opts.hNodes) && opts.hNodes.length === 3 && opts.hNodes.every(Number.isFinite))
20
+ ? opts.hNodes
21
+ : [0.5 + band, 0.5, 0.5 - band];
22
+ const PE_NODES = (Array.isArray(opts.peNodes) && opts.peNodes.length === 3 && opts.peNodes.every(Number.isFinite))
23
+ ? opts.peNodes
24
+ : [0.60, 0.725, 0.85];
25
+ // --- Hurst axis (H_NODES decreasing) ---
26
+ // Find which interval h falls in: row r0, r1 = r0+1, fraction tRow toward r1
27
+ let r0, tRow;
28
+ if (h >= H_NODES[0]) {
29
+ r0 = 0;
30
+ tRow = 0; // at or above top node
31
+ }
32
+ else if (h <= H_NODES[2]) {
33
+ r0 = 1;
34
+ tRow = 1; // at or below bottom node
35
+ }
36
+ else if (h >= H_NODES[1]) {
37
+ r0 = 0;
38
+ tRow = (H_NODES[0] - h) / (H_NODES[0] - H_NODES[1]); // between nodes 0 and 1
39
+ }
40
+ else {
41
+ r0 = 1;
42
+ tRow = (H_NODES[1] - h) / (H_NODES[1] - H_NODES[2]); // between nodes 1 and 2
43
+ }
44
+ const r1 = Math.min(2, r0 + 1);
45
+ // --- PE axis (PE_NODES increasing) ---
46
+ let c0, tCol;
47
+ if (pe <= PE_NODES[0]) {
48
+ c0 = 0;
49
+ tCol = 0;
50
+ }
51
+ else if (pe >= PE_NODES[2]) {
52
+ c0 = 1;
53
+ tCol = 1;
54
+ }
55
+ else if (pe <= PE_NODES[1]) {
56
+ c0 = 0;
57
+ tCol = (pe - PE_NODES[0]) / (PE_NODES[1] - PE_NODES[0]);
58
+ }
59
+ else {
60
+ c0 = 1;
61
+ tCol = (pe - PE_NODES[1]) / (PE_NODES[2] - PE_NODES[1]);
62
+ }
63
+ const c1 = Math.min(2, c0 + 1);
64
+ // --- Bilinear blend ---
65
+ const v00 = table[r0][c0];
66
+ const v01 = table[r0][c1];
67
+ const v10 = table[r1][c0];
68
+ const v11 = table[r1][c1];
69
+ const top = v00 * (1 - tCol) + v01 * tCol;
70
+ const bottom = v10 * (1 - tCol) + v11 * tCol;
71
+ return top * (1 - tRow) + bottom * tRow;
72
+ }
73
+ export { bilinearInterpolate };
74
+ //# sourceMappingURL=regime_interp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regime_interp.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/regime_interp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Symmetric volatility shift — canonical implementation shared by the AMA slope
3
+ * model, the volatility research tool, and the browser-embedded chart scripts.
4
+ *
5
+ * Signal path (mirrors the live adapter):
6
+ * rawDelta = -weightVariance^exponent * scaleX
7
+ * clampedRawDelta = clamp(rawDelta, -clampValue, 0)
8
+ * symmetricDelta = |clampedRawDelta| < threshold ? 0 : clampedRawDelta
9
+ * effectiveWeight = clamp(baselineWeight + symmetricDelta, minWeight, maxWeight)
10
+ *
11
+ * Self-contained on purpose so the chart generators can inject this exact source
12
+ * into generated HTML — do not add imports referenced from the function body.
13
+ */
14
+ declare function computeVolatilityShift(weightVariance: any, opts?: any): {
15
+ rawSymmetricDelta: number;
16
+ symmetricDelta: number;
17
+ effectiveWeight: number;
18
+ sellW: number;
19
+ buyW: number;
20
+ };
21
+ export { computeVolatilityShift };
22
+ //# sourceMappingURL=volatility_shift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volatility_shift.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/volatility_shift.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,iBAAS,sBAAsB,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,GAAE,GAAQ;;;;;;EA+BlE;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+ /**
3
+ * Symmetric volatility shift — canonical implementation shared by the AMA slope
4
+ * model, the volatility research tool, and the browser-embedded chart scripts.
5
+ *
6
+ * Signal path (mirrors the live adapter):
7
+ * rawDelta = -weightVariance^exponent * scaleX
8
+ * clampedRawDelta = clamp(rawDelta, -clampValue, 0)
9
+ * symmetricDelta = |clampedRawDelta| < threshold ? 0 : clampedRawDelta
10
+ * effectiveWeight = clamp(baselineWeight + symmetricDelta, minWeight, maxWeight)
11
+ *
12
+ * Self-contained on purpose so the chart generators can inject this exact source
13
+ * into generated HTML — do not add imports referenced from the function body.
14
+ */
15
+ function computeVolatilityShift(weightVariance, opts = {}) {
16
+ const { exponent = 1.0, scaleX = 10.0, threshold = 0.1, clampValue = 0.5, minWeight = -1, maxWeight = 2, baselineWeight = 0.5, } = opts;
17
+ const safeVariance = Number.isFinite(weightVariance) && weightVariance > 0 ? weightVariance : 0;
18
+ const safeExponent = Number.isFinite(exponent) && exponent >= 0 ? exponent : 1.0;
19
+ const safeScaleX = Number.isFinite(scaleX) && scaleX >= 0 ? scaleX : 10.0;
20
+ const safeThreshold = Number.isFinite(threshold) && threshold >= 0 ? threshold : 0.1;
21
+ const safeClamp = Number.isFinite(clampValue) && clampValue >= 0 ? clampValue : 0.5;
22
+ const effectiveExponent = Math.max(0.5, Math.min(1.0, safeExponent));
23
+ const effectiveScaleX = Math.max(1.0, Math.min(100.0, safeScaleX));
24
+ const rawDelta = -Math.pow(safeVariance, effectiveExponent) * effectiveScaleX;
25
+ const clampedRawDelta = Math.max(safeClamp * -1, Math.min(0, rawDelta));
26
+ const symmetricDelta = Math.abs(clampedRawDelta) < safeThreshold ? 0 : clampedRawDelta;
27
+ const effectiveWeight = Math.max(minWeight, Math.min(maxWeight, baselineWeight + symmetricDelta));
28
+ return {
29
+ rawSymmetricDelta: clampedRawDelta,
30
+ symmetricDelta,
31
+ effectiveWeight,
32
+ sellW: effectiveWeight,
33
+ buyW: effectiveWeight,
34
+ };
35
+ }
36
+ export { computeVolatilityShift };
37
+ //# sourceMappingURL=volatility_shift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volatility_shift.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/volatility_shift.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;GAYG;AAEH,SAAS,sBAAsB,CAAC,cAAmB,EAAE,OAAY,EAAE;IAC/D,MAAM,EACF,QAAQ,GAAG,GAAG,EACd,MAAM,GAAG,IAAI,EACb,SAAS,GAAG,GAAG,EACf,UAAU,GAAG,GAAG,EAChB,SAAS,GAAG,CAAC,CAAC,EACd,SAAS,GAAG,CAAC,EACb,cAAc,GAAG,GAAG,GACvB,GAAG,IAAI,CAAC;IAET,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IACrF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IACpF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,GAAG,eAAe,CAAC;IAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IACvF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;IAElG,OAAO;QACH,iBAAiB,EAAE,eAAe;QAClC,cAAc;QACd,eAAe;QACf,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,eAAe;KACxB,CAAC;AACN,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -3,8 +3,8 @@ import { createRequire } from 'node:module';
3
3
  const require = createRequire(import.meta.url);
4
4
  'use strict';
5
5
  /**
6
- * Probe public CEX APIs for XRP/USDT and XAUT/USDT, then synthesize XRP/XAUT
7
- * candles from the two USDT legs.
6
+ * Probe public CEX APIs for a base/quote cross and synthesize candles from
7
+ * the two legs against a common quote (e.g. XRP/USDT + XAUT/USDT).
8
8
  *
9
9
  * This is intended as a seed generator for brand-new market_adapter files.
10
10
  * It does not rely on TradingView or Kibana.
@@ -21,7 +21,7 @@ const PROJECT_ROOT = PATHS.PROJECT_ROOT;
21
21
  const { MARKET_ADAPTER } = require('../../modules/constants');
22
22
  const { getAmaWarmupBars } = require('../core/strategies/ama');
23
23
  const { getErrorMessage } = require('../../modules/utils/errors');
24
- const { DEFAULTS: MARKET_ADAPTER_DEFAULTS, resolveAmaForBot, resolveBotCfg, } = require('../market_adapter');
24
+ const { DEFAULTS: MARKET_ADAPTER_DEFAULTS, resolveAmaForBot, resolveBotCfg, } = require('../market_adapter/market_adapter');
25
25
  const DEFAULT_INTERVAL = '1h';
26
26
  const DEFAULT_LIMIT = 1000;
27
27
  const DEFAULT_BASE = 'XRP';
@@ -693,7 +693,6 @@ function parseArgs() {
693
693
  limit: DEFAULT_LIMIT,
694
694
  lookbackHours: null,
695
695
  botName: null,
696
- botIndex: null,
697
696
  botsFile: DEFAULT_BOTS_FILE,
698
697
  base: DEFAULT_BASE,
699
698
  quote: DEFAULT_QUOTE,