@reefclaw/connect 0.1.11 → 0.1.12

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 (397) hide show
  1. package/assets/bridge/gateway/heartbeat-cron.d.ts +27 -0
  2. package/assets/bridge/gateway/heartbeat-cron.js +85 -0
  3. package/assets/bridge/providers/gateway.d.ts +2 -0
  4. package/assets/bridge/providers/gateway.js +57 -16
  5. package/assets/bridge/setup.js +6 -51
  6. package/dist/deps.js +2 -2
  7. package/dist/plugin.js +35 -7
  8. package/package.json +1 -1
  9. package/assets/plugin/audit/mode-transition-audit.d.ts +0 -11
  10. package/assets/plugin/audit/mode-transition-audit.js +0 -29
  11. package/assets/plugin/balance-utils.d.ts +0 -36
  12. package/assets/plugin/balance-utils.js +0 -98
  13. package/assets/plugin/ccxt/binance-ban-gate.d.ts +0 -47
  14. package/assets/plugin/ccxt/binance-ban-gate.js +0 -420
  15. package/assets/plugin/ccxt/binance-private.d.ts +0 -346
  16. package/assets/plugin/ccxt/binance-private.js +0 -1525
  17. package/assets/plugin/ccxt/binance-public.d.ts +0 -34
  18. package/assets/plugin/ccxt/binance-public.js +0 -180
  19. package/assets/plugin/ccxt/intel-public.d.ts +0 -25
  20. package/assets/plugin/ccxt/intel-public.js +0 -80
  21. package/assets/plugin/ccxt/public-market-data-api.d.ts +0 -26
  22. package/assets/plugin/ccxt/public-market-data-api.js +0 -23
  23. package/assets/plugin/config/agent-config-client.d.ts +0 -77
  24. package/assets/plugin/config/agent-config-client.js +0 -188
  25. package/assets/plugin/config/agent-config-poller.d.ts +0 -32
  26. package/assets/plugin/config/agent-config-poller.js +0 -101
  27. package/assets/plugin/config/brackets-config.d.ts +0 -22
  28. package/assets/plugin/config/brackets-config.js +0 -58
  29. package/assets/plugin/config/entitlement-gate.d.ts +0 -51
  30. package/assets/plugin/config/entitlement-gate.js +0 -137
  31. package/assets/plugin/config/gate-store.d.ts +0 -18
  32. package/assets/plugin/config/gate-store.js +0 -61
  33. package/assets/plugin/config/plugin-config-io.d.ts +0 -222
  34. package/assets/plugin/config/plugin-config-io.js +0 -126
  35. package/assets/plugin/config/position-review-config.d.ts +0 -35
  36. package/assets/plugin/config/position-review-config.js +0 -105
  37. package/assets/plugin/config/tool-gate.d.ts +0 -53
  38. package/assets/plugin/config/tool-gate.js +0 -128
  39. package/assets/plugin/config/user-data-stream-config.d.ts +0 -89
  40. package/assets/plugin/config/user-data-stream-config.js +0 -239
  41. package/assets/plugin/connector-supervisor.d.ts +0 -36
  42. package/assets/plugin/connector-supervisor.js +0 -149
  43. package/assets/plugin/exchange-adapter.d.ts +0 -65
  44. package/assets/plugin/exchange-adapter.js +0 -4
  45. package/assets/plugin/index.d.ts +0 -30
  46. package/assets/plugin/index.js +0 -2756
  47. package/assets/plugin/ingest/pending-entry-metadata.d.ts +0 -74
  48. package/assets/plugin/ingest/pending-entry-metadata.js +0 -236
  49. package/assets/plugin/ingest/position-auto-capture.d.ts +0 -171
  50. package/assets/plugin/ingest/position-auto-capture.js +0 -709
  51. package/assets/plugin/ingest/position-decisions-client.d.ts +0 -327
  52. package/assets/plugin/ingest/position-decisions-client.js +0 -306
  53. package/assets/plugin/ingest/readiness-reporter.d.ts +0 -42
  54. package/assets/plugin/ingest/readiness-reporter.js +0 -163
  55. package/assets/plugin/ingest/reconcile-db-vs-exchange.d.ts +0 -51
  56. package/assets/plugin/ingest/reconcile-db-vs-exchange.js +0 -170
  57. package/assets/plugin/ingest/reconciler-cleanup.d.ts +0 -37
  58. package/assets/plugin/ingest/reconciler-cleanup.js +0 -147
  59. package/assets/plugin/ingest/rest-gap-filler.d.ts +0 -191
  60. package/assets/plugin/ingest/rest-gap-filler.js +0 -565
  61. package/assets/plugin/ingest/touched-symbols-store.d.ts +0 -25
  62. package/assets/plugin/ingest/touched-symbols-store.js +0 -96
  63. package/assets/plugin/ingest/trade-store-client.d.ts +0 -40
  64. package/assets/plugin/ingest/trade-store-client.js +0 -125
  65. package/assets/plugin/ingest/ws-ingest.d.ts +0 -43
  66. package/assets/plugin/ingest/ws-ingest.js +0 -126
  67. package/assets/plugin/learning/setup-family.d.ts +0 -21
  68. package/assets/plugin/learning/setup-family.js +0 -103
  69. package/assets/plugin/lifecycle/install-signal-handlers.d.ts +0 -33
  70. package/assets/plugin/lifecycle/install-signal-handlers.js +0 -112
  71. package/assets/plugin/lifecycle/shutdown-coordinator.d.ts +0 -43
  72. package/assets/plugin/lifecycle/shutdown-coordinator.js +0 -131
  73. package/assets/plugin/lifecycle/trading-operation-lock.d.ts +0 -17
  74. package/assets/plugin/lifecycle/trading-operation-lock.js +0 -14
  75. package/assets/plugin/live/bracket-id.d.ts +0 -26
  76. package/assets/plugin/live/bracket-id.js +0 -112
  77. package/assets/plugin/live/bracket-ledger.d.ts +0 -54
  78. package/assets/plugin/live/bracket-ledger.js +0 -267
  79. package/assets/plugin/live/bracket-manager.d.ts +0 -82
  80. package/assets/plugin/live/bracket-manager.js +0 -478
  81. package/assets/plugin/live/bracket-params.d.ts +0 -22
  82. package/assets/plugin/live/bracket-params.js +0 -124
  83. package/assets/plugin/live/bracket-reconciler.d.ts +0 -95
  84. package/assets/plugin/live/bracket-reconciler.js +0 -573
  85. package/assets/plugin/live/bracket-types.d.ts +0 -102
  86. package/assets/plugin/live/bracket-types.js +0 -8
  87. package/assets/plugin/live/deposit-tracker.d.ts +0 -62
  88. package/assets/plugin/live/deposit-tracker.js +0 -97
  89. package/assets/plugin/live/emergency-controls.d.ts +0 -32
  90. package/assets/plugin/live/emergency-controls.js +0 -226
  91. package/assets/plugin/live/exchange-errors.d.ts +0 -12
  92. package/assets/plugin/live/exchange-errors.js +0 -130
  93. package/assets/plugin/live/exchange-info-cache.d.ts +0 -37
  94. package/assets/plugin/live/exchange-info-cache.js +0 -134
  95. package/assets/plugin/live/fact-subscriber.d.ts +0 -78
  96. package/assets/plugin/live/fact-subscriber.js +0 -182
  97. package/assets/plugin/live/fill-price.d.ts +0 -13
  98. package/assets/plugin/live/fill-price.js +0 -37
  99. package/assets/plugin/live/intent-journal.d.ts +0 -42
  100. package/assets/plugin/live/intent-journal.js +0 -122
  101. package/assets/plugin/live/listen-key-manager.d.ts +0 -70
  102. package/assets/plugin/live/listen-key-manager.js +0 -169
  103. package/assets/plugin/live/live-adapter.d.ts +0 -319
  104. package/assets/plugin/live/live-adapter.js +0 -1906
  105. package/assets/plugin/live/live-balance-enricher.d.ts +0 -32
  106. package/assets/plugin/live/live-balance-enricher.js +0 -104
  107. package/assets/plugin/live/live-bracket-api.d.ts +0 -13
  108. package/assets/plugin/live/live-bracket-api.js +0 -20
  109. package/assets/plugin/live/live-state-store.d.ts +0 -194
  110. package/assets/plugin/live/live-state-store.js +0 -450
  111. package/assets/plugin/live/local-signal-service.d.ts +0 -57
  112. package/assets/plugin/live/local-signal-service.js +0 -151
  113. package/assets/plugin/live/local-strategy-evaluator.d.ts +0 -62
  114. package/assets/plugin/live/local-strategy-evaluator.js +0 -131
  115. package/assets/plugin/live/microstructure-assembler.d.ts +0 -54
  116. package/assets/plugin/live/microstructure-assembler.js +0 -148
  117. package/assets/plugin/live/order-poller.d.ts +0 -29
  118. package/assets/plugin/live/order-poller.js +0 -125
  119. package/assets/plugin/live/position-state-store.d.ts +0 -87
  120. package/assets/plugin/live/position-state-store.js +0 -237
  121. package/assets/plugin/live/proposal-decision-listener.d.ts +0 -70
  122. package/assets/plugin/live/proposal-decision-listener.js +0 -292
  123. package/assets/plugin/live/proposal-manager.d.ts +0 -76
  124. package/assets/plugin/live/proposal-manager.js +0 -140
  125. package/assets/plugin/live/rate-limiter.d.ts +0 -47
  126. package/assets/plugin/live/rate-limiter.js +0 -159
  127. package/assets/plugin/live/reconciler.d.ts +0 -39
  128. package/assets/plugin/live/reconciler.js +0 -175
  129. package/assets/plugin/live/setup-buckets.d.ts +0 -7
  130. package/assets/plugin/live/setup-buckets.js +0 -33
  131. package/assets/plugin/live/slippage-tracker.d.ts +0 -45
  132. package/assets/plugin/live/slippage-tracker.js +0 -78
  133. package/assets/plugin/live/stop-watcher.d.ts +0 -67
  134. package/assets/plugin/live/stop-watcher.js +0 -218
  135. package/assets/plugin/live/user-data-active-probe.d.ts +0 -54
  136. package/assets/plugin/live/user-data-active-probe.js +0 -180
  137. package/assets/plugin/live/user-data-stream-controller.d.ts +0 -200
  138. package/assets/plugin/live/user-data-stream-controller.js +0 -579
  139. package/assets/plugin/live/user-data-stream-ws.d.ts +0 -22
  140. package/assets/plugin/live/user-data-stream-ws.js +0 -63
  141. package/assets/plugin/live/user-data-stream.d.ts +0 -243
  142. package/assets/plugin/live/user-data-stream.js +0 -704
  143. package/assets/plugin/logger.d.ts +0 -2
  144. package/assets/plugin/logger.js +0 -2
  145. package/assets/plugin/mfe.d.ts +0 -21
  146. package/assets/plugin/mfe.js +0 -68
  147. package/assets/plugin/onboarding/mode-ladder.d.ts +0 -1
  148. package/assets/plugin/onboarding/mode-ladder.js +0 -3
  149. package/assets/plugin/onboarding/runtime.d.ts +0 -90
  150. package/assets/plugin/onboarding/runtime.js +0 -184
  151. package/assets/plugin/openclaw.plugin.json +0 -92
  152. package/assets/plugin/paper-adapter.d.ts +0 -24
  153. package/assets/plugin/paper-adapter.js +0 -91
  154. package/assets/plugin/persistence/state-manager.d.ts +0 -66
  155. package/assets/plugin/persistence/state-manager.js +0 -222
  156. package/assets/plugin/pinned-plan.d.ts +0 -9
  157. package/assets/plugin/pinned-plan.js +0 -23
  158. package/assets/plugin/portfolio/reentry-tracker.d.ts +0 -36
  159. package/assets/plugin/portfolio/reentry-tracker.js +0 -127
  160. package/assets/plugin/portfolio/wave9-admission.d.ts +0 -67
  161. package/assets/plugin/portfolio/wave9-admission.js +0 -262
  162. package/assets/plugin/portfolio/wave9-policy.d.ts +0 -36
  163. package/assets/plugin/portfolio/wave9-policy.js +0 -183
  164. package/assets/plugin/risk/pre-trade-check.d.ts +0 -38
  165. package/assets/plugin/risk/pre-trade-check.js +0 -345
  166. package/assets/plugin/risk/pre-trade-types.d.ts +0 -60
  167. package/assets/plugin/risk/pre-trade-types.js +0 -3
  168. package/assets/plugin/shadow/shadow-tracker.d.ts +0 -36
  169. package/assets/plugin/shadow/shadow-tracker.js +0 -151
  170. package/assets/plugin/shadow/types.d.ts +0 -42
  171. package/assets/plugin/shadow/types.js +0 -20
  172. package/assets/plugin/shared/indicators-extended.d.ts +0 -52
  173. package/assets/plugin/shared/indicators-extended.js +0 -291
  174. package/assets/plugin/shared/indicators.d.ts +0 -15
  175. package/assets/plugin/shared/indicators.js +0 -114
  176. package/assets/plugin/signals/conditions/registry.d.ts +0 -16
  177. package/assets/plugin/signals/conditions/registry.js +0 -1333
  178. package/assets/plugin/signals/conditions/types.d.ts +0 -1
  179. package/assets/plugin/signals/conditions/types.js +0 -4
  180. package/assets/plugin/signals/direction-rules.d.ts +0 -3
  181. package/assets/plugin/signals/direction-rules.js +0 -24
  182. package/assets/plugin/signals/entry-rules.d.ts +0 -6
  183. package/assets/plugin/signals/entry-rules.js +0 -33
  184. package/assets/plugin/signals/serialize-context.d.ts +0 -4
  185. package/assets/plugin/signals/serialize-context.js +0 -39
  186. package/assets/plugin/signals/stop-rules.d.ts +0 -3
  187. package/assets/plugin/signals/stop-rules.js +0 -48
  188. package/assets/plugin/signals/strategy-adapter.d.ts +0 -47
  189. package/assets/plugin/signals/strategy-adapter.js +0 -209
  190. package/assets/plugin/signals/types.d.ts +0 -1
  191. package/assets/plugin/signals/types.js +0 -8
  192. package/assets/plugin/simulator/exchange-simulator.d.ts +0 -105
  193. package/assets/plugin/simulator/exchange-simulator.js +0 -759
  194. package/assets/plugin/simulator/fill-engine.d.ts +0 -53
  195. package/assets/plugin/simulator/fill-engine.js +0 -280
  196. package/assets/plugin/simulator/paper-market-feed.d.ts +0 -26
  197. package/assets/plugin/simulator/paper-market-feed.js +0 -104
  198. package/assets/plugin/simulator/realistic-fills.d.ts +0 -59
  199. package/assets/plugin/simulator/realistic-fills.js +0 -175
  200. package/assets/plugin/simulator/types.d.ts +0 -228
  201. package/assets/plugin/simulator/types.js +0 -43
  202. package/assets/plugin/strategy/builtin-strategies.d.ts +0 -2
  203. package/assets/plugin/strategy/builtin-strategies.js +0 -113
  204. package/assets/plugin/strategy/condition-registry.d.ts +0 -3
  205. package/assets/plugin/strategy/condition-registry.js +0 -153
  206. package/assets/plugin/strategy/evaluator.d.ts +0 -70
  207. package/assets/plugin/strategy/evaluator.js +0 -98
  208. package/assets/plugin/tools/assessment-validation.d.ts +0 -141
  209. package/assets/plugin/tools/assessment-validation.js +0 -473
  210. package/assets/plugin/tools/attach-brackets.d.ts +0 -39
  211. package/assets/plugin/tools/attach-brackets.js +0 -564
  212. package/assets/plugin/tools/audit-bracket-protection.d.ts +0 -49
  213. package/assets/plugin/tools/audit-bracket-protection.js +0 -683
  214. package/assets/plugin/tools/bracket-control.d.ts +0 -12
  215. package/assets/plugin/tools/bracket-control.js +0 -35
  216. package/assets/plugin/tools/cancel-all-orders.d.ts +0 -9
  217. package/assets/plugin/tools/cancel-all-orders.js +0 -8
  218. package/assets/plugin/tools/cancel-order.d.ts +0 -14
  219. package/assets/plugin/tools/cancel-order.js +0 -60
  220. package/assets/plugin/tools/check-position-health.d.ts +0 -46
  221. package/assets/plugin/tools/check-position-health.js +0 -194
  222. package/assets/plugin/tools/clear-exchange-credentials.d.ts +0 -24
  223. package/assets/plugin/tools/clear-exchange-credentials.js +0 -70
  224. package/assets/plugin/tools/close-position.d.ts +0 -45
  225. package/assets/plugin/tools/close-position.js +0 -722
  226. package/assets/plugin/tools/create-order.d.ts +0 -82
  227. package/assets/plugin/tools/create-order.js +0 -1544
  228. package/assets/plugin/tools/exit-gate.d.ts +0 -58
  229. package/assets/plugin/tools/exit-gate.js +0 -162
  230. package/assets/plugin/tools/fetch-balance.d.ts +0 -5
  231. package/assets/plugin/tools/fetch-balance.js +0 -4
  232. package/assets/plugin/tools/fetch-ohlcv.d.ts +0 -11
  233. package/assets/plugin/tools/fetch-ohlcv.js +0 -8
  234. package/assets/plugin/tools/fetch-open-orders.d.ts +0 -7
  235. package/assets/plugin/tools/fetch-open-orders.js +0 -4
  236. package/assets/plugin/tools/fetch-positions.d.ts +0 -7
  237. package/assets/plugin/tools/fetch-positions.js +0 -4
  238. package/assets/plugin/tools/fetch-ticker.d.ts +0 -11
  239. package/assets/plugin/tools/fetch-ticker.js +0 -5
  240. package/assets/plugin/tools/get-agent-profile.d.ts +0 -4
  241. package/assets/plugin/tools/get-agent-profile.js +0 -6
  242. package/assets/plugin/tools/get-analytics.d.ts +0 -6
  243. package/assets/plugin/tools/get-analytics.js +0 -7
  244. package/assets/plugin/tools/get-backtest.d.ts +0 -12
  245. package/assets/plugin/tools/get-backtest.js +0 -91
  246. package/assets/plugin/tools/get-basis.d.ts +0 -7
  247. package/assets/plugin/tools/get-basis.js +0 -7
  248. package/assets/plugin/tools/get-bracket-config.d.ts +0 -11
  249. package/assets/plugin/tools/get-bracket-config.js +0 -24
  250. package/assets/plugin/tools/get-cascade-risk.d.ts +0 -7
  251. package/assets/plugin/tools/get-cascade-risk.js +0 -8
  252. package/assets/plugin/tools/get-crypto-metrics.d.ts +0 -18
  253. package/assets/plugin/tools/get-crypto-metrics.js +0 -62
  254. package/assets/plugin/tools/get-cvd.d.ts +0 -6
  255. package/assets/plugin/tools/get-cvd.js +0 -6
  256. package/assets/plugin/tools/get-divergences.d.ts +0 -6
  257. package/assets/plugin/tools/get-divergences.js +0 -6
  258. package/assets/plugin/tools/get-funding-context.d.ts +0 -6
  259. package/assets/plugin/tools/get-funding-context.js +0 -16
  260. package/assets/plugin/tools/get-liquidation-levels.d.ts +0 -7
  261. package/assets/plugin/tools/get-liquidation-levels.js +0 -7
  262. package/assets/plugin/tools/get-liquidation-pulse.d.ts +0 -9
  263. package/assets/plugin/tools/get-liquidation-pulse.js +0 -22
  264. package/assets/plugin/tools/get-market-breadth.d.ts +0 -6
  265. package/assets/plugin/tools/get-market-breadth.js +0 -8
  266. package/assets/plugin/tools/get-market-intel.d.ts +0 -19
  267. package/assets/plugin/tools/get-market-intel.js +0 -116
  268. package/assets/plugin/tools/get-market-structure.d.ts +0 -47
  269. package/assets/plugin/tools/get-market-structure.js +0 -198
  270. package/assets/plugin/tools/get-my-mined-patterns.d.ts +0 -20
  271. package/assets/plugin/tools/get-my-mined-patterns.js +0 -61
  272. package/assets/plugin/tools/get-my-proposed-learnings.d.ts +0 -20
  273. package/assets/plugin/tools/get-my-proposed-learnings.js +0 -55
  274. package/assets/plugin/tools/get-my-recent-reviews.d.ts +0 -22
  275. package/assets/plugin/tools/get-my-recent-reviews.js +0 -66
  276. package/assets/plugin/tools/get-orderbook.d.ts +0 -21
  277. package/assets/plugin/tools/get-orderbook.js +0 -32
  278. package/assets/plugin/tools/get-pattern-scan.d.ts +0 -7
  279. package/assets/plugin/tools/get-pattern-scan.js +0 -8
  280. package/assets/plugin/tools/get-regime.d.ts +0 -6
  281. package/assets/plugin/tools/get-regime.js +0 -7
  282. package/assets/plugin/tools/get-relevant-learnings.d.ts +0 -21
  283. package/assets/plugin/tools/get-relevant-learnings.js +0 -65
  284. package/assets/plugin/tools/get-resting-liquidity.d.ts +0 -6
  285. package/assets/plugin/tools/get-resting-liquidity.js +0 -11
  286. package/assets/plugin/tools/get-risk-scenario.d.ts +0 -29
  287. package/assets/plugin/tools/get-risk-scenario.js +0 -47
  288. package/assets/plugin/tools/get-risk-summary.d.ts +0 -51
  289. package/assets/plugin/tools/get-risk-summary.js +0 -118
  290. package/assets/plugin/tools/get-sentiment.d.ts +0 -4
  291. package/assets/plugin/tools/get-sentiment.js +0 -6
  292. package/assets/plugin/tools/get-session-review.d.ts +0 -7
  293. package/assets/plugin/tools/get-session-review.js +0 -8
  294. package/assets/plugin/tools/get-setup-detail.d.ts +0 -7
  295. package/assets/plugin/tools/get-setup-detail.js +0 -322
  296. package/assets/plugin/tools/get-signals.d.ts +0 -15
  297. package/assets/plugin/tools/get-signals.js +0 -54
  298. package/assets/plugin/tools/get-sizing.d.ts +0 -6
  299. package/assets/plugin/tools/get-sizing.js +0 -6
  300. package/assets/plugin/tools/get-trade-feedback.d.ts +0 -7
  301. package/assets/plugin/tools/get-trade-feedback.js +0 -8
  302. package/assets/plugin/tools/get-trade-flow.d.ts +0 -7
  303. package/assets/plugin/tools/get-trade-flow.js +0 -7
  304. package/assets/plugin/tools/get-volume-analysis.d.ts +0 -21
  305. package/assets/plugin/tools/get-volume-analysis.js +0 -74
  306. package/assets/plugin/tools/get-volume-profile.d.ts +0 -7
  307. package/assets/plugin/tools/get-volume-profile.js +0 -7
  308. package/assets/plugin/tools/get-wave9-status.d.ts +0 -127
  309. package/assets/plugin/tools/get-wave9-status.js +0 -796
  310. package/assets/plugin/tools/helpers.d.ts +0 -26
  311. package/assets/plugin/tools/helpers.js +0 -39
  312. package/assets/plugin/tools/intel-api.d.ts +0 -34
  313. package/assets/plugin/tools/intel-api.js +0 -119
  314. package/assets/plugin/tools/intel-cache.d.ts +0 -25
  315. package/assets/plugin/tools/intel-cache.js +0 -148
  316. package/assets/plugin/tools/list-strategies.d.ts +0 -17
  317. package/assets/plugin/tools/list-strategies.js +0 -23
  318. package/assets/plugin/tools/modify-stop.d.ts +0 -21
  319. package/assets/plugin/tools/modify-stop.js +0 -120
  320. package/assets/plugin/tools/modify-target.d.ts +0 -21
  321. package/assets/plugin/tools/modify-target.js +0 -110
  322. package/assets/plugin/tools/propose-learning.d.ts +0 -22
  323. package/assets/plugin/tools/propose-learning.js +0 -65
  324. package/assets/plugin/tools/query-review-outcomes.d.ts +0 -30
  325. package/assets/plugin/tools/query-review-outcomes.js +0 -64
  326. package/assets/plugin/tools/query-trades.d.ts +0 -21
  327. package/assets/plugin/tools/query-trades.js +0 -37
  328. package/assets/plugin/tools/record-position-reviews.d.ts +0 -38
  329. package/assets/plugin/tools/record-position-reviews.js +0 -147
  330. package/assets/plugin/tools/save-strategy.d.ts +0 -16
  331. package/assets/plugin/tools/save-strategy.js +0 -46
  332. package/assets/plugin/tools/scan-pairs.d.ts +0 -22
  333. package/assets/plugin/tools/scan-pairs.js +0 -234
  334. package/assets/plugin/tools/score-setup.d.ts +0 -31
  335. package/assets/plugin/tools/score-setup.js +0 -268
  336. package/assets/plugin/tools/set-bracket-requirement.d.ts +0 -18
  337. package/assets/plugin/tools/set-bracket-requirement.js +0 -81
  338. package/assets/plugin/tools/set-exchange-credentials.d.ts +0 -25
  339. package/assets/plugin/tools/set-exchange-credentials.js +0 -80
  340. package/assets/plugin/tools/set-trading-mode.d.ts +0 -26
  341. package/assets/plugin/tools/set-trading-mode.js +0 -135
  342. package/assets/plugin/tools/test-exchange-credentials.d.ts +0 -16
  343. package/assets/plugin/tools/test-exchange-credentials.js +0 -100
  344. package/assets/plugin/tools/toggle-strategy.d.ts +0 -8
  345. package/assets/plugin/tools/toggle-strategy.js +0 -15
  346. package/assets/plugin/trading-params-cache.d.ts +0 -26
  347. package/assets/plugin/trading-params-cache.js +0 -52
  348. package/assets/plugin/types.d.ts +0 -134
  349. package/assets/plugin/types.js +0 -7
  350. package/assets/plugin/util/plugin-paths.d.ts +0 -3
  351. package/assets/plugin/util/plugin-paths.js +0 -15
  352. package/assets/plugin/venues/hyperliquid/hl-balance.d.ts +0 -116
  353. package/assets/plugin/venues/hyperliquid/hl-balance.js +0 -145
  354. package/assets/plugin/venues/hyperliquid/hl-bracket-coordinator.d.ts +0 -123
  355. package/assets/plugin/venues/hyperliquid/hl-bracket-coordinator.js +0 -533
  356. package/assets/plugin/venues/hyperliquid/hl-brackets.d.ts +0 -102
  357. package/assets/plugin/venues/hyperliquid/hl-brackets.js +0 -172
  358. package/assets/plugin/venues/hyperliquid/hl-cloid.d.ts +0 -22
  359. package/assets/plugin/venues/hyperliquid/hl-cloid.js +0 -82
  360. package/assets/plugin/venues/hyperliquid/hl-info-cache.d.ts +0 -46
  361. package/assets/plugin/venues/hyperliquid/hl-info-cache.js +0 -125
  362. package/assets/plugin/venues/hyperliquid/hl-live-adapter.d.ts +0 -146
  363. package/assets/plugin/venues/hyperliquid/hl-live-adapter.js +0 -728
  364. package/assets/plugin/venues/hyperliquid/hl-precision.d.ts +0 -61
  365. package/assets/plugin/venues/hyperliquid/hl-precision.js +0 -176
  366. package/assets/plugin/venues/hyperliquid/hl-private.d.ts +0 -88
  367. package/assets/plugin/venues/hyperliquid/hl-private.js +0 -357
  368. package/assets/plugin/venues/hyperliquid/hl-public.d.ts +0 -79
  369. package/assets/plugin/venues/hyperliquid/hl-public.js +0 -436
  370. package/assets/plugin/venues/hyperliquid/hl-rate-gate.d.ts +0 -57
  371. package/assets/plugin/venues/hyperliquid/hl-rate-gate.js +0 -220
  372. package/assets/plugin/venues/hyperliquid/hl-user-stream.d.ts +0 -90
  373. package/assets/plugin/venues/hyperliquid/hl-user-stream.js +0 -220
  374. package/assets/plugin/venues/registry.d.ts +0 -38
  375. package/assets/plugin/venues/registry.js +0 -46
  376. package/assets/plugin/venues/symbols.d.ts +0 -43
  377. package/assets/plugin/venues/symbols.js +0 -107
  378. package/assets/plugin/wave9/live-account-capture.d.ts +0 -67
  379. package/assets/plugin/wave9/live-account-capture.js +0 -435
  380. package/assets/plugin/wave9/live-autonomous-protection.d.ts +0 -39
  381. package/assets/plugin/wave9/live-autonomous-protection.js +0 -112
  382. package/assets/plugin/wave9/live-durable-reconciliation-scheduler.d.ts +0 -33
  383. package/assets/plugin/wave9/live-durable-reconciliation-scheduler.js +0 -115
  384. package/assets/plugin/wave9/live-execution-ledger.d.ts +0 -107
  385. package/assets/plugin/wave9/live-execution-ledger.js +0 -498
  386. package/assets/plugin/wave9/live-position-confirmation.d.ts +0 -18
  387. package/assets/plugin/wave9/live-position-confirmation.js +0 -111
  388. package/assets/plugin/wave9/live-residual-protection.d.ts +0 -18
  389. package/assets/plugin/wave9/live-residual-protection.js +0 -250
  390. package/assets/plugin/wave9/live-startup-reconciliation.d.ts +0 -38
  391. package/assets/plugin/wave9/live-startup-reconciliation.js +0 -454
  392. package/assets/plugin/wave9/live-symbol-ownership.d.ts +0 -20
  393. package/assets/plugin/wave9/live-symbol-ownership.js +0 -132
  394. package/assets/plugin/wave9/paper-admission-guard.d.ts +0 -199
  395. package/assets/plugin/wave9/paper-admission-guard.js +0 -650
  396. package/assets/plugin/wave9/usdm-evidence-provider.d.ts +0 -42
  397. package/assets/plugin/wave9/usdm-evidence-provider.js +0 -133
@@ -1,262 +0,0 @@
1
- // ⚠️ GENERATED FILE — DO NOT EDIT.
2
- // Canonical source of truth: shared/src/portfolio/wave9-admission.ts
3
- // Regenerate: node scripts/sync-shared-code.mjs (enforced by shared-code-sync.test.ts)
4
- //
5
- // This copy exists because this package builds with tsc and deploys as a
6
- // self-contained tree that strips workspace deps, so it cannot import
7
- // @reefclaw/shared runtime code across the deploy boundary.
8
- import { WAVE9_LONG_STRATEGY, WAVE9_STRATEGY_PRIORITY, WAVE9_SYMBOL_PRIORITY, } from './wave9-policy.js';
9
- export const WAVE9_ADMISSION_POLICY = Object.freeze({
10
- riskPct: 0.5,
11
- maxPositions: 4,
12
- maxOpenRiskPct: 2,
13
- maxGrossExposureMultiple: 1.5,
14
- maxPositionUsd: 10_000,
15
- feeBps: 5,
16
- slippageBps: 10,
17
- capEnforcement: 'admission_only_no_forced_deleveraging',
18
- riskMeasure: 'fixed_initial_stop_risk_usd',
19
- });
20
- function finitePositive(value) {
21
- return Number.isFinite(value) && value > 0;
22
- }
23
- function nearlyEqual(left, right) {
24
- return Math.abs(left - right) <= 1e-9 * Math.max(1, Math.abs(left), Math.abs(right));
25
- }
26
- function validatePolicy(policy) {
27
- for (const [label, value] of Object.entries({
28
- riskPct: policy.riskPct,
29
- maxOpenRiskPct: policy.maxOpenRiskPct,
30
- maxGrossExposureMultiple: policy.maxGrossExposureMultiple,
31
- maxPositionUsd: policy.maxPositionUsd,
32
- })) {
33
- if (!finitePositive(value))
34
- throw new Error(`${label} must be positive and finite`);
35
- }
36
- if (!Number.isInteger(policy.maxPositions) || policy.maxPositions <= 0) {
37
- throw new Error('maxPositions must be a positive integer');
38
- }
39
- for (const [label, value] of Object.entries({
40
- feeBps: policy.feeBps,
41
- slippageBps: policy.slippageBps,
42
- })) {
43
- if (!Number.isFinite(value) || value < 0) {
44
- throw new Error(`${label} must be finite and non-negative`);
45
- }
46
- }
47
- if (policy.capEnforcement !== 'admission_only_no_forced_deleveraging'
48
- || policy.riskMeasure !== 'fixed_initial_stop_risk_usd') {
49
- throw new Error('unsupported Wave 9 admission policy semantics');
50
- }
51
- }
52
- function rank(value, values, label) {
53
- const result = values.indexOf(value);
54
- if (result < 0)
55
- throw new Error(`${label} is not in the frozen Wave 9 priority`);
56
- return result;
57
- }
58
- function validateCandidateIdentity(id, eventTime, symbol, strategy, direction) {
59
- const eventMs = Date.parse(eventTime);
60
- if (!Number.isFinite(eventMs) || new Date(eventMs).toISOString() !== eventTime) {
61
- throw new Error('candidate eventTime must be a canonical ISO timestamp');
62
- }
63
- const expectedId = `${eventTime}|${symbol}|${strategy}|${direction}`;
64
- if (id !== expectedId) {
65
- throw new Error(`candidate ID does not match its frozen identity: ${id}`);
66
- }
67
- }
68
- function copyPosition(position) {
69
- return { ...position };
70
- }
71
- function ledgerFor(positions, policy) {
72
- const exitCostRate = (policy.feeBps + policy.slippageBps) / 10_000;
73
- return positions.map((position) => ({
74
- ...copyPosition(position),
75
- estimatedExitCostUsd: position.markPrice * position.quantity * exitCostRate,
76
- }));
77
- }
78
- function summarize(cashEquityUsd, ledger) {
79
- let unrealized = 0;
80
- let funding = 0;
81
- let exitCosts = 0;
82
- let gross = 0;
83
- let risk = 0;
84
- for (const row of ledger) {
85
- unrealized += row.direction === 'LONG'
86
- ? (row.markPrice - row.entryPrice) * row.quantity
87
- : (row.entryPrice - row.markPrice) * row.quantity;
88
- funding += row.accruedFundingUsd;
89
- exitCosts += row.estimatedExitCostUsd;
90
- gross += Math.abs(row.markPrice * row.quantity);
91
- risk += row.dollarRiskUsd;
92
- }
93
- return { equity: cashEquityUsd + unrealized - funding - exitCosts, gross, risk };
94
- }
95
- /**
96
- * Apply a same-event candidate batch in the exact frozen priority. The caller
97
- * must release stops and completed-daily reversals before invoking this
98
- * function, just as the chronological research engine does.
99
- */
100
- export function applyWave9AdmissionBatch(inputState, rawCandidates, policy = WAVE9_ADMISSION_POLICY) {
101
- validatePolicy(policy);
102
- if (!Number.isFinite(inputState.cashEquityUsd)) {
103
- throw new Error('cashEquityUsd must be finite');
104
- }
105
- const positions = inputState.positions.map(copyPosition);
106
- const ids = new Set();
107
- for (const position of positions) {
108
- if (ids.has(position.candidateId))
109
- throw new Error('open candidate IDs must be unique');
110
- ids.add(position.candidateId);
111
- rank(position.symbol, WAVE9_SYMBOL_PRIORITY, 'open-position symbol');
112
- rank(position.strategy, WAVE9_STRATEGY_PRIORITY, 'open-position strategy');
113
- const identity = position.candidateId.split('|');
114
- if (identity.length !== 4) {
115
- throw new Error(`open-position candidate ID is malformed: ${position.candidateId}`);
116
- }
117
- validateCandidateIdentity(position.candidateId, identity[0], position.symbol, position.strategy, position.direction);
118
- if (!finitePositive(position.entryPrice)
119
- || !finitePositive(position.quantity)
120
- || !finitePositive(position.markPrice)
121
- || !finitePositive(position.initialStop)
122
- || !Number.isFinite(position.dollarRiskUsd)
123
- || position.dollarRiskUsd < 0
124
- || !Number.isFinite(position.accruedFundingUsd)) {
125
- throw new Error(`invalid open position ${position.candidateId}`);
126
- }
127
- const expectedDirection = position.strategy === WAVE9_LONG_STRATEGY ? 'LONG' : 'SHORT';
128
- const geometryValid = position.direction === expectedDirection
129
- && (position.direction === 'LONG'
130
- ? position.initialStop < position.entryPrice
131
- : position.initialStop > position.entryPrice);
132
- if (!geometryValid) {
133
- throw new Error(`invalid open-position geometry ${position.candidateId}`);
134
- }
135
- const expectedRisk = Math.abs(position.entryPrice - position.initialStop)
136
- * position.quantity;
137
- if (!nearlyEqual(position.dollarRiskUsd, expectedRisk)) {
138
- throw new Error(`open-position risk mismatch ${position.candidateId}`);
139
- }
140
- }
141
- if (new Set(positions.map((position) => position.symbol)).size !== positions.length) {
142
- throw new Error('Wave 9 allows at most one open position per symbol');
143
- }
144
- const candidates = rawCandidates.map((candidate) => ({ ...candidate }));
145
- const candidateIds = new Set();
146
- let batchEventTime;
147
- for (const candidate of candidates) {
148
- if (candidateIds.has(candidate.id))
149
- throw new Error('candidate IDs must be unique');
150
- candidateIds.add(candidate.id);
151
- validateCandidateIdentity(candidate.id, candidate.eventTime, candidate.symbol, candidate.strategy, candidate.direction);
152
- if (batchEventTime === undefined)
153
- batchEventTime = candidate.eventTime;
154
- if (candidate.eventTime !== batchEventTime) {
155
- throw new Error('a Wave 9 admission batch must contain exactly one eventTime');
156
- }
157
- rank(candidate.symbol, WAVE9_SYMBOL_PRIORITY, 'candidate symbol');
158
- rank(candidate.strategy, WAVE9_STRATEGY_PRIORITY, 'candidate strategy');
159
- }
160
- candidates.sort((left, right) => rank(left.symbol, WAVE9_SYMBOL_PRIORITY, 'candidate symbol')
161
- - rank(right.symbol, WAVE9_SYMBOL_PRIORITY, 'candidate symbol')
162
- || rank(left.strategy, WAVE9_STRATEGY_PRIORITY, 'candidate strategy')
163
- - rank(right.strategy, WAVE9_STRATEGY_PRIORITY, 'candidate strategy')
164
- || left.id.localeCompare(right.id));
165
- let cashEquityUsd = inputState.cashEquityUsd;
166
- const decisions = [];
167
- const feeRate = policy.feeBps / 10_000;
168
- const slippageRate = policy.slippageBps / 10_000;
169
- for (const candidate of candidates) {
170
- const decision = {
171
- ...candidate,
172
- accepted: false,
173
- reason: 'invalidSizing',
174
- };
175
- const expectedDirection = candidate.strategy === WAVE9_LONG_STRATEGY ? 'LONG' : 'SHORT';
176
- if (candidate.direction !== expectedDirection
177
- || !finitePositive(candidate.referencePrice)
178
- || !finitePositive(candidate.stopPrice)) {
179
- decision.reason = 'invalidGeometry';
180
- decisions.push(decision);
181
- continue;
182
- }
183
- const entryPrice = candidate.direction === 'LONG'
184
- ? candidate.referencePrice * (1 + slippageRate)
185
- : candidate.referencePrice * (1 - slippageRate);
186
- decision.entryPrice = entryPrice;
187
- if ((candidate.direction === 'LONG' && candidate.stopPrice >= entryPrice)
188
- || (candidate.direction === 'SHORT' && candidate.stopPrice <= entryPrice)) {
189
- decision.reason = 'invalidGeometry';
190
- decisions.push(decision);
191
- continue;
192
- }
193
- if (positions.some((position) => position.symbol === candidate.symbol)) {
194
- decision.reason = 'symbolAlreadyOpen';
195
- decisions.push(decision);
196
- continue;
197
- }
198
- if (positions.length >= policy.maxPositions) {
199
- decision.reason = 'maxPositions';
200
- decisions.push(decision);
201
- continue;
202
- }
203
- const current = summarize(cashEquityUsd, ledgerFor(positions, policy));
204
- const riskPerUnit = Math.abs(entryPrice - candidate.stopPrice);
205
- const riskBudget = current.equity * policy.riskPct / 100;
206
- const quantity = Math.min(riskBudget / riskPerUnit, policy.maxPositionUsd / entryPrice);
207
- const notionalUsd = quantity * entryPrice;
208
- const riskUsd = quantity * riskPerUnit;
209
- Object.assign(decision, { quantity, notionalUsd, riskUsd });
210
- if (!finitePositive(quantity) || current.equity <= 0) {
211
- decision.reason = 'invalidSizing';
212
- decisions.push(decision);
213
- continue;
214
- }
215
- const position = {
216
- candidateId: candidate.id,
217
- symbol: candidate.symbol,
218
- strategy: candidate.strategy,
219
- direction: candidate.direction,
220
- entryPrice,
221
- quantity,
222
- markPrice: candidate.referencePrice,
223
- initialStop: candidate.stopPrice,
224
- dollarRiskUsd: riskUsd,
225
- accruedFundingUsd: 0,
226
- };
227
- const projectedPositions = [...positions, position];
228
- const projectedCash = cashEquityUsd - notionalUsd * feeRate;
229
- const projectedLedger = ledgerFor(projectedPositions, policy);
230
- const projected = summarize(projectedCash, projectedLedger);
231
- Object.assign(decision, {
232
- projectedCashEquityUsd: projectedCash,
233
- projectedLiquidationEquityUsd: projected.equity,
234
- projectedGrossExposureUsd: projected.gross,
235
- projectedOpenRiskUsd: projected.risk,
236
- projectedOpenPositions: projectedPositions.length,
237
- projectedPositionLedger: projectedLedger,
238
- });
239
- if (projected.equity <= 0) {
240
- decision.reason = 'invalidSizing';
241
- }
242
- else if (projected.gross
243
- > projected.equity * policy.maxGrossExposureMultiple + 1e-9) {
244
- decision.reason = 'maxGrossExposure';
245
- }
246
- else if (projected.risk
247
- > projected.equity * policy.maxOpenRiskPct / 100 + 1e-9) {
248
- decision.reason = 'maxOpenRisk';
249
- }
250
- else {
251
- decision.accepted = true;
252
- decision.reason = 'accepted';
253
- cashEquityUsd = projectedCash;
254
- positions.push(position);
255
- }
256
- decisions.push(decision);
257
- }
258
- return {
259
- decisions,
260
- state: { cashEquityUsd, positions: positions.map(copyPosition) },
261
- };
262
- }
@@ -1,36 +0,0 @@
1
- import type { Direction, OhlcvBar } from '../signals/types.js';
2
- export declare const DAY_MS: number;
3
- export declare const WAVE9_LOOKBACK_DAYS = 28;
4
- export declare const WAVE9_ATR_PERIOD = 14;
5
- export declare const WAVE9_ATR_MULTIPLE = 3;
6
- export declare const WAVE9_CONTEXT_BARS = 250;
7
- export declare const WAVE9_LONG_STRATEGY = "tsmom_28d_long_flat_reversal_1d";
8
- export declare const WAVE9_SHORT_STRATEGY = "tsmom_28d_short_flat_reversal_1d";
9
- export type Wave9StrategyName = typeof WAVE9_LONG_STRATEGY | typeof WAVE9_SHORT_STRATEGY;
10
- export declare const WAVE9_SYMBOL_PRIORITY: readonly ["BTCUSDT", "ETHUSDT", "SOLUSDT", "BNBUSDT", "XRPUSDT", "DOGEUSDT", "ADAUSDT", "LINKUSDT"];
11
- export declare const WAVE9_STRATEGY_PRIORITY: readonly ["tsmom_28d_long_flat_reversal_1d", "tsmom_28d_short_flat_reversal_1d"];
12
- export interface Wave9EntrySignal {
13
- strategy: Wave9StrategyName;
14
- direction: Direction;
15
- stopPrice: number;
16
- }
17
- export interface Wave9DailyDecision {
18
- eventTime: string;
19
- completedDailyOpen: string;
20
- currentReturn: number;
21
- previousReturn: number;
22
- atr14: number;
23
- referencePrice: number;
24
- entries: Wave9EntrySignal[];
25
- exitLong: boolean;
26
- exitShort: boolean;
27
- sourceBarCount: number;
28
- }
29
- /**
30
- * Return the exact completed-daily context visible at a UTC daily boundary.
31
- * The function is intentionally fail-closed: unordered, duplicated, gapped,
32
- * non-UTC, or stale candles are rejected rather than silently repaired.
33
- */
34
- export declare function completedDailyContext(rawBars: readonly OhlcvBar[], eventTime: Date): OhlcvBar[];
35
- /** Evaluate the exact Wave 9 entry-transition and signal-reversal semantics. */
36
- export declare function evaluateWave9Daily(rawBars: readonly OhlcvBar[], eventTime: Date): Wave9DailyDecision;
@@ -1,183 +0,0 @@
1
- // ⚠️ GENERATED FILE — DO NOT EDIT.
2
- // Canonical source of truth: shared/src/portfolio/wave9-policy.ts
3
- // Regenerate: node scripts/sync-shared-code.mjs (enforced by shared-code-sync.test.ts)
4
- //
5
- // This copy exists because this package builds with tsc and deploys as a
6
- // self-contained tree that strips workspace deps, so it cannot import
7
- // @reefclaw/shared runtime code across the deploy boundary.
8
- // Canonical frozen Wave 9 daily signal policy used by the default-off runtime parity
9
- // observer. This deliberately calls the same generated condition registry and
10
- // ATR implementation as the intelligence backtest instead of reimplementing
11
- // momentum semantics in the plugin.
12
- import { computeATR } from '../shared/indicators.js';
13
- import { evaluateConditions } from '../signals/conditions/registry.js';
14
- export const DAY_MS = 24 * 60 * 60 * 1_000;
15
- export const WAVE9_LOOKBACK_DAYS = 28;
16
- export const WAVE9_ATR_PERIOD = 14;
17
- export const WAVE9_ATR_MULTIPLE = 3;
18
- export const WAVE9_CONTEXT_BARS = 250;
19
- export const WAVE9_LONG_STRATEGY = 'tsmom_28d_long_flat_reversal_1d';
20
- export const WAVE9_SHORT_STRATEGY = 'tsmom_28d_short_flat_reversal_1d';
21
- export const WAVE9_SYMBOL_PRIORITY = [
22
- 'BTCUSDT',
23
- 'ETHUSDT',
24
- 'SOLUSDT',
25
- 'BNBUSDT',
26
- 'XRPUSDT',
27
- 'DOGEUSDT',
28
- 'ADAUSDT',
29
- 'LINKUSDT',
30
- ];
31
- export const WAVE9_STRATEGY_PRIORITY = [
32
- WAVE9_LONG_STRATEGY,
33
- WAVE9_SHORT_STRATEGY,
34
- ];
35
- function requireFinitePositive(value, label) {
36
- if (!Number.isFinite(value) || value <= 0) {
37
- throw new Error(`${label} must be a positive finite number`);
38
- }
39
- }
40
- /**
41
- * Return the exact completed-daily context visible at a UTC daily boundary.
42
- * The function is intentionally fail-closed: unordered, duplicated, gapped,
43
- * non-UTC, or stale candles are rejected rather than silently repaired.
44
- */
45
- export function completedDailyContext(rawBars, eventTime) {
46
- const eventMs = eventTime.getTime();
47
- if (!Number.isFinite(eventMs) || eventMs % DAY_MS !== 0) {
48
- throw new Error('Wave 9 evaluation time must be a finite UTC daily boundary');
49
- }
50
- let previous = Number.NEGATIVE_INFINITY;
51
- for (const [index, bar] of rawBars.entries()) {
52
- const time = bar.time.getTime();
53
- if (!Number.isFinite(time) || time % DAY_MS !== 0) {
54
- throw new Error(`daily bar ${index} is not aligned to UTC midnight`);
55
- }
56
- if (time <= previous) {
57
- throw new Error('daily bars must be strictly chronological and unique');
58
- }
59
- previous = time;
60
- requireFinitePositive(bar.open, `daily bar ${index} open`);
61
- requireFinitePositive(bar.high, `daily bar ${index} high`);
62
- requireFinitePositive(bar.low, `daily bar ${index} low`);
63
- requireFinitePositive(bar.close, `daily bar ${index} close`);
64
- if (!Number.isFinite(bar.volume) || bar.volume < 0) {
65
- throw new Error(`daily bar ${index} volume must be finite and non-negative`);
66
- }
67
- if (bar.high < Math.max(bar.open, bar.close) || bar.low > Math.min(bar.open, bar.close)) {
68
- throw new Error(`daily bar ${index} has invalid OHLC geometry`);
69
- }
70
- }
71
- const completed = rawBars
72
- .filter((bar) => bar.time.getTime() + DAY_MS <= eventMs)
73
- .slice(-WAVE9_CONTEXT_BARS);
74
- if (completed.length <= WAVE9_LOOKBACK_DAYS + 1) {
75
- throw new Error(`Wave 9 requires at least ${WAVE9_LOOKBACK_DAYS + 2} completed daily bars`);
76
- }
77
- const expectedLastOpen = eventMs - DAY_MS;
78
- const lastOpen = completed[completed.length - 1].time.getTime();
79
- if (lastOpen !== expectedLastOpen) {
80
- throw new Error(`latest completed daily bar must open at ${new Date(expectedLastOpen).toISOString()}`);
81
- }
82
- for (let index = 1; index < completed.length; index++) {
83
- const prior = completed[index - 1].time.getTime();
84
- const current = completed[index].time.getTime();
85
- if (current - prior !== DAY_MS) {
86
- throw new Error(`daily history has a gap between ${completed[index - 1].time.toISOString()} and ${completed[index].time.toISOString()}`);
87
- }
88
- }
89
- return completed.map((bar) => ({ ...bar, time: new Date(bar.time) }));
90
- }
91
- function makeContext(bars, atr14) {
92
- const latest = bars[bars.length - 1];
93
- return {
94
- symbol: 'WAVE9',
95
- timestamp: new Date(latest.time.getTime() + DAY_MS),
96
- ohlcv1h: bars,
97
- ohlcv5m: [],
98
- ohlcv4h: [],
99
- ohlcv1d: bars,
100
- currentPrice: latest.close,
101
- atr14,
102
- obImbalance: 0.5,
103
- fundingRates: [],
104
- fundingMean: 0,
105
- fundingStd: 0.0001,
106
- oiValues: [],
107
- liqNearEntry: 0,
108
- tradeFlow: [],
109
- regime: 'UNKNOWN',
110
- regimeConfidence: 0,
111
- };
112
- }
113
- function conditionMet(context, type, params, direction) {
114
- const result = evaluateConditions([{ type, params }], context, direction);
115
- if (result.conditions.length !== 1 || result.conditions[0].name !== type) {
116
- throw new Error(`canonical condition registry did not evaluate ${type}`);
117
- }
118
- return result.conditions[0].met;
119
- }
120
- /** Evaluate the exact Wave 9 entry-transition and signal-reversal semantics. */
121
- export function evaluateWave9Daily(rawBars, eventTime) {
122
- const bars = completedDailyContext(rawBars, eventTime);
123
- const highs = bars.map((bar) => bar.high);
124
- const lows = bars.map((bar) => bar.low);
125
- const closes = bars.map((bar) => bar.close);
126
- const atr14 = computeATR(highs, lows, closes, WAVE9_ATR_PERIOD);
127
- requireFinitePositive(atr14, 'Wave 9 daily ATR(14)');
128
- const context = makeContext(bars, atr14);
129
- const currentClose = closes[closes.length - 1];
130
- const currentPrior = closes[closes.length - 1 - WAVE9_LOOKBACK_DAYS];
131
- const previousClose = closes[closes.length - 2];
132
- const previousPrior = closes[closes.length - 2 - WAVE9_LOOKBACK_DAYS];
133
- const currentReturn = (currentClose - currentPrior) / currentPrior;
134
- const previousReturn = (previousClose - previousPrior) / previousPrior;
135
- if (!Number.isFinite(currentReturn) || !Number.isFinite(previousReturn)) {
136
- throw new Error('Wave 9 momentum inputs are not finite');
137
- }
138
- const longEntry = conditionMet(context, 'return_momentum_zero_cross', { tfHours: 24, lookback: WAVE9_LOOKBACK_DAYS, dirSign: 1 }, 'LONG');
139
- const shortEntry = conditionMet(context, 'return_momentum_zero_cross', { tfHours: 24, lookback: WAVE9_LOOKBACK_DAYS, dirSign: -1 }, 'SHORT');
140
- const exitLong = conditionMet(context, 'return_momentum', {
141
- tfHours: 24,
142
- lookback: WAVE9_LOOKBACK_DAYS,
143
- minReturnPct: 0,
144
- maxAbsReturnPct: 0,
145
- dirSign: -1,
146
- mode: 1,
147
- }, 'SHORT');
148
- const exitShort = conditionMet(context, 'return_momentum', {
149
- tfHours: 24,
150
- lookback: WAVE9_LOOKBACK_DAYS,
151
- minReturnPct: 0,
152
- maxAbsReturnPct: 0,
153
- dirSign: 1,
154
- mode: 1,
155
- }, 'LONG');
156
- const entries = [];
157
- if (longEntry) {
158
- entries.push({
159
- strategy: WAVE9_LONG_STRATEGY,
160
- direction: 'LONG',
161
- stopPrice: currentClose - atr14 * WAVE9_ATR_MULTIPLE,
162
- });
163
- }
164
- if (shortEntry) {
165
- entries.push({
166
- strategy: WAVE9_SHORT_STRATEGY,
167
- direction: 'SHORT',
168
- stopPrice: currentClose + atr14 * WAVE9_ATR_MULTIPLE,
169
- });
170
- }
171
- return {
172
- eventTime: eventTime.toISOString(),
173
- completedDailyOpen: bars[bars.length - 1].time.toISOString(),
174
- currentReturn,
175
- previousReturn,
176
- atr14,
177
- referencePrice: currentClose,
178
- entries,
179
- exitLong,
180
- exitShort,
181
- sourceBarCount: bars.length,
182
- };
183
- }
@@ -1,38 +0,0 @@
1
- import type { DrawdownZone, PreTradeRiskLimits, PreTradeResult, ProposedOrder, PortfolioSnapshot, PreTradeOptions } from './pre-trade-types.js';
2
- export declare function getDefaultPreTradeLimits(): PreTradeRiskLimits;
3
- /** @deprecated Use getDefaultPreTradeLimits() for dynamic values */
4
- export declare const DEFAULT_PRE_TRADE_LIMITS: PreTradeRiskLimits;
5
- export declare function getDrawdownThresholds(): {
6
- YELLOW: number;
7
- ORANGE: number;
8
- RED: number;
9
- };
10
- export declare const DRAWDOWN_ZONE_THRESHOLDS: {
11
- readonly YELLOW: -0.01;
12
- readonly ORANGE: -0.02;
13
- readonly RED: -0.025;
14
- };
15
- /** Determine drawdown zone from drawdown ratio (e.g. -0.015 = -1.5%). */
16
- export declare function getDrawdownZone(drawdownRatio: number): DrawdownZone;
17
- /** Compute volatility factor from current ATR vs baseline. Clamped [0.5, 3.0]. */
18
- export declare function computeVolFactor(currentAtr: number, baselineAtr: number): number;
19
- /** Adjust a limit value by volatility factor. Higher vol = tighter limit. */
20
- export declare function adjustLimitByVol(defaultLimit: number, volFactor: number): number;
21
- /** Check if an order is closing an existing position (partial or full). */
22
- export declare function isClosingOrder(order: ProposedOrder, positions: PortfolioSnapshot['positions']): boolean;
23
- export declare const EQUITY_FLOOR: {
24
- /** Max single-position notional as a fraction of equity.
25
- * Raised 0.25 → 0.40 on 2026-04-20 so small live accounts ($186) can fit
26
- * BTC's ~$75 min-lot. Still protects against all-in entries. Tracked for
27
- * promotion to operator-configurable trading param in the next session. */
28
- readonly MAX_POSITION_PCT: 0.4;
29
- /** Max per-trade risk (expected loss) as a fraction of equity. */
30
- readonly MAX_PER_TRADE_LOSS_PCT: 0.02;
31
- /** Presumed adverse move when an order has no explicit stopPrice. */
32
- readonly NO_STOP_ASSUMED_ADVERSE: 0.05;
33
- };
34
- export declare function preTradeRiskCheck(order: ProposedOrder, portfolio: PortfolioSnapshot, limits?: PreTradeRiskLimits, options?: PreTradeOptions): PreTradeResult;
35
- /** Count consecutive losses from the end of a trade history array. */
36
- export declare function computeConsecutiveLosses(trades: Array<{
37
- realizedPnl: number;
38
- }>): number;