dexbot 1.4.13 → 1.4.14

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 (312) hide show
  1. package/README.md +58 -34
  2. package/claw/data/positions.json +2487 -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 +37 -34
  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/constants.d.ts +17 -13
  177. package/dist/modules/constants.d.ts.map +1 -1
  178. package/dist/modules/constants.js +42 -21
  179. package/dist/modules/constants.js.map +1 -1
  180. package/dist/modules/cr_planner.d.ts +2 -1
  181. package/dist/modules/cr_planner.d.ts.map +1 -1
  182. package/dist/modules/cr_planner.js +1 -1
  183. package/dist/modules/cr_planner.js.map +1 -1
  184. package/dist/modules/credential_policy.d.ts +6 -4
  185. package/dist/modules/credential_policy.d.ts.map +1 -1
  186. package/dist/modules/credential_policy.js +6 -4
  187. package/dist/modules/credential_policy.js.map +1 -1
  188. package/dist/modules/credit_runtime.d.ts.map +1 -1
  189. package/dist/modules/credit_runtime.js +4 -8
  190. package/dist/modules/credit_runtime.js.map +1 -1
  191. package/dist/modules/dexbot_class.d.ts +33 -88
  192. package/dist/modules/dexbot_class.d.ts.map +1 -1
  193. package/dist/modules/dexbot_class.js +36 -68
  194. package/dist/modules/dexbot_class.js.map +1 -1
  195. package/dist/modules/dexbot_cow_runtime.d.ts +7 -7
  196. package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -1
  197. package/dist/modules/dexbot_cow_runtime.js +7 -7
  198. package/dist/modules/dexbot_cow_runtime.js.map +1 -1
  199. package/dist/modules/dexbot_credential_client.d.ts +3 -3
  200. package/dist/modules/dexbot_credential_client.js +3 -3
  201. package/dist/modules/dexbot_credential_client.js.map +1 -1
  202. package/dist/modules/dexbot_fill_runtime.d.ts +1 -7
  203. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
  204. package/dist/modules/dexbot_fill_runtime.js +1 -9
  205. package/dist/modules/dexbot_fill_runtime.js.map +1 -1
  206. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
  207. package/dist/modules/dexbot_maintenance_runtime.js +3 -1
  208. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
  209. package/dist/modules/dexbot_state_recovery.d.ts.map +1 -1
  210. package/dist/modules/dexbot_state_recovery.js +99 -1
  211. package/dist/modules/dexbot_state_recovery.js.map +1 -1
  212. package/dist/modules/graceful_shutdown.d.ts +4 -2
  213. package/dist/modules/graceful_shutdown.d.ts.map +1 -1
  214. package/dist/modules/graceful_shutdown.js +4 -2
  215. package/dist/modules/graceful_shutdown.js.map +1 -1
  216. package/dist/modules/launcher/bot_supervisor.d.ts +1 -1
  217. package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -1
  218. package/dist/modules/launcher/bot_supervisor.js +1 -4
  219. package/dist/modules/launcher/bot_supervisor.js.map +1 -1
  220. package/dist/modules/market_adapter_whitelist.d.ts +1 -2
  221. package/dist/modules/market_adapter_whitelist.d.ts.map +1 -1
  222. package/dist/modules/market_adapter_whitelist.js +1 -4
  223. package/dist/modules/market_adapter_whitelist.js.map +1 -1
  224. package/dist/modules/node_health_cache.d.ts +12 -4
  225. package/dist/modules/node_health_cache.d.ts.map +1 -1
  226. package/dist/modules/node_health_cache.js +13 -13
  227. package/dist/modules/node_health_cache.js.map +1 -1
  228. package/dist/modules/node_manager.d.ts.map +1 -1
  229. package/dist/modules/node_manager.js +3 -6
  230. package/dist/modules/node_manager.js.map +1 -1
  231. package/dist/modules/order/accounting.d.ts +2 -37
  232. package/dist/modules/order/accounting.d.ts.map +1 -1
  233. package/dist/modules/order/accounting.js +2 -64
  234. package/dist/modules/order/accounting.js.map +1 -1
  235. package/dist/modules/order/export.d.ts +1 -37
  236. package/dist/modules/order/export.d.ts.map +1 -1
  237. package/dist/modules/order/export.js +1 -1
  238. package/dist/modules/order/export.js.map +1 -1
  239. package/dist/modules/order/format.d.ts +28 -14
  240. package/dist/modules/order/format.d.ts.map +1 -1
  241. package/dist/modules/order/format.js +73 -18
  242. package/dist/modules/order/format.js.map +1 -1
  243. package/dist/modules/order/grid.d.ts +11 -5
  244. package/dist/modules/order/grid.d.ts.map +1 -1
  245. package/dist/modules/order/grid.js +79 -37
  246. package/dist/modules/order/grid.js.map +1 -1
  247. package/dist/modules/order/grid_reconcile_internal.js +2 -2
  248. package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
  249. package/dist/modules/order/logger_state.d.ts +3 -45
  250. package/dist/modules/order/logger_state.d.ts.map +1 -1
  251. package/dist/modules/order/logger_state.js +3 -55
  252. package/dist/modules/order/logger_state.js.map +1 -1
  253. package/dist/modules/order/manager.d.ts +0 -4
  254. package/dist/modules/order/manager.d.ts.map +1 -1
  255. package/dist/modules/order/manager.js +3 -9
  256. package/dist/modules/order/manager.js.map +1 -1
  257. package/dist/modules/order/sync_engine.d.ts +0 -2
  258. package/dist/modules/order/sync_engine.d.ts.map +1 -1
  259. package/dist/modules/order/sync_engine.js +1 -4
  260. package/dist/modules/order/sync_engine.js.map +1 -1
  261. package/dist/modules/order/utils/math.d.ts +2 -11
  262. package/dist/modules/order/utils/math.d.ts.map +1 -1
  263. package/dist/modules/order/utils/math.js +3 -14
  264. package/dist/modules/order/utils/math.js.map +1 -1
  265. package/dist/modules/order/utils/order.d.ts +1 -17
  266. package/dist/modules/order/utils/order.d.ts.map +1 -1
  267. package/dist/modules/order/utils/order.js +3 -21
  268. package/dist/modules/order/utils/order.js.map +1 -1
  269. package/dist/modules/order/utils/system.d.ts +1 -11
  270. package/dist/modules/order/utils/system.d.ts.map +1 -1
  271. package/dist/modules/order/utils/system.js +3 -3
  272. package/dist/modules/order/utils/system.js.map +1 -1
  273. package/dist/modules/order/utils/validate.d.ts +1 -26
  274. package/dist/modules/order/utils/validate.d.ts.map +1 -1
  275. package/dist/modules/order/utils/validate.js +1 -1
  276. package/dist/modules/order/utils/validate.js.map +1 -1
  277. package/dist/modules/order/working_grid.d.ts +3 -9
  278. package/dist/modules/order/working_grid.d.ts.map +1 -1
  279. package/dist/modules/order/working_grid.js +3 -11
  280. package/dist/modules/order/working_grid.js.map +1 -1
  281. package/dist/modules/runtime_settings.js +1 -1
  282. package/dist/modules/runtime_settings.js.map +1 -1
  283. package/dist/pm2.d.ts +1 -1
  284. package/dist/pm2.d.ts.map +1 -1
  285. package/dist/pm2.js +1 -4
  286. package/dist/pm2.js.map +1 -1
  287. package/dist/scripts/analyze-orders.d.ts.map +1 -1
  288. package/dist/scripts/analyze-orders.js +36 -45
  289. package/dist/scripts/analyze-orders.js.map +1 -1
  290. package/dist/scripts/sync-version.js +22 -0
  291. package/dist/scripts/sync-version.js.map +1 -1
  292. package/ecosystem.config.cjs +32 -0
  293. package/package.json +3 -1
  294. package/scripts/README.md +4 -4
  295. package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +0 -1
  296. package/dist/analysis/trend_detection/hurst_analyzer.js.map +0 -1
  297. package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts.map +0 -1
  298. package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +0 -1
  299. package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts.map +0 -1
  300. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +0 -1
  301. package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts.map +0 -1
  302. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +0 -1
  303. package/dist/market_adapter/index.d.ts +0 -32
  304. package/dist/market_adapter/index.d.ts.map +0 -1
  305. package/dist/market_adapter/index.js +0 -39
  306. package/dist/market_adapter/index.js.map +0 -1
  307. package/dist/scripts/fix-err-message.d.ts +0 -3
  308. package/dist/scripts/fix-err-message.d.ts.map +0 -1
  309. package/dist/scripts/fix-err-message.js +0 -193
  310. package/dist/scripts/fix-err-message.js.map +0 -1
  311. /package/dist/{analysis/trend_detection → market_adapter/core/signals}/hurst_analyzer.d.ts +0 -0
  312. /package/dist/{analysis/trend_detection → market_adapter/core/signals}/permutation_entropy_analyzer.d.ts +0 -0
@@ -1,23 +1,45 @@
1
- import { clamp } from '../../modules/order/utils/math.js';
2
- import { MARKET_ADAPTER } from '../../modules/constants.js';
3
1
  'use strict';
4
- const KALMAN_SMOOTHING_BUDGET = MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTHING_BUDGET;
5
- const KALMAN_SMOOTHING_FLOOR = MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTHING_FLOOR;
6
- function resolveKalmanVelocitySmoothingConfig(config = {}) {
7
- const blend = clamp(config.kalmanSmoothPct ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_PCT_DEFAULT, 0, 200) / 100;
8
- const dispScale = clamp(config.kalmanDispScaleMult ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_SCALE_MULT_DEFAULT, 1.0, 3.0);
9
- const dispThreshold = clamp(config.kalmanDispThresholdMult ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_THRESHOLD_MULT_DEFAULT, 0.25, 3.0);
10
- const spanPct = clamp(config.kalmanSmoothSpanPct ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_SPAN_PCT_DEFAULT, 20, 200);
2
+ import { MARKET_ADAPTER } from '../../../modules/constants.js';
3
+ /**
4
+ * Kalman velocity smoothing — canonical implementation shared by the live
5
+ * market adapter service, analysis research charts, and the browser-embedded
6
+ * chart scripts (injected via fn.toString()).
7
+ *
8
+ * The public functions below are intentionally self-contained (no module
9
+ * imports referenced inside function bodies) so the chart generators can embed
10
+ * their exact source into generated HTML and keep every consumer on one logic
11
+ * path. Node-side defaults resolve from MARKET_ADAPTER constants; embedded
12
+ * browser callers pass explicit config values from the chart payload.
13
+ */
14
+ const KALMAN_VELOCITY_DEFAULTS = {
15
+ kalmanSmoothPct: MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_PCT_DEFAULT,
16
+ kalmanDispScaleMult: MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_SCALE_MULT_DEFAULT,
17
+ kalmanDispThresholdMult: MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_THRESHOLD_MULT_DEFAULT,
18
+ kalmanSmoothSpanPct: MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_SPAN_PCT_DEFAULT,
19
+ smoothingBudget: MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTHING_BUDGET,
20
+ smoothingFloor: MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTHING_FLOOR,
21
+ };
22
+ function resolveKalmanVelocitySmoothingConfig(config = {}, defaults = {}) {
23
+ const blend = Math.max(0, Math.min(200, config.kalmanSmoothPct ?? defaults.kalmanSmoothPct ?? 100)) / 100;
24
+ const dispScale = Math.max(1.0, Math.min(3.0, config.kalmanDispScaleMult ?? defaults.kalmanDispScaleMult ?? 1.8));
25
+ const dispThreshold = Math.max(0.25, Math.min(3.0, config.kalmanDispThresholdMult ?? defaults.kalmanDispThresholdMult ?? 1.5));
26
+ const spanPct = Math.max(20, Math.min(200, config.kalmanSmoothSpanPct ?? defaults.kalmanSmoothSpanPct ?? 100));
27
+ const smoothingBudget = Number.isFinite(config.smoothingBudget)
28
+ ? config.smoothingBudget
29
+ : (Number.isFinite(defaults.smoothingBudget) ? defaults.smoothingBudget : 0.60);
30
+ const smoothingFloor = Number.isFinite(config.smoothingFloor)
31
+ ? config.smoothingFloor
32
+ : (Number.isFinite(defaults.smoothingFloor) ? defaults.smoothingFloor : 0);
11
33
  return {
12
34
  blend,
13
35
  dispScale,
14
36
  dispThreshold,
15
- smoothingFloor: KALMAN_SMOOTHING_FLOOR,
16
- smoothingBudget: KALMAN_SMOOTHING_BUDGET,
17
- smoothingSpan: KALMAN_SMOOTHING_BUDGET * spanPct / 100,
37
+ smoothingFloor,
38
+ smoothingBudget,
39
+ smoothingSpan: smoothingBudget * spanPct / 100,
18
40
  };
19
41
  }
20
- function smoothKalmanVelocityPoint(rawVelocityPct, displacementPct, prevAdaptiveVelocity, config = {}) {
42
+ function smoothKalmanVelocityPoint(rawVelocityPct, displacementPct, prevAdaptiveVelocity, config = {}, defaults = {}) {
21
43
  if (rawVelocityPct == null || displacementPct == null) {
22
44
  return {
23
45
  adaptiveVelocityPct: null,
@@ -26,8 +48,8 @@ function smoothKalmanVelocityPoint(rawVelocityPct, displacementPct, prevAdaptive
26
48
  smoothingAlpha: null,
27
49
  };
28
50
  }
29
- const resolved = resolveKalmanVelocitySmoothingConfig(config);
30
- const trendConfidence = clamp(Math.abs(displacementPct) / (resolved.dispScale * resolved.dispThreshold), 0, 1);
51
+ const resolved = resolveKalmanVelocitySmoothingConfig(config, defaults);
52
+ const trendConfidence = Math.max(0, Math.min(1, Math.abs(displacementPct) / (resolved.dispScale * resolved.dispThreshold)));
31
53
  const smoothingAlpha = Math.min(resolved.smoothingBudget, resolved.smoothingFloor + (resolved.smoothingSpan * trendConfidence));
32
54
  const adaptiveVelocityPct = prevAdaptiveVelocity == null
33
55
  ? rawVelocityPct
@@ -42,10 +64,10 @@ function smoothKalmanVelocityPoint(rawVelocityPct, displacementPct, prevAdaptive
42
64
  smoothingAlpha,
43
65
  };
44
66
  }
45
- function buildKalmanVelocitySeries(kalmanHistory, config = {}) {
67
+ function buildKalmanVelocitySeries(kalmanHistory, config = {}, defaults = {}) {
46
68
  if (!Array.isArray(kalmanHistory) || kalmanHistory.length === 0)
47
69
  return [];
48
- const resolved = resolveKalmanVelocitySmoothingConfig(config);
70
+ const resolved = resolveKalmanVelocitySmoothingConfig(config, defaults);
49
71
  if (resolved.blend === 0) {
50
72
  const rawSeries = new Array(kalmanHistory.length).fill(null);
51
73
  for (let i = 0; i < kalmanHistory.length; i++) {
@@ -60,7 +82,7 @@ function buildKalmanVelocitySeries(kalmanHistory, config = {}) {
60
82
  let prevAdaptiveVelocity = null;
61
83
  for (let i = 0; i < kalmanHistory.length; i++) {
62
84
  const point = kalmanHistory[i];
63
- const result = smoothKalmanVelocityPoint(point?.velocityPct ?? null, point?.displacementPct ?? null, prevAdaptiveVelocity, config);
85
+ const result = smoothKalmanVelocityPoint(point?.velocityPct ?? null, point?.displacementPct ?? null, prevAdaptiveVelocity, config, defaults);
64
86
  series[i] = result.smoothedVelocityPct;
65
87
  prevAdaptiveVelocity = result.adaptiveVelocityPct ?? null;
66
88
  }
@@ -80,5 +102,5 @@ function computeAbsolutePercentileThreshold(series, clipPercentile, fallback = I
80
102
  const idx = Math.min(Math.floor((100 - clipPercentile) / 100 * magnitudes.length), magnitudes.length - 1);
81
103
  return magnitudes[idx];
82
104
  }
83
- export { buildKalmanVelocitySeries, computeAbsolutePercentileThreshold, resolveKalmanVelocitySmoothingConfig, smoothKalmanVelocityPoint };
105
+ export { buildKalmanVelocitySeries, computeAbsolutePercentileThreshold, resolveKalmanVelocitySmoothingConfig, smoothKalmanVelocityPoint, KALMAN_VELOCITY_DEFAULTS };
84
106
  //# sourceMappingURL=kalman_velocity_smoothing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kalman_velocity_smoothing.js","sourceRoot":"","sources":["../../../../market_adapter/core/signals/kalman_velocity_smoothing.ts"],"names":[],"mappings":"AACA,YAAY,CAAC;AAEb,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;;;;;;;;;GAUG;AAEH,MAAM,wBAAwB,GAAG;IAC7B,eAAe,EAAE,cAAc,CAAC,wCAAwC;IACxE,mBAAmB,EAAE,cAAc,CAAC,6CAA6C;IACjF,uBAAuB,EAAE,cAAc,CAAC,iDAAiD;IACzF,mBAAmB,EAAE,cAAc,CAAC,6CAA6C;IACjF,eAAe,EAAE,cAAc,CAAC,sCAAsC;IACtE,cAAc,EAAE,cAAc,CAAC,qCAAqC;CACvE,CAAC;AAgBF,SAAS,oCAAoC,CAAC,SAA+B,EAAE,EAAE,WAA0C,EAAE;IACzH,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC1G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC,CAAC;IAClH,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,uBAAuB,IAAI,QAAQ,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/H,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/G,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC;QAC3D,CAAC,CAAC,MAAM,CAAC,eAAyB;QAClC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;QACzD,CAAC,CAAC,MAAM,CAAC,cAAwB;QACjC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzF,OAAO;QACH,KAAK;QACL,SAAS;QACT,aAAa;QACb,cAAc;QACd,eAAe;QACf,aAAa,EAAE,eAAe,GAAG,OAAO,GAAG,GAAG;KACjD,CAAC;AACN,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAyC,EAAE,eAA0C,EAAE,oBAA+C,EAAE,SAA+B,EAAE,EAAE,WAA0C,EAAE;IACtP,IAAI,cAAc,IAAI,IAAI,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QACpD,OAAO;YACH,mBAAmB,EAAE,IAAI;YACzB,mBAAmB,EAAE,IAAI;YACzB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;SACvB,CAAC;IACN,CAAC;IAED,MAAM,QAAQ,GAAG,oCAAoC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC3B,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,cAAc,GAAG,CAAC,QAAQ,CAAC,aAAa,GAAG,eAAe,CAAC,CACvE,CAAC;IACF,MAAM,mBAAmB,GAAG,oBAAoB,IAAI,IAAI;QACpD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACxF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,KAAK,KAAK,CAAC;QAC5C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,mBAAmB,GAAG,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnF,OAAO;QACH,mBAAmB;QACnB,mBAAmB;QACnB,eAAe;QACf,cAAc;KACjB,CAAC;AACN,CAAC;AAED,SAAS,yBAAyB,CAAC,aAAsD,EAAE,SAA+B,EAAE,EAAE,WAA0C,EAAE;IACtK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3E,MAAM,QAAQ,GAAG,oCAAoC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxE,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,cAAc,GAAG,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC;YAClD,MAAM,eAAe,GAAG,KAAK,EAAE,eAAe,IAAI,IAAI,CAAC;YACvD,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,IAAI,IAAI,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;QAC7F,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAsB,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,IAAI,oBAAoB,GAAkB,IAAI,CAAC;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,yBAAyB,CACpC,KAAK,EAAE,WAAW,IAAI,IAAI,EAC1B,KAAK,EAAE,eAAe,IAAI,IAAI,EAC9B,oBAAoB,EACpB,MAAM,EACN,QAAQ,CACX,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACvC,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,kCAAkC,CAAC,MAAqC,EAAE,cAAsB,EAAE,QAAQ,GAAG,QAAQ;IAC1H,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE3C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QAC/B,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAChB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,EAC5D,UAAU,CAAC,MAAM,GAAG,CAAC,CACxB,CAAC;IACF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,oCAAoC,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permutation_entropy_analyzer.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/signals/permutation_entropy_analyzer.ts"],"names":[],"mappings":"AAsCA,UAAU,0BAA0B;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,cAAM,0BAA0B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;gBACS,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAmB/C;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,0BAA0B;IAoCjD,WAAW,IAAI,0BAA0B;CAwB5C;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAA"}
@@ -1,6 +1,6 @@
1
- import { MARKET_ADAPTER } from '../../modules/constants.js';
2
- import { roundTo } from '../../modules/utils/math_utils.js';
3
1
  'use strict';
2
+ import { MARKET_ADAPTER } from '../../../modules/constants.js';
3
+ import { roundTo } from '../../../modules/utils/math_utils.js';
4
4
  /**
5
5
  * Permutation Entropy Analyzer
6
6
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permutation_entropy_analyzer.js","sourceRoot":"","sources":["../../../../market_adapter/core/signals/permutation_entropy_analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,4 @@
1
- /**
2
- * Kaufman's Adaptive Moving Average (KAMA/AMA).
3
- */
4
- declare class AMA {
5
- erPeriod: any;
6
- erSmoothPeriod: any;
7
- erSmoothAlpha: any;
8
- erSmoothValue: any;
9
- fastSC: any;
10
- slowSC: any;
11
- prevAMA: any;
12
- history: any;
13
- warmedUp: any;
14
- smaSum: any;
15
- smaCount: any;
16
- constructor(erPeriod: any, fastPeriod: any, slowPeriod: any, erSmoothPeriod: any);
17
- update(price: any): any;
18
- }
19
1
  declare function getAmaWarmupBars(erPeriod: any, slowPeriod: any, lookbackBars: any, fastPeriod: any, erSmoothPeriod?: number): number;
20
2
  declare function calculateAMA(closes: any, params: any): any[];
21
- export { AMA, calculateAMA, getAmaWarmupBars };
3
+ export { calculateAMA, getAmaWarmupBars };
22
4
  //# sourceMappingURL=ama.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ama.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,cAAM,GAAG;IACL,QAAQ,EAAE,GAAG,CAAC;IACd,cAAc,EAAE,GAAG,CAAC;IACpB,aAAa,EAAE,GAAG,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC;gBAEF,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG;IA0BhF,MAAM,CAAC,KAAK,EAAE,GAAG;CA+CpB;AAED,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,SAAI,UAoC/G;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAmB7C;AAED,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"ama.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama.ts"],"names":[],"mappings":"AAgGA,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,SAAI,UAoC/G;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAmB7C;AAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
@@ -129,5 +129,5 @@ function calculateAMA(closes, params) {
129
129
  const indicator = new AMA(params.erPeriod, params.fastPeriod, params.slowPeriod, params.erSmoothPeriod);
130
130
  return closes.map(price => indicator.update(price));
131
131
  }
132
- export { AMA, calculateAMA, getAmaWarmupBars };
132
+ export { calculateAMA, getAmaWarmupBars };
133
133
  //# sourceMappingURL=ama.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ama.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ama.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- declare function computeAverageAmaSlopePct(current: any, past: any, lookbackBars: any): number | null;
1
+ import { computeAverageAmaSlopePct } from './dynamic_weight_series.js';
2
2
  /**
3
3
  * Compute AMA slope and volatility offsets from the AMA series.
4
4
  *
@@ -16,23 +16,12 @@ declare function computeAverageAmaSlopePct(current: any, past: any, lookbackBars
16
16
  * @param {number} [opts.volatilityScaleX=10.0] Scale factor penalty (10.0 = normal start)
17
17
  * @param {number} [opts.volatilityThreshold=0.1] Minimum |symmetricDelta| before penalty applies
18
18
  * @param {number} [opts.erPeriod=DEFAULT_ER_PERIOD] AMA warm-up bars to skip in isReady guard
19
- * @param {number} [opts.slowPeriod=DEFAULT_SLOW_PERIOD] AMA slow period used for warm-up guard
20
- * @param {number} [opts.fastPeriod=DEFAULT_FAST_PERIOD] AMA fast period used for warm-up guard
21
19
  * @param {number} [opts.maxSlopeOffset=MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_OFFSET_CLAMP] Per-bot cap on buy/sell asymmetry offset
22
20
  * @param {number} [opts.maxVolatilityOffset=MARKET_ADAPTER.DYNAMIC_WEIGHT_SYMMETRIC_SHIFT_CLAMP] Per-bot cap on volatility shift
23
- * @param {number} [opts.clipPercentile=0] Percentile clip on slope (0=off, 10=clip top 10%)
24
- * @param {number} [opts.clipThreshold] Pre-computed clip threshold from slope history
21
+ * @param {number} [opts.clipThreshold=Infinity] Pre-computed clip threshold from slope history (percentile clipping is done by the caller)
25
22
  * @returns {{ slopeOffset, rawSlopeOffset, symmetricDelta, slopePct, clippedSlopePct, confidence, trend, isReady }}
26
23
  */
27
24
  declare function computeAmaSlopeWeights(amaValues: any, weightVariance: any, opts?: any): {
28
- isReady: boolean;
29
- slopeOffset: number;
30
- symmetricDelta: number;
31
- slopePct: number;
32
- clippedSlopePct: number;
33
- confidence: number;
34
- trend: string;
35
- } | {
36
25
  slopeOffset: number;
37
26
  rawSlopeOffset: number;
38
27
  symmetricDelta: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ama_slope_model.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama_slope_model.ts"],"names":[],"mappings":"AAeA,iBAAS,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,iBAQ5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,iBAAS,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAE,GAAQ;;;;;;;;;;;;;;;;;EAsGlF;AAED,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,CAAA"}
1
+ {"version":3,"file":"ama_slope_model.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama_slope_model.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAOvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAS,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAE,GAAQ;;;;;;;;;EAiGlF;AAED,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,CAAA"}
@@ -2,17 +2,12 @@ import { clamp } from '../../../modules/order/utils/math.js';
2
2
  import { MARKET_ADAPTER } from '../../../modules/constants.js';
3
3
  import { roundTo } from '../../../modules/utils/math_utils.js';
4
4
  import { normalizeMaxVolatilityOffset, normalizeVolatilityThreshold, } from '../config_normalizers.js';
5
+ import { computeVolatilityShift } from './volatility_shift.js';
6
+ // Canonical AMA slope % lives in dynamic_weight_series.ts (self-contained so the
7
+ // chart generators can embed its exact source); re-exported here for compat.
8
+ import { computeAverageAmaSlopePct } from './dynamic_weight_series.js';
5
9
  const _DEFAULT_AMA_KEY = MARKET_ADAPTER.DEFAULT_AMA_KEY;
6
10
  const DEFAULT_ER_PERIOD = MARKET_ADAPTER.AMAS[_DEFAULT_AMA_KEY].erPeriod;
7
- function computeAverageAmaSlopePct(current, past, lookbackBars) {
8
- const safeLookbackBars = Number.isFinite(lookbackBars) && lookbackBars > 0
9
- ? Math.ceil(lookbackBars)
10
- : 1;
11
- if (!Number.isFinite(current) || !Number.isFinite(past) || past === 0) {
12
- return null;
13
- }
14
- return ((current - past) / past * 100) / safeLookbackBars;
15
- }
16
11
  /**
17
12
  * Compute AMA slope and volatility offsets from the AMA series.
18
13
  *
@@ -30,12 +25,9 @@ function computeAverageAmaSlopePct(current, past, lookbackBars) {
30
25
  * @param {number} [opts.volatilityScaleX=10.0] Scale factor penalty (10.0 = normal start)
31
26
  * @param {number} [opts.volatilityThreshold=0.1] Minimum |symmetricDelta| before penalty applies
32
27
  * @param {number} [opts.erPeriod=DEFAULT_ER_PERIOD] AMA warm-up bars to skip in isReady guard
33
- * @param {number} [opts.slowPeriod=DEFAULT_SLOW_PERIOD] AMA slow period used for warm-up guard
34
- * @param {number} [opts.fastPeriod=DEFAULT_FAST_PERIOD] AMA fast period used for warm-up guard
35
28
  * @param {number} [opts.maxSlopeOffset=MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_OFFSET_CLAMP] Per-bot cap on buy/sell asymmetry offset
36
29
  * @param {number} [opts.maxVolatilityOffset=MARKET_ADAPTER.DYNAMIC_WEIGHT_SYMMETRIC_SHIFT_CLAMP] Per-bot cap on volatility shift
37
- * @param {number} [opts.clipPercentile=0] Percentile clip on slope (0=off, 10=clip top 10%)
38
- * @param {number} [opts.clipThreshold] Pre-computed clip threshold from slope history
30
+ * @param {number} [opts.clipThreshold=Infinity] Pre-computed clip threshold from slope history (percentile clipping is done by the caller)
39
31
  * @returns {{ slopeOffset, rawSlopeOffset, symmetricDelta, slopePct, clippedSlopePct, confidence, trend, isReady }}
40
32
  */
41
33
  function computeAmaSlopeWeights(amaValues, weightVariance, opts = {}) {
@@ -64,6 +56,7 @@ function computeAmaSlopeWeights(amaValues, weightVariance, opts = {}) {
64
56
  const notReady = {
65
57
  isReady: false,
66
58
  slopeOffset: 0,
59
+ rawSlopeOffset: 0,
67
60
  symmetricDelta: 0,
68
61
  slopePct: 0,
69
62
  clippedSlopePct: 0,
@@ -105,19 +98,15 @@ function computeAmaSlopeWeights(amaValues, weightVariance, opts = {}) {
105
98
  ? Math.round((Math.abs(slopeOffset) / maxSlopeOffset) * 100)
106
99
  : 0;
107
100
  // 5. Volatility penalty — symmetric downward shift from ATR/price ratio.
108
- // Formula: symmetricDelta = -weightVariance^exponent * scaleX
109
- // Sync clamps with research tools:
110
- // Exponent: 0.5 to 1.0 (prevents over-aggressive scaling on low ATR)
111
- // ScaleX: 1.0 to 100.0
112
- const effectiveExponent = Math.max(0.5, Math.min(1.0, safeVolatilityExponent));
113
- const effectiveScaleX = Math.max(1.0, Math.min(100.0, safeVolatilityScaleX));
114
- let symmetricDelta = 0;
115
- if (safeWeightVariance > 0 && maxVolatilityOffset > 0) {
116
- const volDelta = -Math.pow(safeWeightVariance, effectiveExponent) * effectiveScaleX;
117
- const rawSymmetricDelta = clamp(volDelta, -maxVolatilityOffset, 0);
118
- symmetricDelta = Math.abs(rawSymmetricDelta) < volatilityThreshold ? 0 : rawSymmetricDelta;
119
- }
120
- const roundedSymmetricDelta = (roundTo(symmetricDelta, 100)) || 0;
101
+ // Canonical implementation shared with the volatility research tool and
102
+ // the browser-embedded chart scripts (see strategies/volatility_shift.ts).
103
+ const shift = computeVolatilityShift(safeWeightVariance, {
104
+ exponent: safeVolatilityExponent,
105
+ scaleX: safeVolatilityScaleX,
106
+ threshold: volatilityThreshold,
107
+ clampValue: maxVolatilityOffset,
108
+ });
109
+ const roundedSymmetricDelta = (roundTo(shift.symmetricDelta, 100)) || 0;
121
110
  return {
122
111
  slopeOffset: roundedSlopeOffset,
123
112
  rawSlopeOffset: slopeOffset,
@@ -1 +1 @@
1
- {"version":3,"file":"ama_slope_model.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama_slope_model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ama_slope_model.js","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/ama_slope_model.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,48 @@
1
1
  /**
2
2
  * Average True Range (ATR) Service
3
3
  * Computes market volatility for symmetrical weight shifts.
4
+ *
5
+ * computeATRSeries is the canonical series implementation — it is shared by the
6
+ * live market adapter (via calculateATR), analysis tooling (re-exported through
7
+ * analysis/math_utils.ts), and the browser-embedded chart scripts (injected via
8
+ * fn.toString()). calculateATR is a thin single-value wrapper that preserves the
9
+ * production edge-case guards on top of the same series.
4
10
  */
11
+ /**
12
+ * ATR series over candles (High, Low, Close).
13
+ *
14
+ * Chain-breaking semantics: an invalid row resets the previous-close reference so
15
+ * a single bad candle never synthesizes a multi-bar gap into the next true range.
16
+ * Positions before `period` valid true ranges resolve to 0 (insufficient data).
17
+ *
18
+ * Candles may be rows ([timestamp, open, high, low, close, volume]) or objects
19
+ * ({ open, high, low, close, ... }); the getter logic is inlined so the function
20
+ * stays self-contained and can be injected into generated HTML verbatim.
21
+ *
22
+ * @param {Array} candles - Array of candle rows or candle objects
23
+ * @param {number} period - ATR period
24
+ * @param {Object} [stats] - Optional mutable object; when provided, the number of
25
+ * valid true ranges computed is written to `stats.validRanges`
26
+ * and the final running ATR value to `stats.atr` (useful for
27
+ * callers that need to distinguish "no valid data" from "warmup 0"
28
+ * without re-scanning the input, or to read the last computed ATR
29
+ * even when the final row is missing/invalid).
30
+ * @returns {number[]} Per-candle ATR values (0 during warmup / across breaks)
31
+ */
32
+ declare function computeATRSeries(candles: any, period?: number, stats?: any): number[];
5
33
  /**
6
34
  * Calculates ATR from candles (High, Low, Close).
7
- * @param {Array} candles - Array of [timestamp, open, high, low, close, volume]
35
+ *
36
+ * Edge-case guards preserved on top of the shared series: all-invalid input
37
+ * yields NaN (so callers can detect a failed ATR and disable the volatility
38
+ * penalty) rather than a silent 0; fewer valid true ranges than the period
39
+ * remains a warmup 0. The final ATR is the last computed running value, so a
40
+ * trailing missing/invalid candle does not collapse a valid ATR to 0.
41
+ *
42
+ * @param {Array} candles - Array of candle rows or candle objects
8
43
  * @param {number} period - ATR period
9
44
  * @returns {number} Average True Range value
10
45
  */
11
- declare function calculateATR(candles: any, period?: number): number;
12
- export { calculateATR };
46
+ declare function calculateATR(candles: any, period?: number): any;
47
+ export { calculateATR, computeATRSeries };
13
48
  //# sourceMappingURL=calculator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../../../../market_adapter/core/strategies/atr/calculator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAK,UA+B9C;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../../../../market_adapter/core/strategies/atr/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,iBAAS,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAK,EAAE,KAAK,GAAE,GAAU,YA0CrE;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAK,OAe9C;AAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1,47 +1,107 @@
1
1
  /**
2
2
  * Average True Range (ATR) Service
3
3
  * Computes market volatility for symmetrical weight shifts.
4
+ *
5
+ * computeATRSeries is the canonical series implementation — it is shared by the
6
+ * live market adapter (via calculateATR), analysis tooling (re-exported through
7
+ * analysis/math_utils.ts), and the browser-embedded chart scripts (injected via
8
+ * fn.toString()). calculateATR is a thin single-value wrapper that preserves the
9
+ * production edge-case guards on top of the same series.
4
10
  */
5
11
  import { normalizeAtrPeriod } from '../../config_normalizers.js';
6
12
  'use strict';
7
13
  /**
8
- * Calculates ATR from candles (High, Low, Close).
9
- * @param {Array} candles - Array of [timestamp, open, high, low, close, volume]
10
- * @param {number} period - ATR period
11
- * @returns {number} Average True Range value
14
+ * ATR series over candles (High, Low, Close).
15
+ *
16
+ * Chain-breaking semantics: an invalid row resets the previous-close reference so
17
+ * a single bad candle never synthesizes a multi-bar gap into the next true range.
18
+ * Positions before `period` valid true ranges resolve to 0 (insufficient data).
19
+ *
20
+ * Candles may be rows ([timestamp, open, high, low, close, volume]) or objects
21
+ * ({ open, high, low, close, ... }); the getter logic is inlined so the function
22
+ * stays self-contained and can be injected into generated HTML verbatim.
23
+ *
24
+ * @param {Array} candles - Array of candle rows or candle objects
25
+ * @param {number} period - ATR period
26
+ * @param {Object} [stats] - Optional mutable object; when provided, the number of
27
+ * valid true ranges computed is written to `stats.validRanges`
28
+ * and the final running ATR value to `stats.atr` (useful for
29
+ * callers that need to distinguish "no valid data" from "warmup 0"
30
+ * without re-scanning the input, or to read the last computed ATR
31
+ * even when the final row is missing/invalid).
32
+ * @returns {number[]} Per-candle ATR values (0 during warmup / across breaks)
12
33
  */
13
- function calculateATR(candles, period = 14) {
14
- const safePeriod = normalizeAtrPeriod(period);
34
+ function computeATRSeries(candles, period = 14, stats = null) {
35
+ const atrs = [];
15
36
  if (!Array.isArray(candles))
16
- return Number.NaN;
17
- if (candles.length < safePeriod + 1)
18
- return 0;
19
- let tr = [];
37
+ return atrs;
38
+ const safePeriod = Math.max(1, Math.round(period));
39
+ let trSum = 0;
40
+ let trCount = 0;
20
41
  let prevClose = null;
42
+ let atrVal = 0;
21
43
  for (let i = 0; i < candles.length; i++) {
22
- const high = Number(candles[i]?.[2]);
23
- const low = Number(candles[i]?.[3]);
24
- const close = Number(candles[i]?.[4]);
44
+ const c = candles[i];
45
+ const high = Array.isArray(c) ? Number(c?.[2]) : Number(c?.high);
46
+ const low = Array.isArray(c) ? Number(c?.[3]) : Number(c?.low);
47
+ const close = Array.isArray(c) ? Number(c?.[4]) : Number(c?.close);
25
48
  if (!Number.isFinite(high) || !Number.isFinite(low) || !Number.isFinite(close)) {
26
- // Break the ATR chain across missing/invalid rows so a single bad candle
27
- // does not synthesize a multi-bar gap into the next valid true range.
49
+ // Break the ATR chain across missing/invalid rows so a single bad
50
+ // candle does not synthesize a multi-bar gap into the next valid true range.
28
51
  prevClose = null;
52
+ atrs.push(0);
29
53
  continue;
30
54
  }
31
55
  if (prevClose != null) {
32
- tr.push(Math.max(high - low, Math.abs(high - prevClose), Math.abs(low - prevClose)));
56
+ const tr = Math.max(high - low, Math.abs(high - prevClose), Math.abs(low - prevClose));
57
+ trCount++;
58
+ if (trCount <= safePeriod) {
59
+ trSum += tr;
60
+ atrVal = trSum / trCount;
61
+ }
62
+ else {
63
+ atrVal = (atrVal * (safePeriod - 1) + tr) / safePeriod;
64
+ }
33
65
  }
34
66
  prevClose = close;
67
+ atrs.push(trCount < safePeriod ? 0 : atrVal);
68
+ }
69
+ if (stats && typeof stats === 'object') {
70
+ stats.validRanges = trCount;
71
+ stats.atr = atrVal;
35
72
  }
36
- if (tr.length === 0)
73
+ return atrs;
74
+ }
75
+ /**
76
+ * Calculates ATR from candles (High, Low, Close).
77
+ *
78
+ * Edge-case guards preserved on top of the shared series: all-invalid input
79
+ * yields NaN (so callers can detect a failed ATR and disable the volatility
80
+ * penalty) rather than a silent 0; fewer valid true ranges than the period
81
+ * remains a warmup 0. The final ATR is the last computed running value, so a
82
+ * trailing missing/invalid candle does not collapse a valid ATR to 0.
83
+ *
84
+ * @param {Array} candles - Array of candle rows or candle objects
85
+ * @param {number} period - ATR period
86
+ * @returns {number} Average True Range value
87
+ */
88
+ function calculateATR(candles, period = 14) {
89
+ const safePeriod = normalizeAtrPeriod(period);
90
+ if (!Array.isArray(candles))
37
91
  return Number.NaN;
38
- if (tr.length < safePeriod)
92
+ if (candles.length < safePeriod + 1)
39
93
  return 0;
40
- let atr = tr.slice(0, safePeriod).reduce((a, b) => a + b, 0) / safePeriod;
41
- for (let i = safePeriod; i < tr.length; i++) {
42
- atr = (atr * (safePeriod - 1) + tr[i]) / safePeriod;
43
- }
44
- return atr;
94
+ const stats = {};
95
+ const series = computeATRSeries(candles, safePeriod, stats);
96
+ if (series.length === 0)
97
+ return Number.NaN;
98
+ // No valid true ranges at all (all rows missing/invalid) → NaN, not 0.
99
+ if (stats.validRanges === 0)
100
+ return Number.NaN;
101
+ // Fewer valid true ranges than the period → warmup 0.
102
+ if (stats.validRanges < safePeriod)
103
+ return 0;
104
+ return Number.isFinite(stats.atr) ? stats.atr : 0;
45
105
  }
46
- export { calculateATR };
106
+ export { calculateATR, computeATRSeries };
47
107
  //# sourceMappingURL=calculator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../../../market_adapter/core/strategies/atr/calculator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,CAAC;AAGb;;;;;GAKG;AACH,SAAS,YAAY,CAAC,OAAY,EAAE,MAAM,GAAG,EAAE;IAC7C,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAE9C,IAAI,EAAE,GAAa,EAAE,CAAC;IACtB,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/E,yEAAyE;YACzE,sEAAsE;YACtE,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IACvC,IAAI,EAAE,CAAC,MAAM,GAAG,UAAU;QAAE,OAAO,CAAC,CAAC;IAErC,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;IAC1E,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IACtD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../../../market_adapter/core/strategies/atr/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,CAAC;AAGb;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,gBAAgB,CAAC,OAAY,EAAE,MAAM,GAAG,EAAE,EAAE,QAAa,IAAI;IAClE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7E,kEAAkE;YAClE,6EAA6E;YAC7E,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,SAAS;QACb,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;YACvF,OAAO,EAAE,CAAC;YACV,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;gBACxB,KAAK,IAAI,EAAE,CAAC;gBACZ,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC;YAC3D,CAAC;QACL,CAAC;QACD,SAAS,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;QAC5B,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,YAAY,CAAC,OAAY,EAAE,MAAM,GAAG,EAAE;IAC3C,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAE3C,uEAAuE;IACvE,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC/C,sDAAsD;IACtD,IAAI,KAAK,CAAC,WAAW,GAAG,UAAU;QAAE,OAAO,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
@@ -15,7 +15,7 @@
15
15
  * and any CR adjustment should trigger a grid rebuild from fresh on-chain state.
16
16
  */
17
17
  /**
18
- * @param {Object} trendData - TrendAnalyzer output ({ trend, confidence, isReady })
18
+ * @param {Object} trendData - AMA slope model output ({ trend, confidence, isReady })
19
19
  * @param {number} minRatio - Floor collateral ratio (e.g. 1.5)
20
20
  * @param {number} maxRatio - Ceiling collateral ratio (e.g. 2.0)
21
21
  * @returns {{ targetRatio: number, action: string, adjustment: number }}
@@ -17,7 +17,7 @@ import { roundTo, roundToDecimals } from '../../../modules/utils/math_utils.js';
17
17
  * and any CR adjustment should trigger a grid rebuild from fresh on-chain state.
18
18
  */
19
19
  /**
20
- * @param {Object} trendData - TrendAnalyzer output ({ trend, confidence, isReady })
20
+ * @param {Object} trendData - AMA slope model output ({ trend, confidence, isReady })
21
21
  * @param {number} minRatio - Floor collateral ratio (e.g. 1.5)
22
22
  * @param {number} maxRatio - Ceiling collateral ratio (e.g. 2.0)
23
23
  * @returns {{ targetRatio: number, action: string, adjustment: number }}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Dynamic weight per-bar series — canonical implementation shared by the live
3
+ * market adapter service, the research test harness, and the browser-embedded
4
+ * dynamic-weight chart script.
5
+ *
6
+ * Computes the per-bar AMA/Kalman offset channels, the alpha-blended combined
7
+ * series, the pre-gain dead-band gate, the final gain/clamp, and the signal
8
+ * confirmation latch — the exact shape both the live `_computeDynamicWeights`
9
+ * and the interactive research chart render.
10
+ *
11
+ * This module is intentionally fully self-contained (no imports): the chart
12
+ * generator embeds its exact source into generated HTML via fn.toString(), so
13
+ * every consumer runs one logic path. The pure helper computeAverageAmaSlopePct
14
+ * is re-exported by strategies/ama_slope_model.ts so Node callers keep their
15
+ * existing import path.
16
+ */
17
+ declare function computeAverageAmaSlopePct(current: any, past: any, lookbackBars: any): number | null;
18
+ declare function echoLatchSeries(appliedSeries: any[], preGainSeries: any[], confirmBars: any): {
19
+ echoedAppliedSeries: any[];
20
+ echoedPreGainSeries: any[];
21
+ };
22
+ declare function roundToN(value: any, factor: any): number;
23
+ declare function computeDynamicWeightSeries(inputs: any): {
24
+ amaOffsets: any[];
25
+ kalmanOffsets: any[];
26
+ combinedOffSeries: any[];
27
+ gatedOffSeries: any[];
28
+ echoedOffSeries: any[];
29
+ echoedGatedOffSeries: any[];
30
+ };
31
+ export { computeDynamicWeightSeries, computeAverageAmaSlopePct, echoLatchSeries, roundToN };
32
+ //# sourceMappingURL=dynamic_weight_series.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic_weight_series.d.ts","sourceRoot":"","sources":["../../../../market_adapter/core/strategies/dynamic_weight_series.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AAEH,iBAAS,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,iBAQ5E;AAED,iBAAS,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG;;;EA+CpF;AAED,iBAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,UAGxC;AAED,iBAAS,0BAA0B,CAAC,MAAM,EAAE,GAAG;;;;;;;EA6E9C;AAED,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAA"}