dexterm-cli 0.1.5 → 0.1.7

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 (379) hide show
  1. package/dist/packages/agents/src/index.js +2 -0
  2. package/dist/packages/agents/src/schema.js +22 -1
  3. package/dist/packages/agents/src/spectator.js +54 -0
  4. package/dist/packages/agents/src/story.js +532 -0
  5. package/dist/packages/agents/src/tiers.js +28 -2
  6. package/dist/packages/agents/src/tools.js +31 -2
  7. package/dist/packages/autotrade/assets/exit-profile.schema.json +492 -0
  8. package/dist/packages/autotrade/assets/profiles/moonbag.json +46 -0
  9. package/dist/packages/autotrade/assets/profiles/runner.json +88 -0
  10. package/dist/packages/autotrade/assets/profiles/scalp.json +88 -0
  11. package/dist/packages/autotrade/assets/profiles/swing.json +88 -0
  12. package/dist/packages/autotrade/assets/strategies/moonbag.json +101 -0
  13. package/dist/packages/autotrade/assets/strategies/runner.json +101 -0
  14. package/dist/packages/autotrade/assets/strategies/sample-dip-ladder.json +188 -0
  15. package/dist/packages/autotrade/assets/strategies/scalp.json +98 -0
  16. package/dist/packages/autotrade/assets/strategies/swing.json +97 -0
  17. package/dist/packages/autotrade/assets/strategies/yolo.json +157 -0
  18. package/dist/packages/autotrade/assets/tapes/yolo-rehearsal.json +1 -0
  19. package/dist/packages/autotrade/src/account.js +74 -0
  20. package/dist/packages/autotrade/src/backtest.js +357 -0
  21. package/dist/packages/autotrade/src/basis-text.js +32 -0
  22. package/dist/packages/autotrade/src/chat/approvals.js +484 -0
  23. package/dist/packages/autotrade/src/chat/audit.js +140 -0
  24. package/dist/packages/autotrade/src/chat/config.js +93 -0
  25. package/dist/packages/autotrade/src/chat/connector.js +24 -0
  26. package/dist/packages/autotrade/src/chat/control.js +103 -0
  27. package/dist/packages/autotrade/src/chat/fake.js +100 -0
  28. package/dist/packages/autotrade/src/chat/format.js +71 -0
  29. package/dist/packages/autotrade/src/chat/hub.js +187 -0
  30. package/dist/packages/autotrade/src/chat/index.js +18 -0
  31. package/dist/packages/autotrade/src/chat/notify.js +292 -0
  32. package/dist/packages/autotrade/src/chat/pairing.js +46 -0
  33. package/dist/packages/autotrade/src/chat/redact.js +48 -0
  34. package/dist/packages/autotrade/src/chat/secrets.js +99 -0
  35. package/dist/packages/autotrade/src/chat/service.js +248 -0
  36. package/dist/packages/autotrade/src/chat/telegram.js +290 -0
  37. package/dist/packages/autotrade/src/desk-executor.js +188 -0
  38. package/dist/packages/autotrade/src/engine.js +387 -0
  39. package/dist/packages/autotrade/src/execution-port.js +97 -0
  40. package/dist/packages/autotrade/src/fleet-config.js +169 -0
  41. package/dist/packages/autotrade/src/fleet-control.js +276 -0
  42. package/dist/packages/autotrade/src/fleet.js +639 -0
  43. package/dist/packages/autotrade/src/index.js +53 -0
  44. package/dist/packages/autotrade/src/ledger.js +108 -0
  45. package/dist/packages/autotrade/src/live-source.js +182 -0
  46. package/dist/packages/autotrade/src/monitor-daemon.js +715 -0
  47. package/dist/packages/autotrade/src/monitor.js +190 -0
  48. package/dist/packages/autotrade/src/ollama-sessions.js +137 -0
  49. package/dist/packages/autotrade/src/paper-accounts.js +72 -0
  50. package/dist/packages/autotrade/src/replay.js +198 -0
  51. package/dist/packages/autotrade/src/runner-config.js +99 -0
  52. package/dist/packages/autotrade/src/runner.js +872 -0
  53. package/dist/packages/autotrade/src/safety.js +243 -0
  54. package/dist/packages/autotrade/src/session.js +269 -0
  55. package/dist/packages/autotrade/src/sessions.js +503 -0
  56. package/dist/packages/autotrade/src/store.js +250 -0
  57. package/dist/packages/autotrade/src/strategy.js +256 -0
  58. package/dist/packages/autotrade/src/trade-ledger.js +241 -0
  59. package/dist/packages/autotrade/src/yolo.js +140 -0
  60. package/dist/packages/cli/assets/claude/analyst-system.md +4 -4
  61. package/dist/packages/cli/assets/claude/plugin/skills/REGISTRY.json +1 -1
  62. package/dist/packages/cli/assets/claude/plugin/skills/larp-check/SKILL.md +15 -8
  63. package/dist/packages/cli/assets/claude/plugin/skills/token-dossier/SKILL.md +1 -1
  64. package/dist/packages/cli/src/agent-cmd.js +6 -4
  65. package/dist/packages/cli/src/agent-spectator.js +17 -1
  66. package/dist/packages/cli/src/ai-cmd.js +412 -0
  67. package/dist/packages/cli/src/analyst/backend.js +105 -15
  68. package/dist/packages/cli/src/analyst/codex.js +14 -9
  69. package/dist/packages/cli/src/analyst/larp-gauge.js +60 -0
  70. package/dist/packages/cli/src/analyst/ollama.js +263 -0
  71. package/dist/packages/cli/src/analyst/session.js +17 -3
  72. package/dist/packages/cli/src/app-help-gen.js +51 -15
  73. package/dist/packages/cli/src/autotrade-cmd/audit.js +57 -0
  74. package/dist/packages/cli/src/autotrade-cmd/backtest.js +199 -0
  75. package/dist/packages/cli/src/autotrade-cmd/flatten.js +64 -0
  76. package/dist/packages/cli/src/autotrade-cmd/fleet.js +397 -0
  77. package/dist/packages/cli/src/autotrade-cmd/requests.js +79 -0
  78. package/dist/packages/cli/src/autotrade-cmd/run.js +413 -0
  79. package/dist/packages/cli/src/autotrade-cmd/stop.js +76 -0
  80. package/dist/packages/cli/src/autotrade-cmd/strategies.js +198 -0
  81. package/dist/packages/cli/src/autotrade-cmd/strategy-control.js +174 -0
  82. package/dist/packages/cli/src/autotrade-cmd/telegram-host.js +101 -0
  83. package/dist/packages/cli/src/autotrade-cmd.js +168 -0
  84. package/dist/packages/cli/src/backtest-cmd.js +13 -2
  85. package/dist/packages/cli/src/display.js +208 -23
  86. package/dist/packages/cli/src/doctor.js +62 -3
  87. package/dist/packages/cli/src/export.js +10 -2
  88. package/dist/packages/cli/src/index.js +1 -1
  89. package/dist/packages/cli/src/ledger-cmd.js +288 -0
  90. package/dist/packages/cli/src/live/chart-fills.js +46 -0
  91. package/dist/packages/cli/src/live/dev-history.js +31 -15
  92. package/dist/packages/cli/src/live/index.js +28 -90
  93. package/dist/packages/cli/src/live/screens/newpairs-live.js +1 -1
  94. package/dist/packages/cli/src/live/screens/token-live.js +48 -15
  95. package/dist/packages/cli/src/live/screens/watchlist-live.js +1 -1
  96. package/dist/packages/cli/src/live/trade.js +30 -453
  97. package/dist/packages/cli/src/live/watchlist.js +1 -1
  98. package/dist/packages/cli/src/main.js +290 -199
  99. package/dist/packages/cli/src/mcp-cmd.js +7 -1
  100. package/dist/packages/cli/src/mcp-follow.js +103 -6
  101. package/dist/packages/cli/src/plan-cmd.js +15 -5
  102. package/dist/packages/cli/src/pnl-app.js +31 -21
  103. package/dist/packages/cli/src/pnl-card.js +158 -21
  104. package/dist/packages/cli/src/popup.js +38 -6
  105. package/dist/packages/cli/src/record-cmd.js +141 -20
  106. package/dist/packages/cli/src/scan/ui.js +7 -1
  107. package/dist/packages/cli/src/screens/agent-hud.js +773 -0
  108. package/dist/packages/cli/src/screens/analyst-session.js +11 -4
  109. package/dist/packages/cli/src/screens/analyst.js +3 -2
  110. package/dist/packages/cli/src/screens/autotrade-keys.js +169 -0
  111. package/dist/packages/cli/src/screens/autotrade-proposals.js +123 -0
  112. package/dist/packages/cli/src/screens/autotrade-screen.js +725 -0
  113. package/dist/packages/cli/src/screens/autotrade-ui.js +640 -0
  114. package/dist/packages/cli/src/screens/autotrade-worker.js +89 -0
  115. package/dist/packages/cli/src/screens/brain.js +634 -0
  116. package/dist/packages/cli/src/screens/newpairs.js +1 -1
  117. package/dist/packages/cli/src/screens/overlay.js +5 -2
  118. package/dist/packages/cli/src/screens/plans.js +5 -17
  119. package/dist/packages/cli/src/screens/pnl-chip.js +144 -0
  120. package/dist/packages/cli/src/screens/positions.js +6 -28
  121. package/dist/packages/cli/src/screens/screener.js +1 -0
  122. package/dist/packages/cli/src/screens/ticket.js +38 -205
  123. package/dist/packages/cli/src/screens/token.js +18 -9
  124. package/dist/packages/cli/src/screens/trending.js +1 -1
  125. package/dist/packages/cli/src/state.js +88 -18
  126. package/dist/packages/cli/src/telegram-cmd.js +451 -0
  127. package/dist/packages/cli/src/trade.js +3 -128
  128. package/dist/packages/cli/src/version.js +1 -1
  129. package/dist/packages/cli/src/wallet-cmd.js +39 -340
  130. package/dist/packages/cli/src/wallet-command.js +8 -11
  131. package/dist/packages/cli/src/widgets.js +0 -12
  132. package/dist/packages/custom/src/config.js +20 -2
  133. package/dist/packages/custom/src/schema.js +41 -10
  134. package/dist/packages/custom/src/workspace.js +3 -3
  135. package/dist/packages/data/src/basis.js +191 -0
  136. package/dist/packages/data/src/detail.js +53 -2
  137. package/dist/packages/data/src/index.js +2 -14
  138. package/dist/packages/data/src/larp/score.js +220 -0
  139. package/dist/packages/data/src/larp/x-account.js +316 -0
  140. package/dist/packages/data/src/store.js +14 -5
  141. package/dist/packages/data/src/trade/agent/paper-desk.js +300 -23
  142. package/dist/packages/data/src/trade/agent/rendezvous.js +3 -2
  143. package/dist/packages/data/src/trade/bridge.js +4 -102
  144. package/dist/packages/data/src/trade/ledger/export.js +101 -0
  145. package/dist/packages/data/src/trade/ledger/file.js +135 -0
  146. package/dist/packages/data/src/trade/ledger/fold.js +191 -0
  147. package/dist/packages/data/src/trade/ledger/index.js +9 -0
  148. package/dist/packages/data/src/trade/ledger/schema.js +83 -0
  149. package/dist/packages/data/src/trade/ledger/sources.js +307 -0
  150. package/dist/packages/data/src/trade/ledger/stats.js +123 -0
  151. package/dist/packages/data/src/trade/ledger/tags.js +116 -0
  152. package/dist/packages/data/src/trade/ledger/view.js +51 -0
  153. package/dist/packages/data/src/trade/plans/engine.js +7 -0
  154. package/dist/packages/data/src/trade/plans/index.js +0 -1
  155. package/dist/packages/data/src/trade/plans/mandate.js +28 -15
  156. package/dist/packages/data/src/trade/plans/service.js +4 -28
  157. package/dist/packages/mcp/assets/kb/app-help/autotrade-chat.md +48 -0
  158. package/dist/packages/mcp/assets/kb/app-help/autotrade-parallel.md +42 -0
  159. package/dist/packages/mcp/assets/kb/app-help/autotrade-runner.md +35 -0
  160. package/dist/packages/mcp/assets/kb/app-help/autotrade-stop.md +37 -0
  161. package/dist/packages/mcp/assets/kb/app-help/autotrade-strategies.md +35 -0
  162. package/dist/packages/mcp/assets/kb/app-help/autotrade-telegram.md +40 -0
  163. package/dist/packages/mcp/assets/kb/app-help/chart-trade-markers.md +42 -0
  164. package/dist/packages/mcp/assets/kb/app-help/dev-history.md +1 -1
  165. package/dist/packages/mcp/assets/kb/app-help/larp-check.md +5 -1
  166. package/dist/packages/mcp/assets/kb/app-help/link-a-wallet.md +4 -10
  167. package/dist/packages/mcp/assets/kb/app-help/live-trading.md +38 -0
  168. package/dist/packages/mcp/assets/kb/app-help/live-yolo.md +34 -0
  169. package/dist/packages/mcp/assets/kb/app-help/order-plans.md +1 -1
  170. package/dist/packages/mcp/assets/kb/app-help/price-or-marketcap.md +5 -2
  171. package/dist/packages/mcp/assets/kb/app-help/scan-mode.md +1 -1
  172. package/dist/packages/mcp/assets/kb/app-help/screen-analyst.md +3 -0
  173. package/dist/packages/mcp/assets/kb/app-help/screen-autotrade.md +217 -0
  174. package/dist/packages/mcp/assets/kb/app-help/screen-kol.md +3 -0
  175. package/dist/packages/mcp/assets/kb/app-help/screen-newpairs.md +3 -0
  176. package/dist/packages/mcp/assets/kb/app-help/screen-positions.md +3 -0
  177. package/dist/packages/mcp/assets/kb/app-help/screen-screener.md +3 -0
  178. package/dist/packages/mcp/assets/kb/app-help/screen-token.md +6 -0
  179. package/dist/packages/mcp/assets/kb/app-help/screen-trending.md +3 -0
  180. package/dist/packages/mcp/assets/kb/app-help/screen-watchlist.md +3 -0
  181. package/dist/packages/mcp/assets/kb/app-help/spectate-an-agent.md +2 -1
  182. package/dist/packages/mcp/assets/kb/app-help/standing-mandates.md +1 -1
  183. package/dist/packages/mcp/assets/kb/app-help/trade-ledger.md +54 -0
  184. package/dist/packages/mcp/assets/kb/app-help/use-local-model.md +38 -0
  185. package/dist/packages/mcp/assets/kb/docs/docs-agents-agent-paper-trading.md +7 -3
  186. package/dist/packages/mcp/assets/kb/docs/docs-agents-reading-your-trade-ledger.md +31 -0
  187. package/dist/packages/mcp/assets/kb/docs/docs-agents-untrusted-by-default.md +1 -1
  188. package/dist/packages/mcp/assets/kb/docs/docs-analyst-if-claude-is-missing.md +1 -1
  189. package/dist/packages/mcp/assets/kb/docs/docs-analyst-starting-a-run.md +2 -0
  190. package/dist/packages/mcp/assets/kb/docs/docs-analyst-use-a-local-model-instead.md +27 -0
  191. package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-sees.md +2 -0
  192. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-backtests-and-their-limits.md +56 -0
  193. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-change-a-strategy-by-chat.md +49 -0
  194. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-checking-the-record-of-a-run.md +28 -0
  195. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-comparing-them.md +41 -0
  196. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-exits-and-wakes.md +76 -0
  197. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-how-a-stop-reaches-the-runner.md +32 -0
  198. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-on-the-q-screen.md +37 -0
  199. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-one-strategy-or-all-of-them.md +35 -0
  200. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-paper-accounts.md +50 -0
  201. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-presets.md +37 -0
  202. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-running-it-all-day.md +31 -0
  203. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-sessions-and-their-limits.md +31 -0
  204. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-several-strategies-at-once.md +33 -0
  205. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-stopping-it.md +35 -0
  206. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-strategies-and-presets.md +34 -0
  207. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-autotrade-json-file.md +48 -0
  208. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-heartbeat.md +27 -0
  209. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-run-file-and-the-heartbeat.md +34 -0
  210. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-runner-and-candidate-sessions.md +45 -0
  211. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-each-session-shows-first.md +31 -0
  212. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-costs-claude-usage-per-session.md +58 -0
  213. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-is-paper-self-directed.md +43 -0
  214. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-will-not-do.md +31 -0
  215. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-which-account-day-caps-and-the-usage-guard.md +44 -0
  216. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-your-strategies.md +37 -0
  217. package/dist/packages/mcp/assets/kb/docs/docs-autotrade.md +22 -0
  218. package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +2 -2
  219. package/dist/packages/mcp/assets/kb/docs/docs-beginners.md +1 -1
  220. package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-markers.md +30 -0
  221. package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-y-axis.md +32 -0
  222. package/dist/packages/mcp/assets/kb/docs/docs-configuration-environment-variables.md +4 -1
  223. package/dist/packages/mcp/assets/kb/docs/docs-configuration-files-on-disk.md +1 -0
  224. package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +3 -1
  225. package/dist/packages/mcp/assets/kb/docs/docs-configuration-price-display-mode.md +9 -7
  226. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-2-the-one-key-mirror-ticket-a-proposal.md +1 -1
  227. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-3-capped-auto-mirror-default-off-less.md +1 -1
  228. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-what-is-proven-what-is-not.md +1 -1
  229. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +1 -1
  230. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-recorded-history-and-retention.md +36 -0
  231. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-sources.md +1 -0
  232. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-first-run.md +1 -1
  233. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +3 -3
  234. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +1 -1
  235. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-running-the-tests.md +1 -1
  236. package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +1 -1
  237. package/dist/packages/mcp/assets/kb/docs/docs-larp-measured-accuracy.md +1 -0
  238. package/dist/packages/mcp/assets/kb/docs/docs-larp-the-larp-score.md +60 -0
  239. package/dist/packages/mcp/assets/kb/docs/docs-larp-the-verdict.md +0 -2
  240. package/dist/packages/mcp/assets/kb/docs/docs-larp-what-it-looks-at.md +4 -1
  241. package/dist/packages/mcp/assets/kb/docs/docs-larp.md +1 -1
  242. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-changed-in-0-1-7.md +26 -0
  243. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-stopping.md +28 -0
  244. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-the-short-version.md +34 -0
  245. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-using-a-trading-bot-with-dexterm.md +33 -0
  246. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does-not-do.md +30 -0
  247. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does.md +29 -0
  248. package/dist/packages/mcp/assets/kb/docs/docs-live-trading.md +23 -0
  249. package/dist/packages/mcp/assets/kb/docs/docs-ollama-another-machine.md +28 -0
  250. package/dist/packages/mcp/assets/kb/docs/docs-ollama-autotrade-on-a-local-model.md +29 -0
  251. package/dist/packages/mcp/assets/kb/docs/docs-ollama-check-your-model-dexterm-ai-probe.md +38 -0
  252. package/dist/packages/mcp/assets/kb/docs/docs-ollama-how-we-checked.md +27 -0
  253. package/dist/packages/mcp/assets/kb/docs/docs-ollama-models-without-tool-calling.md +32 -0
  254. package/dist/packages/mcp/assets/kb/docs/docs-ollama-pick-the-engine-globally-or-per-surface.md +43 -0
  255. package/dist/packages/mcp/assets/kb/docs/docs-ollama-restriction-profiles.md +35 -0
  256. package/dist/packages/mcp/assets/kb/docs/docs-ollama-set-it-up-in-two-minutes.md +39 -0
  257. package/dist/packages/mcp/assets/kb/docs/docs-ollama-troubleshooting.md +35 -0
  258. package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-runs-on-a-local-model.md +39 -0
  259. package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-stays-outside-the-model.md +36 -0
  260. package/dist/packages/mcp/assets/kb/docs/docs-ollama-which-model.md +38 -0
  261. package/dist/packages/mcp/assets/kb/docs/docs-ollama-your-own-agent-on-the-local-model.md +28 -0
  262. package/dist/packages/mcp/assets/kb/docs/docs-ollama.md +28 -0
  263. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-letting-an-agent-paper-trade-experimental.md +3 -4
  264. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet-read-only.md +30 -0
  265. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-order-plans-and-standing-mandates.md +4 -13
  266. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-panic.md +4 -7
  267. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-paper-only-mandates.md +40 -0
  268. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-pnl-cards.md +7 -7
  269. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-safety-model.md +34 -0
  270. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-ticket.md +3 -4
  271. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-trade-ledger.md +42 -0
  272. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-wallet.md +4 -5
  273. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-trade-moments.md +4 -5
  274. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +4 -5
  275. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-buy-and-sell-markers.md +37 -0
  276. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-market-cap-axis.md +1 -1
  277. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-what-it-shows.md +3 -1
  278. package/dist/packages/mcp/assets/kb/docs/docs-scan-the-read.md +2 -0
  279. package/dist/packages/mcp/assets/kb/docs/docs-screens-autotrade-paper.md +26 -0
  280. package/dist/packages/mcp/assets/kb/docs/docs-screens-dev-history.md +10 -7
  281. package/dist/packages/mcp/assets/kb/docs/docs-screens-order-plans.md +1 -1
  282. package/dist/packages/mcp/assets/kb/docs/docs-screens-token-screen.md +2 -0
  283. package/dist/packages/mcp/assets/kb/docs/docs-spectator-follow-over-mcp-in-the-running-terminal.md +1 -1
  284. package/dist/packages/mcp/assets/kb/docs/docs-spectator-limits.md +2 -0
  285. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-agent-hud-spectator-v2.md +58 -0
  286. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-brain-view-and-the-pnl-chip.md +46 -0
  287. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-three-surfaces.md +1 -1
  288. package/dist/packages/mcp/assets/kb/docs/docs-spectator.md +1 -1
  289. package/dist/packages/mcp/assets/kb/docs/docs-telegram-approve-one-tap-entries.md +50 -0
  290. package/dist/packages/mcp/assets/kb/docs/docs-telegram-control-the-commands.md +43 -0
  291. package/dist/packages/mcp/assets/kb/docs/docs-telegram-if-something-goes-wrong.md +30 -0
  292. package/dist/packages/mcp/assets/kb/docs/docs-telegram-notify-what-reaches-your-phone.md +41 -0
  293. package/dist/packages/mcp/assets/kb/docs/docs-telegram-set-it-up.md +47 -0
  294. package/dist/packages/mcp/assets/kb/docs/docs-telegram-the-record.md +26 -0
  295. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-is.md +33 -0
  296. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-will-not-do.md +31 -0
  297. package/dist/packages/mcp/assets/kb/docs/docs-telegram.md +23 -0
  298. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-common-questions.md +1 -1
  299. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-doctor-lines.md +4 -0
  300. package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +1 -1
  301. package/dist/packages/mcp/assets/kb/docs/docs-voice.md +1 -1
  302. package/dist/packages/mcp/assets/kb/docs/docs-yolo-1-replay-it-on-your-own-history.md +42 -0
  303. package/dist/packages/mcp/assets/kb/docs/docs-yolo-2-run-it-on-paper.md +34 -0
  304. package/dist/packages/mcp/assets/kb/docs/docs-yolo-3-watch-it-and-stop-it.md +32 -0
  305. package/dist/packages/mcp/assets/kb/docs/docs-yolo-the-rules.md +37 -0
  306. package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-is.md +34 -0
  307. package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-will-not-do.md +31 -0
  308. package/dist/packages/mcp/assets/kb/docs/docs-yolo.md +26 -0
  309. package/dist/packages/mcp/assets/kb/entries/autotrade.md +38 -0
  310. package/dist/packages/mcp/src/app-help.js +1 -1
  311. package/dist/packages/mcp/src/autotrade-tools.js +944 -0
  312. package/dist/packages/mcp/src/backtest-requests.js +71 -0
  313. package/dist/packages/mcp/src/engine/config.js +159 -0
  314. package/dist/packages/mcp/src/engine/index.js +10 -0
  315. package/dist/packages/mcp/src/engine/loop.js +101 -0
  316. package/dist/packages/mcp/src/engine/mcp-client.js +123 -0
  317. package/dist/packages/mcp/src/engine/ollama.js +258 -0
  318. package/dist/packages/mcp/src/engine/probe.js +110 -0
  319. package/dist/packages/mcp/src/engine/reason.js +35 -0
  320. package/dist/packages/mcp/src/engine/restrictions.js +111 -0
  321. package/dist/packages/mcp/src/index.js +7 -1
  322. package/dist/packages/mcp/src/ledger-tools.js +346 -0
  323. package/dist/packages/mcp/src/paper-agent.js +5 -2
  324. package/dist/packages/mcp/src/server.js +285 -36
  325. package/dist/packages/mcp/src/spectator-sink.js +85 -0
  326. package/dist/packages/packs/src/backtest.js +3 -1
  327. package/dist/packages/packs/src/index.js +1 -0
  328. package/dist/packages/packs/src/larp-score-backtest.js +119 -0
  329. package/dist/packages/popup/src/pages/chart-lib.js +169 -35
  330. package/dist/packages/popup/src/pages/chart.css +18 -0
  331. package/dist/packages/popup/src/pages/chart.html +6 -1
  332. package/dist/packages/popup/src/pages/chart.js +136 -10
  333. package/dist/packages/popup/src/pages/spectator.css +45 -0
  334. package/dist/packages/popup/src/pages/spectator.html +1 -0
  335. package/dist/packages/popup/src/pages/spectator.js +69 -0
  336. package/dist/packages/popup/src/protocol.js +4 -0
  337. package/dist/packages/popup/src/server.js +9 -1
  338. package/dist/packages/recorder/src/dev-history.js +7 -3
  339. package/dist/packages/recorder/src/index.js +2 -0
  340. package/dist/packages/recorder/src/recorder.js +63 -6
  341. package/dist/packages/recorder/src/retention.js +100 -0
  342. package/dist/packages/recorder/src/schema.js +34 -1
  343. package/dist/packages/recorder/src/ticks.js +237 -0
  344. package/dist/packages/tui/src/canvas.js +7 -0
  345. package/dist/packages/tui/src/fmt.js +53 -0
  346. package/dist/packages/tui/src/index.js +1 -0
  347. package/dist/packages/tui/src/keymap.js +25 -1
  348. package/dist/packages/tui/src/markers.js +219 -0
  349. package/dist/packages/tui/src/widgets.js +158 -6
  350. package/package.json +2 -1
  351. package/dist/packages/data/src/trade/caps.js +0 -323
  352. package/dist/packages/data/src/trade/executor.js +0 -933
  353. package/dist/packages/data/src/trade/plans/executor-live.js +0 -220
  354. package/dist/packages/data/src/trade/rpc-exec.js +0 -229
  355. package/dist/packages/data/src/trade/signer/client.js +0 -197
  356. package/dist/packages/data/src/trade/signer/fast-wallet.js +0 -154
  357. package/dist/packages/data/src/trade/signer/host.js +0 -97
  358. package/dist/packages/data/src/trade/signer/main.js +0 -121
  359. package/dist/packages/data/src/trade/signer/probe-builder.js +0 -85
  360. package/dist/packages/data/src/trade/signer/protocol.js +0 -92
  361. package/dist/packages/data/src/trade/signer/service.js +0 -400
  362. package/dist/packages/data/src/trade/signer/sol-usd-feed.js +0 -98
  363. package/dist/packages/data/src/trade/sol-usd.js +0 -86
  364. package/dist/packages/data/src/trade/swap-build.js +0 -108
  365. package/dist/packages/data/src/trade/token-delta.js +0 -201
  366. package/dist/packages/data/vendor/solana-web3/LICENSE +0 -20
  367. package/dist/packages/data/vendor/solana-web3/NOTICE.md +0 -13
  368. package/dist/packages/data/vendor/solana-web3/index.iife.min.js +0 -20
  369. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-a-live-ticket.md +0 -42
  370. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-before-you-press-size-vs-caps.md +0 -34
  371. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-devnet-signer-mainnet-token.md +0 -35
  372. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-jupiter-rate-limits.md +0 -33
  373. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet.md +0 -32
  374. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-live-trading-devnet-first.md +0 -30
  375. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-mainnet.md +0 -31
  376. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-live-fire-path-devnet-the-fast-wallet.md +0 -41
  377. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-signer-process.md +0 -34
  378. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-what-the-live-path-keeps.md +0 -37
  379. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-your-first-live-trade.md +0 -41
@@ -0,0 +1,46 @@
1
+ {
2
+ "kind": "exit-profile",
3
+ "id": "moonbag",
4
+ "name": "Moonbag (early entry, free bag)",
5
+ "version": "1.2.0",
6
+ "description": "An early entry on a young pair. At about 2x, sell the slice whose proceeds pay back the whole position cost; the rest rides as a free bag with a loose 55% trail off its peak and the thesis-break exits only. No hard stop, so the size is small: early entries rug often.",
7
+ "fit": {
8
+ "summary": "A young pair (0-2 h) with an early clean push that has not gone vertical yet, liquidity >= $20k, and the holder-safety gates clean (no mint or freeze authority, top-10 <= 30%, dev <= 5%).",
9
+ "minLiquidityUsd": 20000,
10
+ "ageHours": { "min": 0, "max": 2 },
11
+ "maxTop10Pct": 30,
12
+ "signals": ["first clean 5m push with buyers ahead of sellers", "liquidity rising with price", "many distinct buyers, top-2 share low"]
13
+ },
14
+ "sizing": { "maxSizePctOfBankroll": 3 },
15
+ "tpLadder": [],
16
+ "trailingStop": null,
17
+ "costRecovery": { "atPct": 100, "maxSellFrac": 0.6 },
18
+ "bagTrail": { "trailPct": 55 },
19
+ "timeStop": null,
20
+ "hardStop": {
21
+ "enabled": false,
22
+ "atPct": null,
23
+ "why": "Young pairs shake out 30-60% before a real run, and a rug fills near -100% whatever stop is set. The protection is the small size, the safety gates at entry and the thesis breaks."
24
+ },
25
+ "thesisBreak": {
26
+ "liquidityDropPct": 40,
27
+ "liquidityWindowMin": 10,
28
+ "mcapDivergenceX": 5,
29
+ "devSell": { "exitOnAnyDevSell": true, "topHolderSellPctOfBag": 30 },
30
+ "volumeDeath": { "m5TradesBelow": 5, "forMinutes": 60 }
31
+ },
32
+ "reentry": {
33
+ "allowed": false,
34
+ "cooldownMinutes": 0,
35
+ "maxEntriesPerCoinPerSession": 1,
36
+ "requires": "one entry per coin: an early entry cannot be repeated late"
37
+ },
38
+ "carry": { "allowed": true, "requiresTpFilled": 0, "maxRemainderPctOfBankroll": 3 },
39
+ "reprofileTo": [],
40
+ "wake": { "onTpFilled": false, "onTimeReview": false, "drawdownPct": -50, "thesisWarnFrac": 0.6, "noAnswer": "hold", "onCostRecovered": true },
41
+ "maxHoldMinutes": 10080,
42
+ "notes": [
43
+ "The bag trail arms on the cost-recovery sell, not on a gain; before that only the thesis breaks and the rug floor can exit.",
44
+ "tighten on a free bag halves its trail (never below 10%); a bag trail is never loosened by an agent."
45
+ ]
46
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "kind": "exit-profile",
3
+ "id": "runner",
4
+ "name": "Runner (long hold)",
5
+ "version": "1.1.0",
6
+ "description": "A conviction hold for a large move: quarters at +100% and +200%, then the last half trails 40% off its peak. No hard stop, a 4-hour review, may carry a small remainder between agent sessions.",
7
+ "fit": {
8
+ "summary": "At least ~6 h old, liquidity >= $50k, top-10 <= 25% (or holder data unavailable with a stronger tape), a narrative heating up; or an upgrade from scalp/swing after TP1 filled.",
9
+ "minLiquidityUsd": 50000,
10
+ "ageHours": {
11
+ "min": 6,
12
+ "max": null
13
+ },
14
+ "maxTop10Pct": 25,
15
+ "signals": [
16
+ "narrative heating",
17
+ "liquidity rising with price",
18
+ "many distinct buyers, top-2 share low"
19
+ ]
20
+ },
21
+ "sizing": {
22
+ "maxSizePctOfBankroll": 20
23
+ },
24
+ "tpLadder": [
25
+ {
26
+ "atPct": 100,
27
+ "sellFrac": 0.25
28
+ },
29
+ {
30
+ "atPct": 200,
31
+ "sellFrac": 0.25
32
+ }
33
+ ],
34
+ "trailingStop": {
35
+ "armAtPct": 100,
36
+ "trailPct": 40
37
+ },
38
+ "timeStop": {
39
+ "minutes": 240,
40
+ "ifBelowPct": 25,
41
+ "action": "review"
42
+ },
43
+ "hardStop": {
44
+ "enabled": false,
45
+ "atPct": null,
46
+ "why": "A runner has to survive the -20% to -45% shakeouts that come before most large moves. Rugs are handled by the thesis-break rules and by size."
47
+ },
48
+ "thesisBreak": {
49
+ "liquidityDropPct": 30,
50
+ "liquidityWindowMin": 5,
51
+ "mcapDivergenceX": 5,
52
+ "devSell": {
53
+ "exitOnAnyDevSell": true,
54
+ "topHolderSellPctOfBag": 25
55
+ },
56
+ "volumeDeath": {
57
+ "m5TradesBelow": 10,
58
+ "forMinutes": 30
59
+ }
60
+ },
61
+ "reentry": {
62
+ "allowed": false,
63
+ "cooldownMinutes": 0,
64
+ "maxEntriesPerCoinPerSession": 1,
65
+ "requires": "not in the same session; a later session runs a new full vet"
66
+ },
67
+ "carry": {
68
+ "allowed": true,
69
+ "requiresTpFilled": 1,
70
+ "maxRemainderPctOfBankroll": 15
71
+ },
72
+ "reprofileTo": [
73
+ "swing",
74
+ "scalp"
75
+ ],
76
+ "notes": [
77
+ "A downgrade (tighter exits) is allowed any time with a logged reason.",
78
+ "1.1.0 adds wake (the judgement calls that wake the position's agent session; noAnswer is what happens when no session answers in time) and maxHoldMinutes (a hard holding cap). Mechanical exits never wait for the session."
79
+ ],
80
+ "wake": {
81
+ "onTpFilled": true,
82
+ "onTimeReview": true,
83
+ "drawdownPct": -35,
84
+ "thesisWarnFrac": 0.6,
85
+ "noAnswer": "hold"
86
+ },
87
+ "maxHoldMinutes": 2880
88
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "kind": "exit-profile",
3
+ "id": "scalp",
4
+ "name": "Scalp (quick play)",
5
+ "version": "1.1.0",
6
+ "description": "A quick momentum play on a young or freshly pushing coin: small size, fast partial profits, a tight trail, a 20-minute clock and a hard stop. Never carried between agent sessions.",
7
+ "fit": {
8
+ "summary": "Under ~6 h old, or a fresh 5m push on any coin; tape live with buyers; the move is minutes old. Pick scalp when in doubt.",
9
+ "minLiquidityUsd": 30000,
10
+ "ageHours": {
11
+ "min": 0,
12
+ "max": 6
13
+ },
14
+ "maxTop10Pct": 35,
15
+ "signals": [
16
+ "5m change clearly positive",
17
+ "buys beat sells across >= 25 wallets",
18
+ "price at or above the 1m VWAP"
19
+ ]
20
+ },
21
+ "sizing": {
22
+ "maxSizePctOfBankroll": 10
23
+ },
24
+ "tpLadder": [
25
+ {
26
+ "atPct": 30,
27
+ "sellFrac": 0.5
28
+ },
29
+ {
30
+ "atPct": 60,
31
+ "sellFrac": 0.25
32
+ }
33
+ ],
34
+ "trailingStop": {
35
+ "armAtPct": 20,
36
+ "trailPct": 15
37
+ },
38
+ "timeStop": {
39
+ "minutes": 20,
40
+ "ifBelowPct": 10,
41
+ "action": "exit"
42
+ },
43
+ "hardStop": {
44
+ "enabled": true,
45
+ "atPct": -25,
46
+ "why": "A scalp has no thesis beyond the next minutes of momentum: -25% means the read was wrong. It is the smallest size, so the slippage a stop pays costs least here. A rug can still gap through it."
47
+ },
48
+ "thesisBreak": {
49
+ "liquidityDropPct": 20,
50
+ "liquidityWindowMin": 5,
51
+ "mcapDivergenceX": 3,
52
+ "devSell": {
53
+ "exitOnAnyDevSell": true,
54
+ "topHolderSellPctOfBag": 25
55
+ },
56
+ "volumeDeath": {
57
+ "m5TradesBelow": 10,
58
+ "forMinutes": 5
59
+ }
60
+ },
61
+ "reentry": {
62
+ "allowed": true,
63
+ "cooldownMinutes": 10,
64
+ "maxEntriesPerCoinPerSession": 2,
65
+ "requires": "a new full vet that passes and a new 5m high after the exit"
66
+ },
67
+ "carry": {
68
+ "allowed": false,
69
+ "requiresTpFilled": 0,
70
+ "maxRemainderPctOfBankroll": 0
71
+ },
72
+ "reprofileTo": [
73
+ "swing",
74
+ "runner"
75
+ ],
76
+ "notes": [
77
+ "Upgrade to swing or runner only after TP1 filled, the price is above the TP1 level and every thesis check is clean.",
78
+ "1.1.0 adds wake (the judgement calls that wake the position's agent session; noAnswer is what happens when no session answers in time) and maxHoldMinutes (a hard holding cap). Mechanical exits never wait for the session."
79
+ ],
80
+ "wake": {
81
+ "onTpFilled": false,
82
+ "onTimeReview": true,
83
+ "drawdownPct": null,
84
+ "thesisWarnFrac": null,
85
+ "noAnswer": "exit"
86
+ },
87
+ "maxHoldMinutes": 60
88
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "kind": "exit-profile",
3
+ "id": "swing",
4
+ "name": "Swing",
5
+ "version": "1.1.0",
6
+ "description": "An intraday trend on a coin that has already proven it can hold a pool: medium size, thirds at +50% and +100%, a 25% trail, a 90-minute review, no hard stop (thesis breaks only).",
7
+ "fit": {
8
+ "summary": "1 h to 7 d old; above VWAP with higher lows on the 1m candles; liquidity >= $30k and steady; holders not concentrated.",
9
+ "minLiquidityUsd": 30000,
10
+ "ageHours": {
11
+ "min": 1,
12
+ "max": 168
13
+ },
14
+ "maxTop10Pct": 30,
15
+ "signals": [
16
+ "trend intact on 1m candles",
17
+ "liquidity steady or rising vs its 5-min high",
18
+ "narrative not cooling"
19
+ ]
20
+ },
21
+ "sizing": {
22
+ "maxSizePctOfBankroll": 15
23
+ },
24
+ "tpLadder": [
25
+ {
26
+ "atPct": 50,
27
+ "sellFrac": 0.33
28
+ },
29
+ {
30
+ "atPct": 100,
31
+ "sellFrac": 0.33
32
+ }
33
+ ],
34
+ "trailingStop": {
35
+ "armAtPct": 40,
36
+ "trailPct": 25
37
+ },
38
+ "timeStop": {
39
+ "minutes": 90,
40
+ "ifBelowPct": 15,
41
+ "action": "review"
42
+ },
43
+ "hardStop": {
44
+ "enabled": false,
45
+ "atPct": null,
46
+ "why": "Recorded winners often dipped 10-25% before they ran, and a rug fills near -100% through any stop. The thesis-break rules and the size are the exit."
47
+ },
48
+ "thesisBreak": {
49
+ "liquidityDropPct": 30,
50
+ "liquidityWindowMin": 5,
51
+ "mcapDivergenceX": 5,
52
+ "devSell": {
53
+ "exitOnAnyDevSell": true,
54
+ "topHolderSellPctOfBag": 25
55
+ },
56
+ "volumeDeath": {
57
+ "m5TradesBelow": 10,
58
+ "forMinutes": 15
59
+ }
60
+ },
61
+ "reentry": {
62
+ "allowed": true,
63
+ "cooldownMinutes": 30,
64
+ "maxEntriesPerCoinPerSession": 1,
65
+ "requires": "a new full vet that passes"
66
+ },
67
+ "carry": {
68
+ "allowed": true,
69
+ "requiresTpFilled": 1,
70
+ "maxRemainderPctOfBankroll": 10
71
+ },
72
+ "reprofileTo": [
73
+ "runner",
74
+ "scalp"
75
+ ],
76
+ "notes": [
77
+ "Upgrade to runner only after TP1 filled with the price above it and every thesis check clean. Downgrade to scalp any time the trend weakens.",
78
+ "1.1.0 adds wake (the judgement calls that wake the position's agent session; noAnswer is what happens when no session answers in time) and maxHoldMinutes (a hard holding cap). Mechanical exits never wait for the session."
79
+ ],
80
+ "wake": {
81
+ "onTpFilled": true,
82
+ "onTimeReview": true,
83
+ "drawdownPct": -30,
84
+ "thesisWarnFrac": 0.6,
85
+ "noAnswer": "exit"
86
+ },
87
+ "maxHoldMinutes": 720
88
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "kind": "strategy",
3
+ "schema": "dexterm-strategy/1",
4
+ "id": "moonbag",
5
+ "name": "Moonbag (early entry, free bag)",
6
+ "version": "1.0.0",
7
+ "description": "Small early entries on young pairs that pass the holder-safety gates: take the cost back at about 2x, then hold a free bag with a loose trail and thesis-break exits only. Many small tickets, most of which lose; the point is the rare runner.",
8
+ "mode": "paper",
9
+ "bankroll": {
10
+ "startUsd": 1000
11
+ },
12
+ "entry": {
13
+ "screen": "liq >= 20K vol5m >= 3K !flag:mint !flag:freeze",
14
+ "ageHours": {
15
+ "min": 0,
16
+ "max": 2
17
+ },
18
+ "safety": {
19
+ "maxTop10Pct": 30,
20
+ "maxDevPct": 5,
21
+ "requireNoMintAuthority": true,
22
+ "requireNoFreezeAuthority": true,
23
+ "maxMcapSplitX": 3,
24
+ "youngVertical": {
25
+ "maxAgeHours": 2,
26
+ "maxH1Pct": 150
27
+ },
28
+ "unknownHolders": "reject"
29
+ },
30
+ "triggers": [
31
+ {
32
+ "kind": "momentum",
33
+ "m5MinPct": 2,
34
+ "buySellMin": 1.3
35
+ }
36
+ ],
37
+ "triggerMode": "any",
38
+ "decide": "agent",
39
+ "candidateTtlSec": 240
40
+ },
41
+ "exits": {
42
+ "default": "moonbag",
43
+ "profiles": [
44
+ "builtin:moonbag"
45
+ ]
46
+ },
47
+ "sizing": {
48
+ "mode": "pct",
49
+ "pct": 2,
50
+ "maxPctOfBankroll": 3,
51
+ "maxUsd": 50,
52
+ "minUsd": 2
53
+ },
54
+ "risk": {
55
+ "perTrade": {
56
+ "maxLossPctOfBankroll": 3,
57
+ "assumedLossPctNoStop": 100
58
+ },
59
+ "dailyLossHaltPct": 10,
60
+ "drawdown": {
61
+ "sizeDownAtPct": 25,
62
+ "sizeDownMult": 0.5,
63
+ "recoverBelowPct": 15,
64
+ "haltAtPct": 40
65
+ },
66
+ "maxConcurrent": 3,
67
+ "maxExposurePct": 10,
68
+ "lossStreak": {
69
+ "losses": 5,
70
+ "cooldownMin": 120
71
+ },
72
+ "maxEntriesPerDay": 8,
73
+ "perCoin": {
74
+ "maxEntries": 1,
75
+ "cooldownMin": 10080
76
+ },
77
+ "recoveredBags": {
78
+ "countAsOpen": false,
79
+ "maxBags": 6
80
+ }
81
+ },
82
+ "agent": {
83
+ "model": "sonnet",
84
+ "maxSessions": 2,
85
+ "budgetUsdPerSession": 0.5,
86
+ "budgetUsdPerDay": 10,
87
+ "maxTurns": 60,
88
+ "deltaEverySec": 15,
89
+ "decideWithinSec": 60,
90
+ "sessionMaxMin": 240,
91
+ "onTimeout": "skip"
92
+ },
93
+ "execution": {
94
+ "slippageBps": 200,
95
+ "feeBps": 30,
96
+ "networkFeeUsd": 0.02,
97
+ "latencyMs": 3000,
98
+ "maxPriceImpactPct": 5,
99
+ "minExitLiquidityUsd": 2000
100
+ }
101
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "kind": "strategy",
3
+ "schema": "dexterm-strategy/1",
4
+ "id": "runner",
5
+ "name": "Runner (conviction hold)",
6
+ "version": "1.0.0",
7
+ "description": "A conviction hold on an established coin with a heating narrative: size scaled by the agent's confidence (5% to 20%), quarters at +100% and +200%, then a 40% trail on the rest.",
8
+ "mode": "paper",
9
+ "bankroll": {
10
+ "startUsd": 1000
11
+ },
12
+ "entry": {
13
+ "screen": "liq >= 50K vol1h > 25K top10 <= 25 !flag:mint !flag:freeze",
14
+ "ageHours": {
15
+ "min": 6,
16
+ "max": null
17
+ },
18
+ "safety": {
19
+ "maxTop10Pct": 25,
20
+ "maxDevPct": 5,
21
+ "requireNoMintAuthority": true,
22
+ "requireNoFreezeAuthority": true,
23
+ "maxMcapSplitX": 5,
24
+ "youngVertical": null,
25
+ "unknownHolders": "reject"
26
+ },
27
+ "triggers": [
28
+ {
29
+ "kind": "screen"
30
+ },
31
+ {
32
+ "kind": "narrative",
33
+ "minHeat": 60
34
+ }
35
+ ],
36
+ "triggerMode": "any",
37
+ "decide": "agent",
38
+ "candidateTtlSec": 300
39
+ },
40
+ "exits": {
41
+ "default": "runner",
42
+ "profiles": [
43
+ "builtin:runner",
44
+ "builtin:swing"
45
+ ]
46
+ },
47
+ "sizing": {
48
+ "mode": "confidence",
49
+ "confidence": {
50
+ "minPct": 5,
51
+ "maxPct": 20,
52
+ "default": 0.5
53
+ },
54
+ "maxPctOfBankroll": 20,
55
+ "maxUsd": 500,
56
+ "minUsd": 5
57
+ },
58
+ "risk": {
59
+ "perTrade": {
60
+ "maxLossPctOfBankroll": 20,
61
+ "assumedLossPctNoStop": 100
62
+ },
63
+ "dailyLossHaltPct": 15,
64
+ "drawdown": {
65
+ "sizeDownAtPct": 25,
66
+ "sizeDownMult": 0.5,
67
+ "recoverBelowPct": 15,
68
+ "haltAtPct": 40
69
+ },
70
+ "maxConcurrent": 1,
71
+ "maxExposurePct": 25,
72
+ "lossStreak": {
73
+ "losses": 2,
74
+ "cooldownMin": 240
75
+ },
76
+ "maxEntriesPerDay": 3,
77
+ "perCoin": {
78
+ "maxEntries": 1,
79
+ "cooldownMin": 1440
80
+ }
81
+ },
82
+ "agent": {
83
+ "model": "sonnet",
84
+ "maxSessions": 2,
85
+ "budgetUsdPerSession": 0.5,
86
+ "budgetUsdPerDay": 10,
87
+ "maxTurns": 60,
88
+ "deltaEverySec": 15,
89
+ "decideWithinSec": 90,
90
+ "sessionMaxMin": 240,
91
+ "onTimeout": "skip"
92
+ },
93
+ "execution": {
94
+ "slippageBps": 100,
95
+ "feeBps": 30,
96
+ "networkFeeUsd": 0.02,
97
+ "latencyMs": 3000,
98
+ "maxPriceImpactPct": 8,
99
+ "minExitLiquidityUsd": 2000
100
+ }
101
+ }
@@ -0,0 +1,188 @@
1
+ {
2
+ "kind": "strategy",
3
+ "schema": "dexterm-strategy/1",
4
+ "id": "sample-dip-ladder",
5
+ "name": "Dip ladder (custom sample)",
6
+ "version": "1.0.0",
7
+ "description": "A user-made sample: buy half on a trend coin, add the other half if it dips 15% within 30 minutes, risk-sized so a full stop-out loses 2% of the bankroll, with an inline exit profile that takes a third at +40% and trails the rest.",
8
+ "mode": "paper",
9
+ "bankroll": {
10
+ "startUsd": 1000
11
+ },
12
+ "entry": {
13
+ "screen": "liq >= 40K vol1h > 20K h1 > 0 !flag:mint !flag:freeze",
14
+ "ageHours": {
15
+ "min": 2,
16
+ "max": 72
17
+ },
18
+ "safety": {
19
+ "maxTop10Pct": 30,
20
+ "maxDevPct": 5,
21
+ "requireNoMintAuthority": true,
22
+ "requireNoFreezeAuthority": true,
23
+ "maxMcapSplitX": 5,
24
+ "youngVertical": {
25
+ "maxAgeHours": 3,
26
+ "maxH1Pct": 200
27
+ },
28
+ "unknownHolders": "reject"
29
+ },
30
+ "triggers": [
31
+ {
32
+ "kind": "screen"
33
+ }
34
+ ],
35
+ "triggerMode": "any",
36
+ "decide": "agent",
37
+ "candidateTtlSec": 300
38
+ },
39
+ "exits": {
40
+ "default": "dip-trail",
41
+ "profiles": [
42
+ {
43
+ "kind": "exit-profile",
44
+ "id": "dip-trail",
45
+ "name": "Dip ladder trail",
46
+ "version": "1.0.0",
47
+ "description": "A third off at +40%, a third at +90%, the rest trails 20% once it is up 30%. A -35% hard stop below the average entry, because the ladder already bought the dip.",
48
+ "fit": {
49
+ "summary": "A trend coin that pulls back inside its first hours with liquidity holding.",
50
+ "minLiquidityUsd": 40000,
51
+ "ageHours": {
52
+ "min": 2,
53
+ "max": 72
54
+ },
55
+ "maxTop10Pct": 30
56
+ },
57
+ "sizing": {
58
+ "maxSizePctOfBankroll": 12
59
+ },
60
+ "tpLadder": [
61
+ {
62
+ "atPct": 40,
63
+ "sellFrac": 0.33
64
+ },
65
+ {
66
+ "atPct": 90,
67
+ "sellFrac": 0.33
68
+ }
69
+ ],
70
+ "trailingStop": {
71
+ "armAtPct": 30,
72
+ "trailPct": 20
73
+ },
74
+ "timeStop": {
75
+ "minutes": 180,
76
+ "ifBelowPct": 10,
77
+ "action": "review"
78
+ },
79
+ "hardStop": {
80
+ "enabled": true,
81
+ "atPct": -35,
82
+ "why": "The ladder already added on the dip; a further -35% from the average means the trend is gone."
83
+ },
84
+ "thesisBreak": {
85
+ "liquidityDropPct": 25,
86
+ "liquidityWindowMin": 5,
87
+ "mcapDivergenceX": 5,
88
+ "devSell": {
89
+ "exitOnAnyDevSell": true,
90
+ "topHolderSellPctOfBag": 25
91
+ },
92
+ "volumeDeath": {
93
+ "m5TradesBelow": 8,
94
+ "forMinutes": 20
95
+ }
96
+ },
97
+ "reentry": {
98
+ "allowed": false,
99
+ "cooldownMinutes": 0,
100
+ "maxEntriesPerCoinPerSession": 1,
101
+ "requires": "not on the same coin the same day"
102
+ },
103
+ "carry": {
104
+ "allowed": true,
105
+ "requiresTpFilled": 1,
106
+ "maxRemainderPctOfBankroll": 8
107
+ },
108
+ "reprofileTo": [
109
+ "swing"
110
+ ],
111
+ "wake": {
112
+ "onTpFilled": true,
113
+ "onTimeReview": true,
114
+ "drawdownPct": -20,
115
+ "thesisWarnFrac": 0.6,
116
+ "noAnswer": "exit"
117
+ },
118
+ "maxHoldMinutes": 1440
119
+ },
120
+ "builtin:swing"
121
+ ]
122
+ },
123
+ "sizing": {
124
+ "mode": "risk",
125
+ "riskPct": 2,
126
+ "ladder": [
127
+ {
128
+ "frac": 0.5,
129
+ "atPct": 0,
130
+ "withinMin": 30
131
+ },
132
+ {
133
+ "frac": 0.5,
134
+ "atPct": -15,
135
+ "withinMin": 30
136
+ }
137
+ ],
138
+ "maxPctOfBankroll": 12,
139
+ "maxUsd": 300,
140
+ "minUsd": 5
141
+ },
142
+ "risk": {
143
+ "perTrade": {
144
+ "maxLossPctOfBankroll": 10,
145
+ "assumedLossPctNoStop": 100
146
+ },
147
+ "dailyLossHaltPct": 8,
148
+ "drawdown": {
149
+ "sizeDownAtPct": 12,
150
+ "sizeDownMult": 0.5,
151
+ "recoverBelowPct": 6,
152
+ "haltAtPct": 20
153
+ },
154
+ "maxConcurrent": 3,
155
+ "maxExposurePct": 30,
156
+ "lossStreak": {
157
+ "losses": 2,
158
+ "cooldownMin": 120
159
+ },
160
+ "maxEntriesPerDay": 6,
161
+ "perCoin": {
162
+ "maxEntries": 1,
163
+ "cooldownMin": 1440
164
+ }
165
+ },
166
+ "agent": {
167
+ "model": "sonnet",
168
+ "maxSessions": 2,
169
+ "budgetUsdPerSession": 0.5,
170
+ "budgetUsdPerDay": 10,
171
+ "maxTurns": 60,
172
+ "deltaEverySec": 15,
173
+ "decideWithinSec": 90,
174
+ "sessionMaxMin": 240,
175
+ "onTimeout": "skip"
176
+ },
177
+ "execution": {
178
+ "slippageBps": 100,
179
+ "feeBps": 30,
180
+ "networkFeeUsd": 0.02,
181
+ "latencyMs": 3000,
182
+ "maxPriceImpactPct": 8,
183
+ "minExitLiquidityUsd": 2000
184
+ },
185
+ "notes": [
186
+ "Shareable: copy this file into ~/.dexterm/strategies/ and run `dexterm autotrade validate`."
187
+ ]
188
+ }