dexterm-cli 0.1.6 → 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.
- package/dist/packages/agents/src/schema.js +22 -1
- package/dist/packages/agents/src/story.js +11 -2
- package/dist/packages/agents/src/tiers.js +27 -2
- package/dist/packages/agents/src/tools.js +30 -2
- package/dist/packages/autotrade/assets/exit-profile.schema.json +492 -0
- package/dist/packages/autotrade/assets/profiles/moonbag.json +46 -0
- package/dist/packages/autotrade/assets/profiles/runner.json +88 -0
- package/dist/packages/autotrade/assets/profiles/scalp.json +88 -0
- package/dist/packages/autotrade/assets/profiles/swing.json +88 -0
- package/dist/packages/autotrade/assets/strategies/moonbag.json +101 -0
- package/dist/packages/autotrade/assets/strategies/runner.json +101 -0
- package/dist/packages/autotrade/assets/strategies/sample-dip-ladder.json +188 -0
- package/dist/packages/autotrade/assets/strategies/scalp.json +98 -0
- package/dist/packages/autotrade/assets/strategies/swing.json +97 -0
- package/dist/packages/autotrade/assets/strategies/yolo.json +157 -0
- package/dist/packages/autotrade/assets/tapes/yolo-rehearsal.json +1 -0
- package/dist/packages/autotrade/src/account.js +74 -0
- package/dist/packages/autotrade/src/backtest.js +357 -0
- package/dist/packages/autotrade/src/basis-text.js +32 -0
- package/dist/packages/autotrade/src/chat/approvals.js +484 -0
- package/dist/packages/autotrade/src/chat/audit.js +140 -0
- package/dist/packages/autotrade/src/chat/config.js +93 -0
- package/dist/packages/autotrade/src/chat/connector.js +24 -0
- package/dist/packages/autotrade/src/chat/control.js +103 -0
- package/dist/packages/autotrade/src/chat/fake.js +100 -0
- package/dist/packages/autotrade/src/chat/format.js +71 -0
- package/dist/packages/autotrade/src/chat/hub.js +187 -0
- package/dist/packages/autotrade/src/chat/index.js +18 -0
- package/dist/packages/autotrade/src/chat/notify.js +292 -0
- package/dist/packages/autotrade/src/chat/pairing.js +46 -0
- package/dist/packages/autotrade/src/chat/redact.js +48 -0
- package/dist/packages/autotrade/src/chat/secrets.js +99 -0
- package/dist/packages/autotrade/src/chat/service.js +248 -0
- package/dist/packages/autotrade/src/chat/telegram.js +290 -0
- package/dist/packages/autotrade/src/desk-executor.js +188 -0
- package/dist/packages/autotrade/src/engine.js +387 -0
- package/dist/packages/autotrade/src/execution-port.js +97 -0
- package/dist/packages/autotrade/src/fleet-config.js +169 -0
- package/dist/packages/autotrade/src/fleet-control.js +276 -0
- package/dist/packages/autotrade/src/fleet.js +639 -0
- package/dist/packages/autotrade/src/index.js +53 -0
- package/dist/packages/autotrade/src/ledger.js +108 -0
- package/dist/packages/autotrade/src/live-source.js +182 -0
- package/dist/packages/autotrade/src/monitor-daemon.js +715 -0
- package/dist/packages/autotrade/src/monitor.js +190 -0
- package/dist/packages/autotrade/src/ollama-sessions.js +137 -0
- package/dist/packages/autotrade/src/paper-accounts.js +72 -0
- package/dist/packages/autotrade/src/replay.js +198 -0
- package/dist/packages/autotrade/src/runner-config.js +99 -0
- package/dist/packages/autotrade/src/runner.js +872 -0
- package/dist/packages/autotrade/src/safety.js +243 -0
- package/dist/packages/autotrade/src/session.js +269 -0
- package/dist/packages/autotrade/src/sessions.js +503 -0
- package/dist/packages/autotrade/src/store.js +250 -0
- package/dist/packages/autotrade/src/strategy.js +256 -0
- package/dist/packages/autotrade/src/trade-ledger.js +241 -0
- package/dist/packages/autotrade/src/yolo.js +140 -0
- package/dist/packages/cli/assets/claude/analyst-system.md +4 -4
- package/dist/packages/cli/assets/claude/plugin/skills/token-dossier/SKILL.md +1 -1
- package/dist/packages/cli/src/ai-cmd.js +412 -0
- package/dist/packages/cli/src/analyst/backend.js +82 -15
- package/dist/packages/cli/src/analyst/codex.js +14 -9
- package/dist/packages/cli/src/analyst/ollama.js +263 -0
- package/dist/packages/cli/src/analyst/session.js +5 -2
- package/dist/packages/cli/src/app-help-gen.js +44 -8
- package/dist/packages/cli/src/autotrade-cmd/audit.js +57 -0
- package/dist/packages/cli/src/autotrade-cmd/backtest.js +199 -0
- package/dist/packages/cli/src/autotrade-cmd/flatten.js +64 -0
- package/dist/packages/cli/src/autotrade-cmd/fleet.js +397 -0
- package/dist/packages/cli/src/autotrade-cmd/requests.js +79 -0
- package/dist/packages/cli/src/autotrade-cmd/run.js +413 -0
- package/dist/packages/cli/src/autotrade-cmd/stop.js +76 -0
- package/dist/packages/cli/src/autotrade-cmd/strategies.js +198 -0
- package/dist/packages/cli/src/autotrade-cmd/strategy-control.js +174 -0
- package/dist/packages/cli/src/autotrade-cmd/telegram-host.js +101 -0
- package/dist/packages/cli/src/autotrade-cmd.js +168 -0
- package/dist/packages/cli/src/display.js +156 -17
- package/dist/packages/cli/src/doctor.js +62 -3
- package/dist/packages/cli/src/export.js +10 -2
- package/dist/packages/cli/src/index.js +1 -1
- package/dist/packages/cli/src/ledger-cmd.js +288 -0
- package/dist/packages/cli/src/live/chart-fills.js +46 -0
- package/dist/packages/cli/src/live/index.js +23 -89
- package/dist/packages/cli/src/live/screens/token-live.js +9 -6
- package/dist/packages/cli/src/live/trade.js +12 -457
- package/dist/packages/cli/src/live/watchlist.js +1 -1
- package/dist/packages/cli/src/main.js +147 -190
- package/dist/packages/cli/src/mcp-cmd.js +7 -1
- package/dist/packages/cli/src/plan-cmd.js +1 -1
- package/dist/packages/cli/src/pnl-app.js +31 -21
- package/dist/packages/cli/src/pnl-card.js +158 -21
- package/dist/packages/cli/src/popup.js +22 -6
- package/dist/packages/cli/src/record-cmd.js +141 -20
- package/dist/packages/cli/src/screens/agent-hud.js +34 -2
- package/dist/packages/cli/src/screens/analyst-session.js +7 -4
- package/dist/packages/cli/src/screens/analyst.js +3 -2
- package/dist/packages/cli/src/screens/autotrade-keys.js +169 -0
- package/dist/packages/cli/src/screens/autotrade-proposals.js +123 -0
- package/dist/packages/cli/src/screens/autotrade-screen.js +725 -0
- package/dist/packages/cli/src/screens/autotrade-ui.js +640 -0
- package/dist/packages/cli/src/screens/autotrade-worker.js +89 -0
- package/dist/packages/cli/src/screens/brain.js +37 -11
- package/dist/packages/cli/src/screens/overlay.js +5 -2
- package/dist/packages/cli/src/screens/plans.js +5 -17
- package/dist/packages/cli/src/screens/pnl-chip.js +9 -8
- package/dist/packages/cli/src/screens/positions.js +6 -28
- package/dist/packages/cli/src/screens/ticket.js +38 -205
- package/dist/packages/cli/src/screens/token.js +3 -3
- package/dist/packages/cli/src/state.js +25 -19
- package/dist/packages/cli/src/telegram-cmd.js +451 -0
- package/dist/packages/cli/src/trade.js +3 -128
- package/dist/packages/cli/src/version.js +1 -1
- package/dist/packages/cli/src/wallet-cmd.js +39 -340
- package/dist/packages/cli/src/wallet-command.js +8 -11
- package/dist/packages/cli/src/widgets.js +0 -12
- package/dist/packages/custom/src/config.js +20 -2
- package/dist/packages/custom/src/schema.js +35 -10
- package/dist/packages/custom/src/workspace.js +3 -3
- package/dist/packages/data/src/basis.js +191 -0
- package/dist/packages/data/src/detail.js +53 -2
- package/dist/packages/data/src/index.js +0 -14
- package/dist/packages/data/src/store.js +14 -5
- package/dist/packages/data/src/trade/agent/paper-desk.js +228 -16
- package/dist/packages/data/src/trade/agent/rendezvous.js +3 -2
- package/dist/packages/data/src/trade/bridge.js +4 -102
- package/dist/packages/data/src/trade/ledger/export.js +101 -0
- package/dist/packages/data/src/trade/ledger/file.js +135 -0
- package/dist/packages/data/src/trade/ledger/fold.js +191 -0
- package/dist/packages/data/src/trade/ledger/index.js +9 -0
- package/dist/packages/data/src/trade/ledger/schema.js +83 -0
- package/dist/packages/data/src/trade/ledger/sources.js +307 -0
- package/dist/packages/data/src/trade/ledger/stats.js +123 -0
- package/dist/packages/data/src/trade/ledger/tags.js +116 -0
- package/dist/packages/data/src/trade/ledger/view.js +51 -0
- package/dist/packages/data/src/trade/plans/index.js +0 -1
- package/dist/packages/data/src/trade/plans/service.js +3 -27
- package/dist/packages/mcp/assets/kb/app-help/autotrade-chat.md +48 -0
- package/dist/packages/mcp/assets/kb/app-help/autotrade-parallel.md +42 -0
- package/dist/packages/mcp/assets/kb/app-help/autotrade-runner.md +35 -0
- package/dist/packages/mcp/assets/kb/app-help/autotrade-stop.md +37 -0
- package/dist/packages/mcp/assets/kb/app-help/autotrade-strategies.md +35 -0
- package/dist/packages/mcp/assets/kb/app-help/autotrade-telegram.md +40 -0
- package/dist/packages/mcp/assets/kb/app-help/chart-trade-markers.md +42 -0
- package/dist/packages/mcp/assets/kb/app-help/link-a-wallet.md +4 -10
- package/dist/packages/mcp/assets/kb/app-help/live-trading.md +38 -0
- package/dist/packages/mcp/assets/kb/app-help/live-yolo.md +34 -0
- package/dist/packages/mcp/assets/kb/app-help/order-plans.md +1 -1
- package/dist/packages/mcp/assets/kb/app-help/price-or-marketcap.md +5 -2
- package/dist/packages/mcp/assets/kb/app-help/screen-analyst.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-autotrade.md +217 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-kol.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-newpairs.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-positions.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-screener.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-token.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-trending.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-watchlist.md +3 -0
- package/dist/packages/mcp/assets/kb/app-help/standing-mandates.md +1 -1
- package/dist/packages/mcp/assets/kb/app-help/trade-ledger.md +54 -0
- package/dist/packages/mcp/assets/kb/app-help/use-local-model.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-agent-paper-trading.md +4 -1
- package/dist/packages/mcp/assets/kb/docs/docs-agents-reading-your-trade-ledger.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-untrusted-by-default.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-if-claude-is-missing.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-use-a-local-model-instead.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-sees.md +2 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-backtests-and-their-limits.md +56 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-change-a-strategy-by-chat.md +49 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-checking-the-record-of-a-run.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-comparing-them.md +41 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-exits-and-wakes.md +76 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-how-a-stop-reaches-the-runner.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-on-the-q-screen.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-one-strategy-or-all-of-them.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-paper-accounts.md +50 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-presets.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-running-it-all-day.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-sessions-and-their-limits.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-several-strategies-at-once.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-stopping-it.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-strategies-and-presets.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-autotrade-json-file.md +48 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-heartbeat.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-run-file-and-the-heartbeat.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-runner-and-candidate-sessions.md +45 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-each-session-shows-first.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-costs-claude-usage-per-session.md +58 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-is-paper-self-directed.md +43 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-will-not-do.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-which-account-day-caps-and-the-usage-guard.md +44 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade-your-strategies.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-autotrade.md +22 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +2 -2
- package/dist/packages/mcp/assets/kb/docs/docs-beginners.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-markers.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-y-axis.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-environment-variables.md +4 -1
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-files-on-disk.md +1 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +3 -1
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-price-display-mode.md +8 -6
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-2-the-one-key-mirror-ticket-a-proposal.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-3-capped-auto-mirror-default-off-less.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-what-is-proven-what-is-not.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-recorded-history-and-retention.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-sources.md +1 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-first-run.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +3 -3
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-live-trading-changed-in-0-1-7.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-live-trading-stopping.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-live-trading-the-short-version.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-live-trading-using-a-trading-bot-with-dexterm.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does-not-do.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-live-trading.md +23 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-another-machine.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-autotrade-on-a-local-model.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-check-your-model-dexterm-ai-probe.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-how-we-checked.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-models-without-tool-calling.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-pick-the-engine-globally-or-per-surface.md +43 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-restriction-profiles.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-set-it-up-in-two-minutes.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-troubleshooting.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-runs-on-a-local-model.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-stays-outside-the-model.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-which-model.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama-your-own-agent-on-the-local-model.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-ollama.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-letting-an-agent-paper-trade-experimental.md +3 -4
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet-read-only.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-order-plans-and-standing-mandates.md +3 -4
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-panic.md +4 -7
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-paper-only-mandates.md +6 -7
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-pnl-cards.md +7 -7
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-safety-model.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-ticket.md +3 -4
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-trade-ledger.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-wallet.md +4 -5
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-trade-moments.md +4 -5
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +4 -5
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-buy-and-sell-markers.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-what-it-shows.md +2 -1
- package/dist/packages/mcp/assets/kb/docs/docs-screens-autotrade-paper.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-order-plans.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-screens-token-screen.md +2 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-brain-view-and-the-pnl-chip.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-approve-one-tap-entries.md +50 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-control-the-commands.md +43 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-if-something-goes-wrong.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-notify-what-reaches-your-phone.md +41 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-set-it-up.md +47 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-the-record.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-is.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-will-not-do.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-telegram.md +23 -0
- package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-common-questions.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-doctor-lines.md +4 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-voice.md +1 -1
- package/dist/packages/mcp/assets/kb/docs/docs-yolo-1-replay-it-on-your-own-history.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-yolo-2-run-it-on-paper.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-yolo-3-watch-it-and-stop-it.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-yolo-the-rules.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-is.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-will-not-do.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-yolo.md +26 -0
- package/dist/packages/mcp/assets/kb/entries/autotrade.md +38 -0
- package/dist/packages/mcp/src/app-help.js +1 -1
- package/dist/packages/mcp/src/autotrade-tools.js +944 -0
- package/dist/packages/mcp/src/backtest-requests.js +71 -0
- package/dist/packages/mcp/src/engine/config.js +159 -0
- package/dist/packages/mcp/src/engine/index.js +10 -0
- package/dist/packages/mcp/src/engine/loop.js +101 -0
- package/dist/packages/mcp/src/engine/mcp-client.js +123 -0
- package/dist/packages/mcp/src/engine/ollama.js +258 -0
- package/dist/packages/mcp/src/engine/probe.js +110 -0
- package/dist/packages/mcp/src/engine/reason.js +35 -0
- package/dist/packages/mcp/src/engine/restrictions.js +111 -0
- package/dist/packages/mcp/src/index.js +7 -1
- package/dist/packages/mcp/src/ledger-tools.js +346 -0
- package/dist/packages/mcp/src/paper-agent.js +2 -0
- package/dist/packages/mcp/src/server.js +127 -19
- package/dist/packages/packs/src/backtest.js +3 -1
- package/dist/packages/popup/src/pages/chart-lib.js +134 -21
- package/dist/packages/popup/src/pages/chart.css +9 -0
- package/dist/packages/popup/src/pages/chart.html +3 -1
- package/dist/packages/popup/src/pages/chart.js +104 -7
- package/dist/packages/popup/src/protocol.js +2 -0
- package/dist/packages/popup/src/server.js +4 -0
- package/dist/packages/recorder/src/index.js +2 -0
- package/dist/packages/recorder/src/recorder.js +63 -6
- package/dist/packages/recorder/src/retention.js +100 -0
- package/dist/packages/recorder/src/schema.js +34 -1
- package/dist/packages/recorder/src/ticks.js +237 -0
- package/dist/packages/tui/src/index.js +1 -0
- package/dist/packages/tui/src/keymap.js +21 -1
- package/dist/packages/tui/src/markers.js +219 -0
- package/dist/packages/tui/src/widgets.js +149 -2
- package/package.json +2 -1
- package/dist/packages/data/src/trade/caps.js +0 -323
- package/dist/packages/data/src/trade/executor.js +0 -933
- package/dist/packages/data/src/trade/plans/executor-live.js +0 -220
- package/dist/packages/data/src/trade/rpc-exec.js +0 -229
- package/dist/packages/data/src/trade/signer/client.js +0 -197
- package/dist/packages/data/src/trade/signer/fast-wallet.js +0 -154
- package/dist/packages/data/src/trade/signer/host.js +0 -97
- package/dist/packages/data/src/trade/signer/main.js +0 -121
- package/dist/packages/data/src/trade/signer/probe-builder.js +0 -85
- package/dist/packages/data/src/trade/signer/protocol.js +0 -92
- package/dist/packages/data/src/trade/signer/service.js +0 -400
- package/dist/packages/data/src/trade/signer/sol-usd-feed.js +0 -98
- package/dist/packages/data/src/trade/sol-usd.js +0 -86
- package/dist/packages/data/src/trade/swap-build.js +0 -108
- package/dist/packages/data/src/trade/token-delta.js +0 -201
- package/dist/packages/data/vendor/solana-web3/LICENSE +0 -20
- package/dist/packages/data/vendor/solana-web3/NOTICE.md +0 -13
- package/dist/packages/data/vendor/solana-web3/index.iife.min.js +0 -20
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-a-live-ticket.md +0 -42
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-before-you-press-size-vs-caps.md +0 -34
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-devnet-signer-mainnet-token.md +0 -35
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-jupiter-rate-limits.md +0 -33
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet.md +0 -32
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-live-trading-devnet-first.md +0 -30
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-mainnet.md +0 -31
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-live-fire-path-devnet-the-fast-wallet.md +0 -41
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-signer-process.md +0 -34
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-what-the-live-path-keeps.md +0 -37
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-your-first-live-trade.md +0 -41
|
@@ -72,6 +72,7 @@ keys:
|
|
|
72
72
|
- ctrl+w o
|
|
73
73
|
- ctrl+w d
|
|
74
74
|
- ctrl+r
|
|
75
|
+
- Q
|
|
75
76
|
actions:
|
|
76
77
|
- quit
|
|
77
78
|
- screen.screener
|
|
@@ -123,6 +124,7 @@ actions:
|
|
|
123
124
|
- workspace.popups
|
|
124
125
|
- workspace.default
|
|
125
126
|
- screen.rules
|
|
127
|
+
- screen.autotrade
|
|
126
128
|
confidence: high
|
|
127
129
|
owner: maintainers
|
|
128
130
|
origin: app-help-generated
|
|
@@ -186,5 +188,6 @@ Keys on this screen:
|
|
|
186
188
|
`^W o` — open workspace popups
|
|
187
189
|
`^W d` — default workspace
|
|
188
190
|
`^R` — rules
|
|
191
|
+
`Q` — autotrade (paper)
|
|
189
192
|
`c` — calm mode (effects off)
|
|
190
193
|
`?` — this help
|
|
@@ -68,6 +68,7 @@ keys:
|
|
|
68
68
|
- ctrl+w o
|
|
69
69
|
- ctrl+w d
|
|
70
70
|
- ctrl+r
|
|
71
|
+
- Q
|
|
71
72
|
actions:
|
|
72
73
|
- quit
|
|
73
74
|
- screen.screener
|
|
@@ -115,6 +116,7 @@ actions:
|
|
|
115
116
|
- workspace.popups
|
|
116
117
|
- workspace.default
|
|
117
118
|
- screen.rules
|
|
119
|
+
- screen.autotrade
|
|
118
120
|
tools:
|
|
119
121
|
- screener_query
|
|
120
122
|
confidence: high
|
|
@@ -177,5 +179,6 @@ Keys on this screen:
|
|
|
177
179
|
`^W o` — open workspace popups
|
|
178
180
|
`^W d` — default workspace
|
|
179
181
|
`^R` — rules
|
|
182
|
+
`Q` — autotrade (paper)
|
|
180
183
|
`c` — calm mode (effects off)
|
|
181
184
|
`?` — this help
|
|
@@ -69,6 +69,7 @@ keys:
|
|
|
69
69
|
- ctrl+w o
|
|
70
70
|
- ctrl+w d
|
|
71
71
|
- ctrl+r
|
|
72
|
+
- Q
|
|
72
73
|
actions:
|
|
73
74
|
- quit
|
|
74
75
|
- screen.screener
|
|
@@ -116,6 +117,7 @@ actions:
|
|
|
116
117
|
- workspace.popups
|
|
117
118
|
- workspace.default
|
|
118
119
|
- screen.rules
|
|
120
|
+
- screen.autotrade
|
|
119
121
|
tools:
|
|
120
122
|
- paper_positions
|
|
121
123
|
- paper_pnl
|
|
@@ -179,5 +181,6 @@ Keys on this screen:
|
|
|
179
181
|
`^W o` — open workspace popups
|
|
180
182
|
`^W d` — default workspace
|
|
181
183
|
`^R` — rules
|
|
184
|
+
`Q` — autotrade (paper)
|
|
182
185
|
`c` — calm mode (effects off)
|
|
183
186
|
`?` — this help
|
|
@@ -76,6 +76,7 @@ keys:
|
|
|
76
76
|
- ctrl+w o
|
|
77
77
|
- ctrl+w d
|
|
78
78
|
- ctrl+r
|
|
79
|
+
- Q
|
|
79
80
|
actions:
|
|
80
81
|
- quit
|
|
81
82
|
- screen.screener
|
|
@@ -128,6 +129,7 @@ actions:
|
|
|
128
129
|
- workspace.popups
|
|
129
130
|
- workspace.default
|
|
130
131
|
- screen.rules
|
|
132
|
+
- screen.autotrade
|
|
131
133
|
tools:
|
|
132
134
|
- screener_query
|
|
133
135
|
confidence: high
|
|
@@ -195,5 +197,6 @@ Keys on this screen:
|
|
|
195
197
|
`^W o` — open workspace popups
|
|
196
198
|
`^W d` — default workspace
|
|
197
199
|
`^R` — rules
|
|
200
|
+
`Q` — autotrade (paper)
|
|
198
201
|
`c` — calm mode (effects off)
|
|
199
202
|
`?` — this help
|
|
@@ -84,6 +84,7 @@ keys:
|
|
|
84
84
|
- ctrl+w o
|
|
85
85
|
- ctrl+w d
|
|
86
86
|
- ctrl+r
|
|
87
|
+
- Q
|
|
87
88
|
actions:
|
|
88
89
|
- quit
|
|
89
90
|
- screen.screener
|
|
@@ -154,6 +155,7 @@ actions:
|
|
|
154
155
|
- workspace.popups
|
|
155
156
|
- workspace.default
|
|
156
157
|
- screen.rules
|
|
158
|
+
- screen.autotrade
|
|
157
159
|
tools:
|
|
158
160
|
- get_dossier
|
|
159
161
|
- get_token
|
|
@@ -240,5 +242,6 @@ Keys on this screen:
|
|
|
240
242
|
`^W o` — open workspace popups
|
|
241
243
|
`^W d` — default workspace
|
|
242
244
|
`^R` — rules
|
|
245
|
+
`Q` — autotrade (paper)
|
|
243
246
|
`c` — calm mode (effects off)
|
|
244
247
|
`?` — this help
|
|
@@ -71,6 +71,7 @@ keys:
|
|
|
71
71
|
- ctrl+w o
|
|
72
72
|
- ctrl+w d
|
|
73
73
|
- ctrl+r
|
|
74
|
+
- Q
|
|
74
75
|
actions:
|
|
75
76
|
- quit
|
|
76
77
|
- screen.screener
|
|
@@ -123,6 +124,7 @@ actions:
|
|
|
123
124
|
- workspace.popups
|
|
124
125
|
- workspace.default
|
|
125
126
|
- screen.rules
|
|
127
|
+
- screen.autotrade
|
|
126
128
|
tools:
|
|
127
129
|
- narrative_board
|
|
128
130
|
confidence: high
|
|
@@ -188,5 +190,6 @@ Keys on this screen:
|
|
|
188
190
|
`^W o` — open workspace popups
|
|
189
191
|
`^W d` — default workspace
|
|
190
192
|
`^R` — rules
|
|
193
|
+
`Q` — autotrade (paper)
|
|
191
194
|
`c` — calm mode (effects off)
|
|
192
195
|
`?` — this help
|
|
@@ -68,6 +68,7 @@ keys:
|
|
|
68
68
|
- ctrl+w o
|
|
69
69
|
- ctrl+w d
|
|
70
70
|
- ctrl+r
|
|
71
|
+
- Q
|
|
71
72
|
actions:
|
|
72
73
|
- quit
|
|
73
74
|
- screen.screener
|
|
@@ -116,6 +117,7 @@ actions:
|
|
|
116
117
|
- workspace.popups
|
|
117
118
|
- workspace.default
|
|
118
119
|
- screen.rules
|
|
120
|
+
- screen.autotrade
|
|
119
121
|
confidence: high
|
|
120
122
|
owner: maintainers
|
|
121
123
|
origin: app-help-generated
|
|
@@ -177,5 +179,6 @@ Keys on this screen:
|
|
|
177
179
|
`^W o` — open workspace popups
|
|
178
180
|
`^W d` — default workspace
|
|
179
181
|
`^R` — rules
|
|
182
|
+
`Q` — autotrade (paper)
|
|
180
183
|
`c` — calm mode (effects off)
|
|
181
184
|
`?` — this help
|
|
@@ -28,6 +28,6 @@ sources:
|
|
|
28
28
|
date: 2026-10-16
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
`dexterm mandate list|add|remove|arm|disarm` sets a standing mandate — a longer-lived conditional rule bounded by a budget. As with plans, a model may only PROPOSE; arming needs your physical keypress and
|
|
31
|
+
`dexterm mandate list|add|remove|arm|disarm` sets a standing mandate — a longer-lived conditional rule bounded by a budget. As with plans, a model may only PROPOSE; arming needs your physical keypress and its caps bound it; fills are PAPER. The analyst can never arm a mandate or change its caps.
|
|
32
32
|
|
|
33
33
|
CLI: `dexterm mandate`.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: trade-ledger
|
|
3
|
+
title: See every trade in one ledger: win rate, profiles, exit reasons, strategy versions (dexterm ledger)
|
|
4
|
+
kind: app-help
|
|
5
|
+
screen: all
|
|
6
|
+
feature: trade-ledger
|
|
7
|
+
tags:
|
|
8
|
+
- app-help
|
|
9
|
+
- ledger
|
|
10
|
+
- journal
|
|
11
|
+
- trades
|
|
12
|
+
- history
|
|
13
|
+
- results
|
|
14
|
+
- stats
|
|
15
|
+
- win
|
|
16
|
+
- rate
|
|
17
|
+
- drawdown
|
|
18
|
+
- profile
|
|
19
|
+
- exit
|
|
20
|
+
- reason
|
|
21
|
+
- compare
|
|
22
|
+
- export
|
|
23
|
+
- csv
|
|
24
|
+
- equity
|
|
25
|
+
- mfe
|
|
26
|
+
- mae
|
|
27
|
+
commands:
|
|
28
|
+
- ledger
|
|
29
|
+
tools:
|
|
30
|
+
- ledger_trades
|
|
31
|
+
- ledger_positions
|
|
32
|
+
- ledger_summary
|
|
33
|
+
- ledger_equity
|
|
34
|
+
- ledger_compare
|
|
35
|
+
- candidate_dossier
|
|
36
|
+
- outcomes_lookup
|
|
37
|
+
- trading_status
|
|
38
|
+
- telegram_status
|
|
39
|
+
- backtest_requests
|
|
40
|
+
confidence: high
|
|
41
|
+
owner: maintainers
|
|
42
|
+
origin: app-help-generated
|
|
43
|
+
reviewed_by: generated@2026-10-16
|
|
44
|
+
generated_from: dexterm/app keymap + overlay + mcp tools + cli (task-1413)
|
|
45
|
+
sources:
|
|
46
|
+
- packages/tui/src/keymap.ts
|
|
47
|
+
- packages/cli/src/main.ts
|
|
48
|
+
- packages/mcp/src/server.ts
|
|
49
|
+
date: 2026-10-16
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
`dexterm ledger trades` lists every round trip dexterm booked, from the paper ticket, the agent paper desk and autotrade runs, newest first: strategy version, the exit profile and entry reason it was opened with (marked * when not declared with the fill), the exit reason, size and % of book, entry and exit market cap, P/L, hold and MFE/MAE. `positions` shows the open ones. `summary` gives the win rate with its 95% interval, P/L, profit factor, drawdown and rug rate by profile, exit reason, strategy, source and mode; `equity` the realized equity curve; `compare` strategy versions side by side (for strategies run in parallel); `export csv|json|parquet-lite [--out FILE]`; `card <tradeId>` a PnL card from a row. Filters: --source, --mode paper|devnet|live, --strategy id[@version], --profile, --exit, --mint, --run, --days, --status. Reads never write; `dexterm ledger sync` appends to ~/.dexterm/ledger/trades.jsonl (sha256-chained) and `dexterm ledger verify` names the first edited line. Agents read the same rows with the read-only ledger_* tools; `trading_status` and `telegram_status` show settings and state, never a key, address, exact balance, bot token or chat id. A backtest an agent asks for (backtest_request) only runs when you run it: `dexterm autotrade requests`. PAPER rows are simulated; filter by --mode before comparing. Not financial advice. Full docs: https://dexterm.xyz/docs/paper-trading/#the-trade-ledger
|
|
53
|
+
|
|
54
|
+
CLI: `dexterm ledger`.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: use-local-model
|
|
3
|
+
title: Run dexterm's AI on a free local model (Ollama)
|
|
4
|
+
kind: app-help
|
|
5
|
+
screen: all
|
|
6
|
+
feature: analyst
|
|
7
|
+
tags:
|
|
8
|
+
- app-help
|
|
9
|
+
- ollama
|
|
10
|
+
- local
|
|
11
|
+
- model
|
|
12
|
+
- free
|
|
13
|
+
- offline
|
|
14
|
+
- engine
|
|
15
|
+
- llama
|
|
16
|
+
- qwen
|
|
17
|
+
- restrictions
|
|
18
|
+
- privacy
|
|
19
|
+
commands:
|
|
20
|
+
- ai
|
|
21
|
+
- ask
|
|
22
|
+
flags:
|
|
23
|
+
- --analyst-engine
|
|
24
|
+
confidence: high
|
|
25
|
+
owner: maintainers
|
|
26
|
+
origin: app-help-generated
|
|
27
|
+
reviewed_by: generated@2026-10-16
|
|
28
|
+
generated_from: dexterm/app keymap + overlay + mcp tools + cli (task-1413)
|
|
29
|
+
sources:
|
|
30
|
+
- packages/tui/src/keymap.ts
|
|
31
|
+
- packages/cli/src/main.ts
|
|
32
|
+
- packages/mcp/src/server.ts
|
|
33
|
+
date: 2026-10-16
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
dexterm's AI can run on a free model on your own machine through Ollama: no login, no key, $0 per answer, and it talks only to http://127.0.0.1:11434 by default. Set it up in two minutes: install Ollama (https://ollama.com/download), `ollama pull qwen3:8b`, `dexterm ai engine ollama`, `dexterm ai model qwen3:8b`, then `dexterm doctor` (the Ollama line should pass). In the chat box `/engine ollama` switches new conversations, `/engine claude` switches back; `--analyst-engine ollama` and `DEXTERM_ANALYST_ENGINE=ollama` work too, and `dexterm ai engine ollama --surface autotrade` picks one surface. The local engine uses the same dexterm tools and the same firewalled context as Claude. What it may do is your restriction profile: `observe` (analyse only), `propose` (the default for a new setup: UI actions, a PAPER ticket you confirm, strategy proposals you apply), `paper` (adds paper autotrade sessions and agent paper trading in a mandate you armed: `dexterm ai restrictions paper`), `full` (only after `dexterm ai engine ollama --full` and typing ENABLE FULL, for one model). Caps, the kill switch, mandate tiers, live gating and Telegram buttons are enforced outside the model for every engine. `dexterm ai probe --json` checks tool calling, context and decision formatting; a model without tools answers from the dossier dexterm fetches and says so. Paper autotrade on it: `dexterm autotrade run <strategy> --paper --engine ollama`. Headless: `dexterm ask "question"`, `dexterm ai agent "goal"`. Docs: https://dexterm.xyz/docs/ollama/
|
|
37
|
+
|
|
38
|
+
CLI: `dexterm ai`, `dexterm ask`.
|
|
@@ -32,13 +32,16 @@ Two steps, both yours:
|
|
|
32
32
|
1. Draft and arm a mandate (`dexterm mandate draft` / `arm`, or the plans screen). Its caps are per-trade, per-coin and total size, a loss limit, open positions, price impact, allowed sides and an optional mint allow-list, and arming needs a physical keypress. For bigger simulated sizes, draft a **paper-only** mandate with `dexterm mandate draft --paper` (see paper-only mandates (https://dexterm.xyz/docs/paper-trading#paper-only-mandates)): only the agent paper desk can use it.
|
|
33
33
|
2. Start the terminal with the agent activity view and name that mandate: `dexterm --spectate-mcp --agent-paper <mandate-id>`. Quitting turns it off again.
|
|
34
34
|
|
|
35
|
-
While it is on, the agent can use
|
|
35
|
+
While it is on, the agent can use seven tools:
|
|
36
36
|
|
|
37
37
|
- `paper_open_ticket` opens a simulated ticket for a mint and side. It stays inert until confirmed.
|
|
38
38
|
- `paper_size_ticket` sets the simulated size. A buy over any cap is **refused**, never clamped up.
|
|
39
39
|
- `paper_confirm` re-checks the caps and your controls, fetches a fresh keyless quote and books the simulated fill.
|
|
40
40
|
- `paper_close` closes a fraction of a held simulated position. If the keyless quote for that close is rate-limited, the desk waits briefly and asks for a fresh quote by itself (up to 4 tries in about 25 seconds, each retry shown in the agent activity) and books the fill on that later quote, never on an old one.
|
|
41
41
|
- `paper_positions` and `paper_pnl` read the simulated positions and PnL. They are read-only.
|
|
42
|
+
- `paper_tag` records a declaration apart from a fill: a REPROFILE while it holds a coin, or a PROFILE / EXIT it did not pass with the fill (marked as declared late). It books nothing.
|
|
43
|
+
|
|
44
|
+
`paper_confirm` takes the exit profile and the entry reason (`profile`, `reason`) and `paper_close` the exit reason (`exit_reason`, `reason`) as typed fields, or the verbatim PROFILE / EXIT line in `tag_line`. They go to the trade ledger (https://dexterm.xyz/docs/paper-trading#the-trade-ledger) with the fill, so your results can be read by profile and by exit reason.
|
|
42
45
|
|
|
43
46
|
The guarantees, each covered by tests:
|
|
44
47
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-agents-reading-your-trade-ledger
|
|
3
|
+
title: Bring your own agent › Reading your trade ledger
|
|
4
|
+
kind: docs
|
|
5
|
+
page: agents
|
|
6
|
+
page_title: Bring your own agent
|
|
7
|
+
heading: Reading your trade ledger
|
|
8
|
+
anchor: reading-your-trade-ledger
|
|
9
|
+
url: https://dexterm.xyz/docs/agents#reading-your-trade-ledger
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- agents
|
|
13
|
+
- reading
|
|
14
|
+
- trade
|
|
15
|
+
- ledger
|
|
16
|
+
- bring
|
|
17
|
+
- own
|
|
18
|
+
- agent
|
|
19
|
+
confidence: high
|
|
20
|
+
owner: maintainers
|
|
21
|
+
origin: docs-generated
|
|
22
|
+
reviewed_by: generated@2026-10-16
|
|
23
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
24
|
+
sources:
|
|
25
|
+
- site/content/docs/agents.md
|
|
26
|
+
date: 2026-10-16
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Any connected agent can read the trade ledger (https://dexterm.xyz/docs/paper-trading#the-trade-ledger) with the same read-only tools as the rest of the data: `ledger_trades`, `ledger_positions`, `ledger_summary`, `ledger_equity` and `ledger_compare`, plus `candidate_dossier` (what an autotrade run saw and decided about one coin) and `outcomes_lookup` (what a coin, or every candidate of a run, turned into). `trading_status` and `telegram_status` describe your live signer and your Telegram bot: settings and state only, never a key, a seed, an address, an exact balance, a bot token or a chat id.
|
|
30
|
+
|
|
31
|
+
`backtest_request` lets an agent ask for a longer backtest than `strategy_backtest` runs. It only files the request: you see it with `dexterm autotrade requests` and run or dismiss it yourself, and the agent reads the one-line result with `backtest_requests`.
|
|
@@ -31,6 +31,6 @@ Every agent is treated as potentially compromised or buggy:
|
|
|
31
31
|
- **The gate.** One function every call passes on every transport: session open, name not on the never-list, tier sufficient, inside any mandate, arguments valid against a **closed** schema and within a size cap, rate limits and quotas with room, and an idempotency key on every proposal.
|
|
32
32
|
- **Rate, quota and flood control.** Reads/min, navigation/10s and proposals/hour are per agent; sustained refusals trip a breaker that auto-pauses the agent.
|
|
33
33
|
- **Prompt firewall.** Every untrusted string an agent receives (token names, bios, tweets, fetched page text) is wrapped and sanitised; terminal-escape, bidi-override and zero-width characters are stripped from every result, event and audit line.
|
|
34
|
-
- **Proposals, never actions.** An order-plan proposal is a draft with `armed: false`, full stop; only your physical keypress arms it, and
|
|
34
|
+
- **Proposals, never actions.** An order-plan proposal is a draft with `armed: false`, full stop; only your physical keypress arms it, and it fills on paper.
|
|
35
35
|
- **Roster + audit.** The roster popup lists every connected agent (name, tier, last activity, reads/proposals, rate usage) with per-agent **pause** and **kick**, and the full audit log records every connect, call, refusal, proposal and disconnect.
|
|
36
36
|
- **Watching adds no power.** The spectator view (https://dexterm.xyz/docs/spectator) only observes calls the gate already allowed or refused; its stream has no inbound command path and its window can send only pause, resume, take over and kill.
|
|
@@ -22,4 +22,4 @@ sources:
|
|
|
22
22
|
date: 2026-10-16
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
The panel
|
|
25
|
+
The panel says to set up an AI backend, with both ways in one line (`npm i -g @anthropic-ai/claude-code && claude login`, or a free local model with Ollama), and the rest of dexterm keeps working. `dexterm doctor` reports the Claude CLI line as a warning, not a failure. With Codex installed, `auto` runs the analyst on Codex instead; with neither but a local model (https://dexterm.xyz/docs/ollama) set up, on the local model.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-analyst-use-a-local-model-instead
|
|
3
|
+
title: The analyst › Use a local model instead
|
|
4
|
+
kind: docs
|
|
5
|
+
page: analyst
|
|
6
|
+
page_title: The analyst
|
|
7
|
+
heading: Use a local model instead
|
|
8
|
+
anchor: use-a-local-model-instead
|
|
9
|
+
url: https://dexterm.xyz/docs/analyst#use-a-local-model-instead
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- analyst
|
|
13
|
+
- use
|
|
14
|
+
- local
|
|
15
|
+
- model
|
|
16
|
+
- instead
|
|
17
|
+
confidence: high
|
|
18
|
+
owner: maintainers
|
|
19
|
+
origin: docs-generated
|
|
20
|
+
reviewed_by: generated@2026-10-16
|
|
21
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
22
|
+
sources:
|
|
23
|
+
- site/content/docs/analyst.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
The analyst can also run on **a free model on your own machine** through Ollama: no login, no key, $0 per answer, and with the default host (`127.0.0.1`) nothing leaves the machine. `dexterm ai engine ollama`, `--analyst-engine ollama` or `/engine ollama` in the chat box. Same tools, same firewalled context, same skills; what the local engine may do is set by a restriction profile you choose. See Use a local model with Ollama (https://dexterm.xyz/docs/ollama).
|
|
@@ -23,4 +23,6 @@ date: 2026-10-16
|
|
|
23
23
|
|
|
24
24
|
Every turn carries a firewalled **CONTEXT** block: the screen you are on, the filter and sort, the selected or hovered coin, the visible rows (price, change, liquidity, volume), your watchlist, and any open PAPER ticket or position. So "this coin", "it" and "the highlighted one" resolve without asking. Token names, descriptions, socials, RugCheck text and fetched page text are wrapped as `<untrusted>` data before the model sees them; instruction-like text inside such a block is itself reported as a red flag (`injection_detected`) and never followed.
|
|
25
25
|
|
|
26
|
+
**It talks in market cap.** By default the analyst speaks the way traders do: the cap at entry and the cap now, targets and stops as market-cap levels, moves as x-multiples ("in at $69.7K, now $264.9K, 3.8x"); its live snapshot leads with the market cap and reads the price history as caps at the current supply. With the price display mode (https://dexterm.xyz/docs/configuration#price-display-mode) set to price (`$` or `/display price`) it switches to USD price on the next turn. A coin without a known supply is discussed in price, and it says so.
|
|
27
|
+
|
|
26
28
|
Facts come only from tools. The system prompt forbids token facts from model memory: every number, address, flag and level must come from a tool result in the session, each carrying its source and age. The knowledge base explains mechanics and patterns; it never holds a fact about a live token.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-autotrade-backtests-and-their-limits
|
|
3
|
+
title: Autotrade (paper) › Backtests and their limits
|
|
4
|
+
kind: docs
|
|
5
|
+
page: autotrade
|
|
6
|
+
page_title: Autotrade (paper)
|
|
7
|
+
heading: Backtests and their limits
|
|
8
|
+
anchor: backtests-and-their-limits
|
|
9
|
+
url: https://dexterm.xyz/docs/autotrade#backtests-and-their-limits
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- autotrade
|
|
13
|
+
- backtests
|
|
14
|
+
- their
|
|
15
|
+
- limits
|
|
16
|
+
- paper
|
|
17
|
+
confidence: high
|
|
18
|
+
owner: maintainers
|
|
19
|
+
origin: docs-generated
|
|
20
|
+
reviewed_by: generated@2026-10-16
|
|
21
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
22
|
+
sources:
|
|
23
|
+
- site/content/docs/autotrade.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
dexterm autotrade backtest my-swing # over your recorder history (read-only)
|
|
29
|
+
dexterm autotrade backtest moonbag --every-candidate --recall 5,10
|
|
30
|
+
dexterm autotrade sweep scalp # tune on older coins, check on the newest ones
|
|
31
|
+
dexterm backtest --subject strategy --strategy swing
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
A backtest replays the strategy over the history the recorder (https://dexterm.xyz/docs/data-sources) saved on your machine, with the same entry rules, clamp and exit logic a run would use, and mechanical entries (no agent). It never touches the network or a model. The report gives the trades, wins and losses with a 95% interval on the win rate, the net, the drawdown on marked equity, how many bags could not be sold, and which exit rule, profile and trigger each result came from. Below 20 trades it says to read the counts, not the rates.
|
|
35
|
+
|
|
36
|
+
For strategies that live on a rare tail, like moonbag, it also prints:
|
|
37
|
+
|
|
38
|
+
- the **tail**: trades that ended at -80% or worse or could not be sold, how many took their cost back, the net without the single best trade, the result per dollar staked with a bootstrap 95% interval, and the exit-multiple median, 90th percentile and maximum;
|
|
39
|
+
- `--every-candidate`: every candidate entered at a fixed $20 with the book's caps lifted, so each entry is an independent sample and the result does not depend on which coins arrived first;
|
|
40
|
+
- `--recall 5,10`: of the coins that later ran 5x or 10x, how many the entry rules passed, which rule refused the others, and how each entered one was closed.
|
|
41
|
+
|
|
42
|
+
**The held-out check.** `sweep` tries a grid of parameters (for example the trail width or the first take-profit). It splits the coins by when they were first seen: the newest 30% are held out, and no coin is in both halves. It tunes on the older coins only, then checks the held-out coins exactly twice, with the unchanged strategy and with the tuned one. It only reports a gain when both halves have at least 20 trades **and** the tuned strategy makes money on the held-out coins. A tuned strategy that only loses less is reported as exactly that.
|
|
43
|
+
|
|
44
|
+
**Finer history for the coins that matter.** The recorder's snapshots are written on moves of about 5% at the screen's refresh pace, which hides the path a stop or a take-profit lives on. Run the headless recorder with `dexterm record run --focus-ticks` and it also samples the coins you hold on paper or have open every 5 seconds, and your watchlist and autotrade candidates every 10 seconds, with 1-minute candles built from those samples. A backtest reads those samples in time order next to the snapshots, so for those coins a stop fills at the next 5- or 10-second sample instead of the next snapshot. The slower fields (24-hour volume, holders, top-10 share, authorities) come from the coin's latest earlier snapshot, never a later one. Samples are kept 14 days and candles 90 days. With `--retention-mb N` the recorder removes the oldest history to stay under N MB instead of pausing; what is kept and for how long is in recorded history (https://dexterm.xyz/docs/data-sources#recorded-history-and-retention).
|
|
45
|
+
|
|
46
|
+
**On the history recorded so far, every preset lost money when entered mechanically.** The engine is a way to test your own rules honestly, not a source of profitable ones, and a backtest is not a forecast.
|
|
47
|
+
|
|
48
|
+
The limits are printed with every report:
|
|
49
|
+
|
|
50
|
+
- **Coarse prices.** Most of the history is recorder snapshots (written on moves of about 5% or every 30 minutes while a coin was listed), not trades, so stops and take-profits fill at the next recorded price. Coins sampled with `--focus-ticks` are finer (5 to 10 seconds), but a move between two samples is still invisible, and their candles' highs and lows are of the samples, not of every trade.
|
|
51
|
+
- **Modelled fills.** Price impact on the recorded pool, plus fee, slippage and network fee; not real quotes.
|
|
52
|
+
- **Survivorship.** Only coins the app recorded are in the history; coins nobody saw are absent.
|
|
53
|
+
- **Rugs.** A bag below the exit-liquidity floor cannot be sold and counts as zero, and a rug between two snapshots fills at whatever the next snapshot says.
|
|
54
|
+
- **Early entries look later than they are.** A young pair enters the history only once a feed lists it, and pairs that rugged before any feed saw them are missing, so the measured rug rate is a floor.
|
|
55
|
+
- **Missing signals.** Narrative, followed-wallet, social and dev-sell signals are not in the history, so those triggers and exits never fire in a backtest.
|
|
56
|
+
- **No agent.** A backtest has no agent latency and no agent judgement; agent backtests cost Claude usage and stay small.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-autotrade-change-a-strategy-by-chat
|
|
3
|
+
title: Autotrade (paper) › Change a strategy by chat
|
|
4
|
+
kind: docs
|
|
5
|
+
page: autotrade
|
|
6
|
+
page_title: Autotrade (paper)
|
|
7
|
+
heading: Change a strategy by chat
|
|
8
|
+
anchor: change-a-strategy-by-chat
|
|
9
|
+
url: https://dexterm.xyz/docs/autotrade#change-a-strategy-by-chat
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- autotrade
|
|
13
|
+
- change
|
|
14
|
+
- strategy
|
|
15
|
+
- chat
|
|
16
|
+
- paper
|
|
17
|
+
confidence: high
|
|
18
|
+
owner: maintainers
|
|
19
|
+
origin: docs-generated
|
|
20
|
+
reviewed_by: generated@2026-10-16
|
|
21
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
22
|
+
sources:
|
|
23
|
+
- site/content/docs/autotrade.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
Ask the analyst (`a`) to change one of your strategies in plain words, for example "make my swing exit faster" or "fewer entries a day on my copy of moonbag". The analyst can read your strategies and backtest them, but it can only **propose** a change: nothing it says changes a file.
|
|
28
|
+
|
|
29
|
+
A proposal is a small set of field changes (at most 20) with a one-line reason. Before you see it, dexterm applies it to a copy, validates the result like any strategy, and compares every risk number with the current version:
|
|
30
|
+
|
|
31
|
+
- **TIGHTER**: at least one risk number got safer and none got less safe.
|
|
32
|
+
- **NEUTRAL**: nothing that moves risk changed (a name, a description, a take-profit step).
|
|
33
|
+
- **LOOSER**: at least one risk number got less safe: a bigger size or exposure, a higher loss limit, a stop or a trail removed or widened, a safety gate removed, a screen clause dropped, more or costlier agent sessions, or a cheaper fill model.
|
|
34
|
+
|
|
35
|
+
The proposal shows up as a card on the `Q` screen under PROPOSALS FROM CHAT. `o` opens the newest one (the selected strategy's first) with every changed field, old and new, who proposed it and why:
|
|
36
|
+
|
|
37
|
+
- `y` applies a tighter or neutral proposal as a new version of the strategy. The change journal records the proposal's id, who proposed it, the change and the content hash before and after.
|
|
38
|
+
- A LOOSER proposal needs two keys: the first `y` opens the "less safe" popup that lists every field getting looser, and only a second `y` applies it. Any other key cancels.
|
|
39
|
+
- `n` dismisses the proposal; `esc` closes the card and keeps it for later.
|
|
40
|
+
|
|
41
|
+
Applying checks the proposal again from scratch: if the strategy changed since it was made, it is refused (dismiss it and ask again), and the tighter or looser verdict is worked out again rather than taken from the card.
|
|
42
|
+
|
|
43
|
+
**What the analyst can never change.** The mode (so it can never switch a strategy to live), the book, the daily session budget and the exit-liquidity floor are yours only: a proposal that touches them, directly or by replacing the section around them, is refused before it reaches you. It cannot apply a proposal or skip the second key either. A shipped preset is read-only, so the analyst proposes a copy under a new id instead, always on paper.
|
|
44
|
+
|
|
45
|
+
**A backtest next to it.** The analyst can backtest a proposal next to the current version on the same window of your recorded history (up to 14 days). That backtest is read-only (nothing is saved), runs one at a time and is rate-limited, and it carries the limits above (https://dexterm.xyz/docs/autotrade#backtests-and-their-limits): read the number of trades before the totals.
|
|
46
|
+
|
|
47
|
+
An agent you connect over MCP (`dexterm mcp`) gets the same seven tools under the same rules: `strategy_list`, `strategy_get`, `strategy_validate`, `strategy_propose_edit`, `strategy_propose_new`, `strategy_backtest` and `autotrade_status`. An AI scan (https://dexterm.xyz/docs/scan) session cannot propose at all.
|
|
48
|
+
|
|
49
|
+
Paper only. Not financial advice.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-autotrade-checking-the-record-of-a-run
|
|
3
|
+
title: Autotrade (paper) › Stopping it › Checking the record of a run
|
|
4
|
+
kind: docs
|
|
5
|
+
page: autotrade
|
|
6
|
+
page_title: Autotrade (paper)
|
|
7
|
+
heading: Checking the record of a run
|
|
8
|
+
anchor: checking-the-record-of-a-run
|
|
9
|
+
url: https://dexterm.xyz/docs/autotrade#checking-the-record-of-a-run
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- autotrade
|
|
13
|
+
- checking
|
|
14
|
+
- record
|
|
15
|
+
- run
|
|
16
|
+
- stopping
|
|
17
|
+
- paper
|
|
18
|
+
confidence: high
|
|
19
|
+
owner: maintainers
|
|
20
|
+
origin: docs-generated
|
|
21
|
+
reviewed_by: generated@2026-10-16
|
|
22
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
23
|
+
sources:
|
|
24
|
+
- site/content/docs/autotrade.md
|
|
25
|
+
date: 2026-10-16
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
`dexterm autotrade audit` lists your runs. `dexterm autotrade audit --verify` (all runs, `--last`, or one run id) recomputes each run file's hash chain and checks it against the run's summary, so an edited, missing, reordered or cut-off line is named by its event number. It exits with code 1 when a run does not verify.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-autotrade-comparing-them
|
|
3
|
+
title: Autotrade (paper) › Several strategies at once › Comparing them
|
|
4
|
+
kind: docs
|
|
5
|
+
page: autotrade
|
|
6
|
+
page_title: Autotrade (paper)
|
|
7
|
+
heading: Comparing them
|
|
8
|
+
anchor: comparing-them
|
|
9
|
+
url: https://dexterm.xyz/docs/autotrade#comparing-them
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- autotrade
|
|
13
|
+
- comparing
|
|
14
|
+
- them
|
|
15
|
+
- several
|
|
16
|
+
- strategies
|
|
17
|
+
- once
|
|
18
|
+
- paper
|
|
19
|
+
confidence: high
|
|
20
|
+
owner: maintainers
|
|
21
|
+
origin: docs-generated
|
|
22
|
+
reviewed_by: generated@2026-10-16
|
|
23
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
24
|
+
sources:
|
|
25
|
+
- site/content/docs/autotrade.md
|
|
26
|
+
date: 2026-10-16
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
`dexterm autotrade status --all` (and the Q screen's runner view while a parallel run works) shows one row per strategy:
|
|
30
|
+
|
|
31
|
+
| Column | What it counts |
|
|
32
|
+
|---|---|
|
|
33
|
+
| ACCOUNT | the paper account it trades from (shown when any strategy uses one) |
|
|
34
|
+
| P/L, P/L % | the strategy's paper book against its own bankroll; on a paper account, its own trades against the account's balance |
|
|
35
|
+
| WIN, CLOSED | the share of closed trades that made money, next to how many closed |
|
|
36
|
+
| OPEN | positions it holds now |
|
|
37
|
+
| RUGS, RUG EXP | exits caused by a rug or a liquidity pull, and the share of the money it put in that went into those coins |
|
|
38
|
+
| MISSED | coins it saw as candidates, did not enter, that later traded at 2x or more of the price it saw |
|
|
39
|
+
| SPEND, $/ENTRY | its model spend, and that spend per entry |
|
|
40
|
+
|
|
41
|
+
Below the table: one row per paper account (start, equity, cash, P/L, open positions and the strategies on it), the strategies together with each account counted once, and the shared limits in use today. `--json` gives the same numbers for a script. Read the closed-trade counts before the percentages: a few hours of paper trading is not evidence that one strategy is better.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-autotrade-exits-and-wakes
|
|
3
|
+
title: Autotrade (paper) › Exits and wakes
|
|
4
|
+
kind: docs
|
|
5
|
+
page: autotrade
|
|
6
|
+
page_title: Autotrade (paper)
|
|
7
|
+
heading: Exits and wakes
|
|
8
|
+
anchor: exits-and-wakes
|
|
9
|
+
url: https://dexterm.xyz/docs/autotrade#exits-and-wakes
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- autotrade
|
|
13
|
+
- exits
|
|
14
|
+
- wakes
|
|
15
|
+
- paper
|
|
16
|
+
confidence: high
|
|
17
|
+
owner: maintainers
|
|
18
|
+
origin: docs-generated
|
|
19
|
+
reviewed_by: generated@2026-10-16
|
|
20
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
21
|
+
sources:
|
|
22
|
+
- site/content/docs/autotrade.md
|
|
23
|
+
date: 2026-10-16
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
Exits never wait for your agent. On every tick of a coin you hold, a position monitor runs your exit profile's mechanical rules at once, in this order, and a full exit ends that tick:
|
|
27
|
+
|
|
28
|
+
1. **Rug or liquidity pull**: the pool is under the strategy's `execution.minExitLiquidityUsd`. A bag that cannot be sold is marked stuck and tried again on every tick.
|
|
29
|
+
2. **Thesis breaks**: liquidity down by the profile's percent from its recent high, a market-cap source split (the two sources count supplies more than 5× apart; a price move alone never counts, even when one source's figure is minutes old), or dead volume. (The dev-sell exit needs on-chain sell events, which are not recorded yet, so it does not fire.)
|
|
30
|
+
3. **Maximum hold** (`maxHoldMinutes`): the position's own dead-man.
|
|
31
|
+
4. **Hard stop**, when the profile has one.
|
|
32
|
+
5. **Cost recovery** (moonbag): once, at the profile's gain (+100% in moonbag), sell the slice whose proceeds pay back what the position cost, at most `maxSellFrac` of the bag (60% in moonbag). What is left is a free bag.
|
|
33
|
+
6. **The take-profit ladder**: several steps can fill on one jump.
|
|
34
|
+
7. **The bag trail** (moonbag): only after the cost came back, measured from the peak since entry (55% in moonbag).
|
|
35
|
+
8. **The trailing stop.**
|
|
36
|
+
9. **The time stop**, when its action is `exit`.
|
|
37
|
+
10. **Scale-in tranches** (`sizing.ladder`), each re-capped by your strategy.
|
|
38
|
+
|
|
39
|
+
**Wakes.** Only after those rules ran does the position's session hear anything, and everything from one tick goes out as one message:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
EVENT tp_filled: TP1 filled at +62.0%; 67% of the original size left
|
|
43
|
+
position p1: profile swing, cost $20.00, +62.0% on the mid price, TP filled 1, 67% of the size left, liq $100K
|
|
44
|
+
Reply with one of: hold, exit, tighten, reprofile.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
| event | when | your agent may answer | no answer, or no session |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| `tp_filled` | a take-profit step filled (when the profile asks for it) | hold, exit, tighten, reprofile | hold |
|
|
50
|
+
| `cost_recovered` | the cost-recovery sell filled (moonbag) | hold, exit, tighten | hold |
|
|
51
|
+
| `time_review` / `time_tighten` | the profile's clock ran out below its target | hold, exit, tighten | the profile's `wake.noAnswer` (swing: exit, runner: hold) |
|
|
52
|
+
| `drawdown` | the position fell to the profile's `wake.drawdownPct` | hold, exit, tighten | hold |
|
|
53
|
+
| `thesis_warning` | liquidity fell part of the way to a thesis exit | hold, exit, tighten | hold |
|
|
54
|
+
| `mechanical_exit` | after any mechanical exit (for information) | hold | — |
|
|
55
|
+
| `stuck` | a sell could not execute | hold | tried again every tick |
|
|
56
|
+
|
|
57
|
+
**What an answer can do.** Your agent can only lower the risk:
|
|
58
|
+
|
|
59
|
+
- `exit` sells everything, and `exit` with a `fraction` trims.
|
|
60
|
+
- `tighten` arms the trailing stop now; on a free bag it halves the bag trail (never below 10%), and nothing can loosen it again.
|
|
61
|
+
- `reprofile` moves only along the profile's `reprofileTo` edges, and a move to a profile that allows a bigger size needs the first take-profit filled.
|
|
62
|
+
- It can never add size: an `enter` or a size on a held coin is refused and written down.
|
|
63
|
+
- It can never stop or delay a mechanical exit: the next tick's rules run whether a reply is pending or not. A reply that lands after its position closed, or after `agent.decideWithinSec`, is written down and never executed.
|
|
64
|
+
|
|
65
|
+
**On the paper desk.** When the monitor runs as its own process, its orders go through the same paper desk (https://dexterm.xyz/docs/agents#agent-paper-trading) that agents use, so every fence there applies around your strategy's own clamp:
|
|
66
|
+
|
|
67
|
+
- A paper-only mandate you armed yourself with a keypress (`dexterm mandate draft --paper`). Its caps apply at the agent tier (a quarter of the per-trade cap), and an entry is refused without one.
|
|
68
|
+
- Each entry registers an exit plan with the desk, and each monitor sell is journaled as `agent.paper.exit.<rule>` (for example `agent.paper.exit.cost-recovery` or `agent.paper.exit.bag-trail`). Every fill carries a short note naming the run, the position, the profile and the exit rule.
|
|
69
|
+
- A cost-recovery slice is sized on at most three Jupiter quotes (one for the largest allowed slice, one to confirm the estimate, at most one correction); without a quote it waits for the next tick instead of guessing.
|
|
70
|
+
- A `close-only` control state lets exits run while every new buy is refused, also after the mandate has expired. `dexterm wallet panic` stops everything, exits included.
|
|
71
|
+
|
|
72
|
+
**Restarts and the dead-man.** The monitor rebuilds its positions from the paper journal and the run files. An exit that was journaled but had not filled when it stopped is never sent again; the next tick decides afresh. Paper positions it did not open are left alone. It writes `~/.dexterm/autotrade/monitor-status.json` every 10 seconds, and entries are refused when that is more than 30 seconds old. It keeps exiting while the runner is down, but it adds no scale-in tranche then.
|
|
73
|
+
|
|
74
|
+
**Today's limits.** The monitor and the desk changes are in the app, but `dexterm autotrade run` does not use them yet. Until it does, these same rules run in the same order on the engine's own paper book, the one backtests use.
|
|
75
|
+
|
|
76
|
+
Paper only: the monitor refuses a strategy in live mode, and nothing in it can arm a mandate, sign, or touch a wallet or a key.
|