dexterm-cli 0.1.6 → 0.2.0
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/spectator.js +3 -1
- package/dist/packages/agents/src/story.js +11 -2
- package/dist/packages/agents/src/tiers.js +36 -2
- package/dist/packages/agents/src/tools.js +35 -2
- package/dist/packages/autotrade/assets/exit-profile.schema.json +492 -0
- package/dist/packages/autotrade/assets/limits.schema.json +569 -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/examples/executor/README.md +70 -0
- package/dist/packages/autotrade/examples/executor/jsonl-tail-executor.mjs +57 -0
- package/dist/packages/autotrade/examples/executor/kit.mjs +144 -0
- package/dist/packages/autotrade/examples/executor/signal-cmd-executor.mjs +25 -0
- package/dist/packages/autotrade/examples/executor/telegram-bot-recipe.md +47 -0
- package/dist/packages/autotrade/examples/executor/webhook-executor.mjs +47 -0
- package/dist/packages/autotrade/src/account.js +74 -0
- package/dist/packages/autotrade/src/backtest.js +358 -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 +95 -0
- package/dist/packages/autotrade/src/chat/connector.js +24 -0
- package/dist/packages/autotrade/src/chat/control.js +104 -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 +302 -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 +106 -0
- package/dist/packages/autotrade/src/chat/service.js +251 -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 +401 -0
- package/dist/packages/autotrade/src/execution-port.js +97 -0
- package/dist/packages/autotrade/src/executor-health.js +217 -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 +642 -0
- package/dist/packages/autotrade/src/forward.js +355 -0
- package/dist/packages/autotrade/src/index.js +72 -0
- package/dist/packages/autotrade/src/journey.js +477 -0
- package/dist/packages/autotrade/src/ledger.js +108 -0
- package/dist/packages/autotrade/src/limits.js +682 -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/outbox.js +394 -0
- package/dist/packages/autotrade/src/paper-accounts.js +72 -0
- package/dist/packages/autotrade/src/paper-limits.js +87 -0
- package/dist/packages/autotrade/src/real-mode.js +688 -0
- package/dist/packages/autotrade/src/receipts.js +330 -0
- package/dist/packages/autotrade/src/replay.js +198 -0
- package/dist/packages/autotrade/src/report.js +168 -0
- package/dist/packages/autotrade/src/runner-config.js +99 -0
- package/dist/packages/autotrade/src/runner.js +923 -0
- package/dist/packages/autotrade/src/safety.js +243 -0
- package/dist/packages/autotrade/src/service-guard.js +125 -0
- package/dist/packages/autotrade/src/service-install.js +213 -0
- package/dist/packages/autotrade/src/service-recover.js +232 -0
- package/dist/packages/autotrade/src/service.js +289 -0
- package/dist/packages/autotrade/src/session.js +269 -0
- package/dist/packages/autotrade/src/sessions.js +503 -0
- package/dist/packages/autotrade/src/signal-channels.js +312 -0
- package/dist/packages/autotrade/src/signal.js +196 -0
- package/dist/packages/autotrade/src/store.js +250 -0
- package/dist/packages/autotrade/src/strategy.js +258 -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 +83 -15
- package/dist/packages/cli/src/analyst/codex.js +15 -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 +56 -8
- package/dist/packages/cli/src/autotrade-cmd/audit.js +74 -0
- package/dist/packages/cli/src/autotrade-cmd/backtest.js +216 -0
- package/dist/packages/cli/src/autotrade-cmd/executor.js +91 -0
- package/dist/packages/cli/src/autotrade-cmd/flatten.js +64 -0
- package/dist/packages/cli/src/autotrade-cmd/fleet.js +401 -0
- package/dist/packages/cli/src/autotrade-cmd/forward.js +283 -0
- package/dist/packages/cli/src/autotrade-cmd/journey.js +208 -0
- package/dist/packages/cli/src/autotrade-cmd/limits.js +393 -0
- package/dist/packages/cli/src/autotrade-cmd/receipt.js +63 -0
- package/dist/packages/cli/src/autotrade-cmd/report.js +79 -0
- package/dist/packages/cli/src/autotrade-cmd/requests.js +79 -0
- package/dist/packages/cli/src/autotrade-cmd/run.js +657 -0
- package/dist/packages/cli/src/autotrade-cmd/service.js +873 -0
- package/dist/packages/cli/src/autotrade-cmd/signal.js +824 -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 +214 -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 +290 -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 +162 -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-journey.js +134 -0
- package/dist/packages/cli/src/screens/autotrade-keys.js +182 -0
- package/dist/packages/cli/src/screens/autotrade-proposals.js +123 -0
- package/dist/packages/cli/src/screens/autotrade-screen.js +776 -0
- package/dist/packages/cli/src/screens/autotrade-ui.js +650 -0
- package/dist/packages/cli/src/screens/autotrade-worker.js +91 -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 +454 -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-executor-kit.md +44 -0
- package/dist/packages/mcp/assets/kb/app-help/autotrade-journey.md +46 -0
- package/dist/packages/mcp/assets/kb/app-help/autotrade-limits.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-real-signal.md +45 -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 +229 -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 +51 -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 +38 -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 +37 -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-always-on-service.md +57 -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 +50 -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-build-a-strategy-by-chat-1-ask-for-a-strategy.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-2-backtest-it-held-out-split.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-3-forward-test-it-on-live-data.md +44 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-4-promote-it-to-always-on-paper.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-5-real-only-if-you-choose.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-the-ladder.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-the-report.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-what-the-analyst-knows.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat.md +24 -0
- 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-going-real-executor-health.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-going-real-paper-vs-real.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-digest.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-executor-kit.md +48 -0
- package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-whole-path.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-going-real-what-dexterm-does-and-never-does.md +44 -0
- package/dist/packages/mcp/assets/kb/docs/docs-going-real-your-limits.md +77 -0
- package/dist/packages/mcp/assets/kb/docs/docs-going-real.md +24 -0
- 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-real-mode-your-strategy-s-trades-to-your.md +31 -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 +31 -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-real-mode-receipts-what-your-executor-did.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode-safety.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode-set-it-up.md +47 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode-the-channels.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode-the-signal.md +48 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode-what-it-is.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode-what-it-will-not-do.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode-where-you-see-it.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-real-mode.md +27 -0
- 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 +40 -0
- package/dist/packages/mcp/src/app-help.js +1 -1
- package/dist/packages/mcp/src/autotrade-tools.js +1107 -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 +494 -0
- package/dist/packages/mcp/src/paper-agent.js +2 -0
- package/dist/packages/mcp/src/server.js +138 -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 +28 -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
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://dexterm.xyz/schemas/limits.schema.json",
|
|
4
|
+
"title": "dexterm-limits/1",
|
|
5
|
+
"description": "dexterm real-mode limits: $DEXTERM_HOME/autotrade/real/limits.json. A number in global replaces the placeholder default (null turns it off); every other scope can only tighten (the stricter number wins). Only `dexterm autotrade limits` writes it; raising needs a typed confirmation on a real terminal.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema"
|
|
10
|
+
],
|
|
11
|
+
"properties": {
|
|
12
|
+
"schema": {
|
|
13
|
+
"const": "dexterm-limits/1"
|
|
14
|
+
},
|
|
15
|
+
"global": {
|
|
16
|
+
"$ref": "#/$defs/globalSet"
|
|
17
|
+
},
|
|
18
|
+
"modes": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"additionalProperties": false,
|
|
21
|
+
"properties": {
|
|
22
|
+
"real": {
|
|
23
|
+
"$ref": "#/$defs/set"
|
|
24
|
+
},
|
|
25
|
+
"paper": {
|
|
26
|
+
"$ref": "#/$defs/set"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"strategies": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"propertyNames": {
|
|
33
|
+
"pattern": "^[a-z0-9][a-z0-9._-]{0,63}$"
|
|
34
|
+
},
|
|
35
|
+
"additionalProperties": {
|
|
36
|
+
"$ref": "#/$defs/set"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"accounts": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"propertyNames": {
|
|
42
|
+
"pattern": "^[a-z0-9][a-z0-9._-]{0,63}$"
|
|
43
|
+
},
|
|
44
|
+
"additionalProperties": {
|
|
45
|
+
"$ref": "#/$defs/set"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"updatedAt": {
|
|
49
|
+
"type": "number"
|
|
50
|
+
},
|
|
51
|
+
"migratedFrom": {
|
|
52
|
+
"type": "string"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"$defs": {
|
|
56
|
+
"set": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": false,
|
|
59
|
+
"properties": {
|
|
60
|
+
"perTradeSol": {
|
|
61
|
+
"type": "number",
|
|
62
|
+
"minimum": 1e-06,
|
|
63
|
+
"maximum": 1000000000000,
|
|
64
|
+
"description": "the most SOL one buy signal may spend (a bigger buy is clamped down to it) (SOL; a cap: smaller is stricter)"
|
|
65
|
+
},
|
|
66
|
+
"perTradePct": {
|
|
67
|
+
"type": "number",
|
|
68
|
+
"minimum": 0.01,
|
|
69
|
+
"maximum": 100,
|
|
70
|
+
"description": "the most one buy may spend as a percent of the book (bookSol, else the strategy book); with perTradeSol set too, the smaller wins (% of book; a cap: smaller is stricter)"
|
|
71
|
+
},
|
|
72
|
+
"dailySol": {
|
|
73
|
+
"type": "number",
|
|
74
|
+
"minimum": 1e-06,
|
|
75
|
+
"maximum": 1000000000000,
|
|
76
|
+
"description": "SOL all buy signals may spend per local day (a buy over it is refused) (SOL/day; a cap: smaller is stricter)"
|
|
77
|
+
},
|
|
78
|
+
"buysPerDay": {
|
|
79
|
+
"type": "integer",
|
|
80
|
+
"minimum": 0,
|
|
81
|
+
"maximum": 1000000,
|
|
82
|
+
"description": "buy signals per local day (0 = no buys) (buys/day; a cap: smaller is stricter)"
|
|
83
|
+
},
|
|
84
|
+
"maxOpenPositions": {
|
|
85
|
+
"type": "integer",
|
|
86
|
+
"minimum": 0,
|
|
87
|
+
"maximum": 100000,
|
|
88
|
+
"description": "real positions open at once, across every strategy and account on this home (open; a cap: smaller is stricter)"
|
|
89
|
+
},
|
|
90
|
+
"maxExposurePct": {
|
|
91
|
+
"type": "number",
|
|
92
|
+
"minimum": 0.01,
|
|
93
|
+
"maximum": 100,
|
|
94
|
+
"description": "the cost of every open real position together, as a percent of the book (a buy is clamped to what is left) (% of book; a cap: smaller is stricter)"
|
|
95
|
+
},
|
|
96
|
+
"minPositionSol": {
|
|
97
|
+
"type": "number",
|
|
98
|
+
"minimum": 0,
|
|
99
|
+
"maximum": 1000000000000,
|
|
100
|
+
"description": "a buy smaller than this after every clamp is refused (no dust orders) (SOL; a floor: larger is stricter)"
|
|
101
|
+
},
|
|
102
|
+
"maxPositionSol": {
|
|
103
|
+
"type": "number",
|
|
104
|
+
"minimum": 1e-06,
|
|
105
|
+
"maximum": 1000000000000,
|
|
106
|
+
"description": "the most SOL one position may cost, adds included (a buy is clamped to what is left) (SOL; a cap: smaller is stricter)"
|
|
107
|
+
},
|
|
108
|
+
"perCoinSolPerDay": {
|
|
109
|
+
"type": "number",
|
|
110
|
+
"minimum": 1e-06,
|
|
111
|
+
"maximum": 1000000000000,
|
|
112
|
+
"description": "SOL spent on one coin per local day, re-entries included (a buy over it is refused) (SOL/day; a cap: smaller is stricter)"
|
|
113
|
+
},
|
|
114
|
+
"perCoinBuysPerDay": {
|
|
115
|
+
"type": "integer",
|
|
116
|
+
"minimum": 0,
|
|
117
|
+
"maximum": 100000,
|
|
118
|
+
"description": "buy signals on one coin per local day (buys/day; a cap: smaller is stricter)"
|
|
119
|
+
},
|
|
120
|
+
"bookSol": {
|
|
121
|
+
"type": "number",
|
|
122
|
+
"minimum": 1e-06,
|
|
123
|
+
"maximum": 1000000000000,
|
|
124
|
+
"description": "what the percent limits are a percent of: the size of YOUR account (unset = the strategy's own book) (SOL; a cap: smaller is stricter)"
|
|
125
|
+
},
|
|
126
|
+
"dailyLossSol": {
|
|
127
|
+
"type": "number",
|
|
128
|
+
"minimum": 1e-06,
|
|
129
|
+
"maximum": 1000000000000,
|
|
130
|
+
"description": "when the day's realized loss reaches this, no new buy goes out until the next local day (exits still do) (SOL/day; a cap: smaller is stricter)"
|
|
131
|
+
},
|
|
132
|
+
"maxDrawdownSol": {
|
|
133
|
+
"type": "number",
|
|
134
|
+
"minimum": 1e-06,
|
|
135
|
+
"maximum": 1000000000000,
|
|
136
|
+
"description": "the drawdown breaker: realized PnL this far below its peak trips it; no new buy until you reset it (typed) (SOL; a cap: smaller is stricter)"
|
|
137
|
+
},
|
|
138
|
+
"lossStreak": {
|
|
139
|
+
"type": "integer",
|
|
140
|
+
"minimum": 1,
|
|
141
|
+
"maximum": 10000,
|
|
142
|
+
"description": "this many losing closes in a row pause new buys for lossStreakPauseMin (losses; a cap: smaller is stricter)"
|
|
143
|
+
},
|
|
144
|
+
"lossStreakPauseMin": {
|
|
145
|
+
"type": "number",
|
|
146
|
+
"minimum": 1,
|
|
147
|
+
"maximum": 525600,
|
|
148
|
+
"description": "how long the loss-streak pause lasts (min; a floor: larger is stricter)"
|
|
149
|
+
},
|
|
150
|
+
"maxHoldMinutes": {
|
|
151
|
+
"type": "number",
|
|
152
|
+
"minimum": 1,
|
|
153
|
+
"maximum": 525600,
|
|
154
|
+
"description": "a real position held this long gets its exit signal (the stricter of this and the exit profile's own cap) (min; a cap: smaller is stricter)"
|
|
155
|
+
},
|
|
156
|
+
"minLiquidityUsd": {
|
|
157
|
+
"type": "number",
|
|
158
|
+
"minimum": 0,
|
|
159
|
+
"maximum": 1000000000000,
|
|
160
|
+
"description": "no buy on a coin with less pool liquidity (unknown liquidity is refused while this is set) (USD; a floor: larger is stricter)"
|
|
161
|
+
},
|
|
162
|
+
"minMcapUsd": {
|
|
163
|
+
"type": "number",
|
|
164
|
+
"minimum": 0,
|
|
165
|
+
"maximum": 1000000000000,
|
|
166
|
+
"description": "no buy on a coin below this market cap (unknown is refused while this is set) (USD; a floor: larger is stricter)"
|
|
167
|
+
},
|
|
168
|
+
"maxSlippageBps": {
|
|
169
|
+
"type": "integer",
|
|
170
|
+
"minimum": 1,
|
|
171
|
+
"maximum": 10000,
|
|
172
|
+
"description": "the slippage tolerance a signal states (the stricter of this and the strategy's) (bps; a cap: smaller is stricter)"
|
|
173
|
+
},
|
|
174
|
+
"maxPriceImpactPct": {
|
|
175
|
+
"type": "number",
|
|
176
|
+
"minimum": 0.01,
|
|
177
|
+
"maximum": 100,
|
|
178
|
+
"description": "the price impact a buy may have on the pool (constant-product estimate): a buy is clamped to it; the signal states it (%; a cap: smaller is stricter)"
|
|
179
|
+
},
|
|
180
|
+
"signalTtlSec": {
|
|
181
|
+
"type": "integer",
|
|
182
|
+
"minimum": 10,
|
|
183
|
+
"maximum": 600,
|
|
184
|
+
"description": "how long an executor may act on a signal (the stricter of this and the channel setting) (s; a cap: smaller is stricter)"
|
|
185
|
+
},
|
|
186
|
+
"maxBuysPerMinute": {
|
|
187
|
+
"type": "integer",
|
|
188
|
+
"minimum": 0,
|
|
189
|
+
"maximum": 10000,
|
|
190
|
+
"description": "the signal rate limit: buy signals in any 60 s (buys/min; a cap: smaller is stricter)"
|
|
191
|
+
},
|
|
192
|
+
"maxSellsPerMinute": {
|
|
193
|
+
"type": "integer",
|
|
194
|
+
"minimum": 1,
|
|
195
|
+
"maximum": 10000,
|
|
196
|
+
"description": "OPTIONAL: sells are never capped unless you set this; a sell over it waits for the next tick (sells/min; a cap: smaller is stricter)"
|
|
197
|
+
},
|
|
198
|
+
"minForwardTrades": {
|
|
199
|
+
"type": "integer",
|
|
200
|
+
"minimum": 0,
|
|
201
|
+
"maximum": 100000,
|
|
202
|
+
"description": "the evidence floor for real: arming needs a COMPLETED forward test of these exact rules with at least this many closed paper trades, and a backtest on record (below it only a typed override on your own terminal arms, journaled) (trades; a floor: larger is stricter)"
|
|
203
|
+
},
|
|
204
|
+
"executorSilenceMin": {
|
|
205
|
+
"type": "number",
|
|
206
|
+
"minimum": 1,
|
|
207
|
+
"maximum": 525600,
|
|
208
|
+
"description": "no heartbeat, receipt or ack from your executor for this long pauses new buy signals (exits still go out) (min; a cap: smaller is stricter)"
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"globalSet": {
|
|
213
|
+
"type": "object",
|
|
214
|
+
"additionalProperties": false,
|
|
215
|
+
"properties": {
|
|
216
|
+
"perTradeSol": {
|
|
217
|
+
"oneOf": [
|
|
218
|
+
{
|
|
219
|
+
"type": "null",
|
|
220
|
+
"description": "off: this limit does not apply"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"type": "number",
|
|
224
|
+
"minimum": 1e-06,
|
|
225
|
+
"maximum": 1000000000000,
|
|
226
|
+
"description": "the most SOL one buy signal may spend (a bigger buy is clamped down to it) (SOL; a cap: smaller is stricter)"
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
"perTradePct": {
|
|
231
|
+
"oneOf": [
|
|
232
|
+
{
|
|
233
|
+
"type": "null",
|
|
234
|
+
"description": "off: this limit does not apply"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"type": "number",
|
|
238
|
+
"minimum": 0.01,
|
|
239
|
+
"maximum": 100,
|
|
240
|
+
"description": "the most one buy may spend as a percent of the book (bookSol, else the strategy book); with perTradeSol set too, the smaller wins (% of book; a cap: smaller is stricter)"
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
"dailySol": {
|
|
245
|
+
"oneOf": [
|
|
246
|
+
{
|
|
247
|
+
"type": "null",
|
|
248
|
+
"description": "off: this limit does not apply"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"type": "number",
|
|
252
|
+
"minimum": 1e-06,
|
|
253
|
+
"maximum": 1000000000000,
|
|
254
|
+
"description": "SOL all buy signals may spend per local day (a buy over it is refused) (SOL/day; a cap: smaller is stricter)"
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
},
|
|
258
|
+
"buysPerDay": {
|
|
259
|
+
"oneOf": [
|
|
260
|
+
{
|
|
261
|
+
"type": "null",
|
|
262
|
+
"description": "off: this limit does not apply"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"type": "integer",
|
|
266
|
+
"minimum": 0,
|
|
267
|
+
"maximum": 1000000,
|
|
268
|
+
"description": "buy signals per local day (0 = no buys) (buys/day; a cap: smaller is stricter)"
|
|
269
|
+
}
|
|
270
|
+
]
|
|
271
|
+
},
|
|
272
|
+
"maxOpenPositions": {
|
|
273
|
+
"oneOf": [
|
|
274
|
+
{
|
|
275
|
+
"type": "null",
|
|
276
|
+
"description": "off: this limit does not apply"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"type": "integer",
|
|
280
|
+
"minimum": 0,
|
|
281
|
+
"maximum": 100000,
|
|
282
|
+
"description": "real positions open at once, across every strategy and account on this home (open; a cap: smaller is stricter)"
|
|
283
|
+
}
|
|
284
|
+
]
|
|
285
|
+
},
|
|
286
|
+
"maxExposurePct": {
|
|
287
|
+
"oneOf": [
|
|
288
|
+
{
|
|
289
|
+
"type": "null",
|
|
290
|
+
"description": "off: this limit does not apply"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"type": "number",
|
|
294
|
+
"minimum": 0.01,
|
|
295
|
+
"maximum": 100,
|
|
296
|
+
"description": "the cost of every open real position together, as a percent of the book (a buy is clamped to what is left) (% of book; a cap: smaller is stricter)"
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
"minPositionSol": {
|
|
301
|
+
"oneOf": [
|
|
302
|
+
{
|
|
303
|
+
"type": "null",
|
|
304
|
+
"description": "off: this limit does not apply"
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"type": "number",
|
|
308
|
+
"minimum": 0,
|
|
309
|
+
"maximum": 1000000000000,
|
|
310
|
+
"description": "a buy smaller than this after every clamp is refused (no dust orders) (SOL; a floor: larger is stricter)"
|
|
311
|
+
}
|
|
312
|
+
]
|
|
313
|
+
},
|
|
314
|
+
"maxPositionSol": {
|
|
315
|
+
"oneOf": [
|
|
316
|
+
{
|
|
317
|
+
"type": "null",
|
|
318
|
+
"description": "off: this limit does not apply"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"type": "number",
|
|
322
|
+
"minimum": 1e-06,
|
|
323
|
+
"maximum": 1000000000000,
|
|
324
|
+
"description": "the most SOL one position may cost, adds included (a buy is clamped to what is left) (SOL; a cap: smaller is stricter)"
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
"perCoinSolPerDay": {
|
|
329
|
+
"oneOf": [
|
|
330
|
+
{
|
|
331
|
+
"type": "null",
|
|
332
|
+
"description": "off: this limit does not apply"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"type": "number",
|
|
336
|
+
"minimum": 1e-06,
|
|
337
|
+
"maximum": 1000000000000,
|
|
338
|
+
"description": "SOL spent on one coin per local day, re-entries included (a buy over it is refused) (SOL/day; a cap: smaller is stricter)"
|
|
339
|
+
}
|
|
340
|
+
]
|
|
341
|
+
},
|
|
342
|
+
"perCoinBuysPerDay": {
|
|
343
|
+
"oneOf": [
|
|
344
|
+
{
|
|
345
|
+
"type": "null",
|
|
346
|
+
"description": "off: this limit does not apply"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"type": "integer",
|
|
350
|
+
"minimum": 0,
|
|
351
|
+
"maximum": 100000,
|
|
352
|
+
"description": "buy signals on one coin per local day (buys/day; a cap: smaller is stricter)"
|
|
353
|
+
}
|
|
354
|
+
]
|
|
355
|
+
},
|
|
356
|
+
"bookSol": {
|
|
357
|
+
"oneOf": [
|
|
358
|
+
{
|
|
359
|
+
"type": "null",
|
|
360
|
+
"description": "off: this limit does not apply"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"type": "number",
|
|
364
|
+
"minimum": 1e-06,
|
|
365
|
+
"maximum": 1000000000000,
|
|
366
|
+
"description": "what the percent limits are a percent of: the size of YOUR account (unset = the strategy's own book) (SOL; a cap: smaller is stricter)"
|
|
367
|
+
}
|
|
368
|
+
]
|
|
369
|
+
},
|
|
370
|
+
"dailyLossSol": {
|
|
371
|
+
"oneOf": [
|
|
372
|
+
{
|
|
373
|
+
"type": "null",
|
|
374
|
+
"description": "off: this limit does not apply"
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"type": "number",
|
|
378
|
+
"minimum": 1e-06,
|
|
379
|
+
"maximum": 1000000000000,
|
|
380
|
+
"description": "when the day's realized loss reaches this, no new buy goes out until the next local day (exits still do) (SOL/day; a cap: smaller is stricter)"
|
|
381
|
+
}
|
|
382
|
+
]
|
|
383
|
+
},
|
|
384
|
+
"maxDrawdownSol": {
|
|
385
|
+
"oneOf": [
|
|
386
|
+
{
|
|
387
|
+
"type": "null",
|
|
388
|
+
"description": "off: this limit does not apply"
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"type": "number",
|
|
392
|
+
"minimum": 1e-06,
|
|
393
|
+
"maximum": 1000000000000,
|
|
394
|
+
"description": "the drawdown breaker: realized PnL this far below its peak trips it; no new buy until you reset it (typed) (SOL; a cap: smaller is stricter)"
|
|
395
|
+
}
|
|
396
|
+
]
|
|
397
|
+
},
|
|
398
|
+
"lossStreak": {
|
|
399
|
+
"oneOf": [
|
|
400
|
+
{
|
|
401
|
+
"type": "null",
|
|
402
|
+
"description": "off: this limit does not apply"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"type": "integer",
|
|
406
|
+
"minimum": 1,
|
|
407
|
+
"maximum": 10000,
|
|
408
|
+
"description": "this many losing closes in a row pause new buys for lossStreakPauseMin (losses; a cap: smaller is stricter)"
|
|
409
|
+
}
|
|
410
|
+
]
|
|
411
|
+
},
|
|
412
|
+
"lossStreakPauseMin": {
|
|
413
|
+
"oneOf": [
|
|
414
|
+
{
|
|
415
|
+
"type": "null",
|
|
416
|
+
"description": "off: this limit does not apply"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"type": "number",
|
|
420
|
+
"minimum": 1,
|
|
421
|
+
"maximum": 525600,
|
|
422
|
+
"description": "how long the loss-streak pause lasts (min; a floor: larger is stricter)"
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
"maxHoldMinutes": {
|
|
427
|
+
"oneOf": [
|
|
428
|
+
{
|
|
429
|
+
"type": "null",
|
|
430
|
+
"description": "off: this limit does not apply"
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"type": "number",
|
|
434
|
+
"minimum": 1,
|
|
435
|
+
"maximum": 525600,
|
|
436
|
+
"description": "a real position held this long gets its exit signal (the stricter of this and the exit profile's own cap) (min; a cap: smaller is stricter)"
|
|
437
|
+
}
|
|
438
|
+
]
|
|
439
|
+
},
|
|
440
|
+
"minLiquidityUsd": {
|
|
441
|
+
"oneOf": [
|
|
442
|
+
{
|
|
443
|
+
"type": "null",
|
|
444
|
+
"description": "off: this limit does not apply"
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"type": "number",
|
|
448
|
+
"minimum": 0,
|
|
449
|
+
"maximum": 1000000000000,
|
|
450
|
+
"description": "no buy on a coin with less pool liquidity (unknown liquidity is refused while this is set) (USD; a floor: larger is stricter)"
|
|
451
|
+
}
|
|
452
|
+
]
|
|
453
|
+
},
|
|
454
|
+
"minMcapUsd": {
|
|
455
|
+
"oneOf": [
|
|
456
|
+
{
|
|
457
|
+
"type": "null",
|
|
458
|
+
"description": "off: this limit does not apply"
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"type": "number",
|
|
462
|
+
"minimum": 0,
|
|
463
|
+
"maximum": 1000000000000,
|
|
464
|
+
"description": "no buy on a coin below this market cap (unknown is refused while this is set) (USD; a floor: larger is stricter)"
|
|
465
|
+
}
|
|
466
|
+
]
|
|
467
|
+
},
|
|
468
|
+
"maxSlippageBps": {
|
|
469
|
+
"oneOf": [
|
|
470
|
+
{
|
|
471
|
+
"type": "null",
|
|
472
|
+
"description": "off: this limit does not apply"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"type": "integer",
|
|
476
|
+
"minimum": 1,
|
|
477
|
+
"maximum": 10000,
|
|
478
|
+
"description": "the slippage tolerance a signal states (the stricter of this and the strategy's) (bps; a cap: smaller is stricter)"
|
|
479
|
+
}
|
|
480
|
+
]
|
|
481
|
+
},
|
|
482
|
+
"maxPriceImpactPct": {
|
|
483
|
+
"oneOf": [
|
|
484
|
+
{
|
|
485
|
+
"type": "null",
|
|
486
|
+
"description": "off: this limit does not apply"
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"type": "number",
|
|
490
|
+
"minimum": 0.01,
|
|
491
|
+
"maximum": 100,
|
|
492
|
+
"description": "the price impact a buy may have on the pool (constant-product estimate): a buy is clamped to it; the signal states it (%; a cap: smaller is stricter)"
|
|
493
|
+
}
|
|
494
|
+
]
|
|
495
|
+
},
|
|
496
|
+
"signalTtlSec": {
|
|
497
|
+
"oneOf": [
|
|
498
|
+
{
|
|
499
|
+
"type": "null",
|
|
500
|
+
"description": "off: this limit does not apply"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"type": "integer",
|
|
504
|
+
"minimum": 10,
|
|
505
|
+
"maximum": 600,
|
|
506
|
+
"description": "how long an executor may act on a signal (the stricter of this and the channel setting) (s; a cap: smaller is stricter)"
|
|
507
|
+
}
|
|
508
|
+
]
|
|
509
|
+
},
|
|
510
|
+
"maxBuysPerMinute": {
|
|
511
|
+
"oneOf": [
|
|
512
|
+
{
|
|
513
|
+
"type": "null",
|
|
514
|
+
"description": "off: this limit does not apply"
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"type": "integer",
|
|
518
|
+
"minimum": 0,
|
|
519
|
+
"maximum": 10000,
|
|
520
|
+
"description": "the signal rate limit: buy signals in any 60 s (buys/min; a cap: smaller is stricter)"
|
|
521
|
+
}
|
|
522
|
+
]
|
|
523
|
+
},
|
|
524
|
+
"maxSellsPerMinute": {
|
|
525
|
+
"oneOf": [
|
|
526
|
+
{
|
|
527
|
+
"type": "null",
|
|
528
|
+
"description": "off: this limit does not apply"
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"type": "integer",
|
|
532
|
+
"minimum": 1,
|
|
533
|
+
"maximum": 10000,
|
|
534
|
+
"description": "OPTIONAL: sells are never capped unless you set this; a sell over it waits for the next tick (sells/min; a cap: smaller is stricter)"
|
|
535
|
+
}
|
|
536
|
+
]
|
|
537
|
+
},
|
|
538
|
+
"minForwardTrades": {
|
|
539
|
+
"oneOf": [
|
|
540
|
+
{
|
|
541
|
+
"type": "null",
|
|
542
|
+
"description": "off: this limit does not apply"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"type": "integer",
|
|
546
|
+
"minimum": 0,
|
|
547
|
+
"maximum": 100000,
|
|
548
|
+
"description": "the evidence floor for real: arming needs a COMPLETED forward test of these exact rules with at least this many closed paper trades, and a backtest on record (below it only a typed override on your own terminal arms, journaled) (trades; a floor: larger is stricter)"
|
|
549
|
+
}
|
|
550
|
+
]
|
|
551
|
+
},
|
|
552
|
+
"executorSilenceMin": {
|
|
553
|
+
"oneOf": [
|
|
554
|
+
{
|
|
555
|
+
"type": "null",
|
|
556
|
+
"description": "off: this limit does not apply"
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"type": "number",
|
|
560
|
+
"minimum": 1,
|
|
561
|
+
"maximum": 525600,
|
|
562
|
+
"description": "no heartbeat, receipt or ack from your executor for this long pauses new buy signals (exits still go out) (min; a cap: smaller is stricter)"
|
|
563
|
+
}
|
|
564
|
+
]
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
@@ -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
|
+
}
|