Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Run a structured paper-trading loop with SQLite-backed event logging, position tracking, and PnL review. Use when opening/closing simulated trades, journalin...
Run a structured paper-trading loop with SQLite-backed event logging, position tracking, and PnL review. Use when opening/closing simulated trades, journalin...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
SQLite-backed paper trading with immutable event logs. Asset identity: symbol is required for trade/snapshot commands. mint is REQUIRED for snapshot and open (--mint <address>). If multiple positions share the same symbol, pass --mint for close/set-levels so you target the right one. For ETH/BTC on DEXs, use wrapped token contract addresses (WETH, WBTC/cbBTC) as the mint.
Use this skill when the user wants to: paper trade ideas before live capital track entries/exits/stops/takes over time compute realized and unrealized PnL keep a thesis journal and periodic review
Default DB path: ~/.openclaw/paper-trading.db Override with --db <path>.
Use the script: node --experimental-strip-types {baseDir}/scripts/paper_trading.ts --help Environment notes: No npm dependency is required for SQLite (uses node:sqlite). Node may print ExperimentalWarning for SQLite in current versions; this is expected.
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts init \ --account main \ --name "Main Paper Account" \ --base-currency USD \ --starting-balance 10000
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts snapshot \ --symbol BTC \ --mint 6p6xgHyF7AeE6TZk8x9mNQd2r2hH7r4mYJ8t6x6hYfSR \ --price 62000 \ --source dexscreener
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts open \ --account main \ --symbol BTC \ --mint 6p6xgHyF7AeE6TZk8x9mNQd2r2hH7r4mYJ8t6x6hYfSR \ --side LONG \ --qty 0.1 \ --price 62000 \ --fee 4 \ --stop-price 60500 \ --take-price 65000 \ --max-risk-pct 1.5 \ --note "Breakout + volume confirmation"
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts set-levels \ --account main \ --symbol BTC \ --mint 6p6xgHyF7AeE6TZk8x9mNQd2r2hH7r4mYJ8t6x6hYfSR \ --side LONG \ --stop-price 61200 \ --take-price 66000 \ --note "Move stop to reduce downside"
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts close \ --account main \ --symbol BTC \ --mint 6p6xgHyF7AeE6TZk8x9mNQd2r2hH7r4mYJ8t6x6hYfSR \ --side LONG \ --qty 0.05 \ --price 63500 \ --fee 3 \ --note "Partial take profit"
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts note \ --account main \ --symbol BTC \ --side LONG \ --note "Invalidation if daily close < 61k" \ --tags thesis risk macro
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts status --account main node --experimental-strip-types {baseDir}/scripts/paper_trading.ts status --account main --format json --pretty
node --experimental-strip-types {baseDir}/scripts/paper_trading.ts review --account main node --experimental-strip-types {baseDir}/scripts/paper_trading.ts review --account main --format json --pretty
Keep snapshots updated for symbols with open positions, always with --mint and --source dexscreener. Open trades only with explicit stop and risk cap (--max-risk-pct). Log every change as an event, do not edit old events. Run status after each trade and review at week end.
Events are append-only in SQLite (events table). PnL is recomputed by replaying events. status uses the latest snapshot per symbol + mint pair for unrealized PnL.
Run the full paper-trading test suite: node --test {baseDir}/tests/paper_trading.test.mjs
Data access, storage, extraction, analysis, reporting, and insight generation.
Largest current source with strong distribution and engagement signals.