OpenMM Grid Trading

Create and manage grid trading strategies with OpenMM. Automated buy/sell around center price.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 426 · 5 current installs · 6 all-time installs
byAngelos Kappos@adacapo21
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill claims to run OpenMM grid trading (which legitimately needs an 'openmm' binary and an API key for the exchange you choose). However the metadata requires four different exchange API keys (MEXC, GATEIO, BITGET, KRAKEN) even though a user will typically only trade on a single exchange per run. Requiring all exchange keys up-front is disproportionate and unexplained.
Instruction Scope
The SKILL.md itself only instructs the agent to run the 'openmm' CLI with flags and to load optional local JSON profile files; it does not ask the agent to read arbitrary system files or exfiltrate data. However the runtime metadata declares environment variables (multiple API keys) that the docs do not clearly justify or scope to 'only provide the key for the exchange you will use'. This gap between instructions and declared requirements is noteworthy.
Install Mechanism
Install is via an npm package (@3rd-eye-labs/openmm) which will create the 'openmm' binary. Using npm is a common mechanism but carries moderate risk because packages are third-party code. No direct downloads from untrusted URLs or archive extraction are declared, but the package source/maintainer is unknown and should be audited before install.
!
Credentials
Listing four exchange API keys as required is excessive for a tool that only needs the key for the exchange you choose at runtime. These API keys are sensitive (can enable trading and possibly withdrawals). The skill does not declare a primary credential nor document minimal required permissions (e.g., disable withdrawals), so the requested secrets are not proportional or adequately justified.
Persistence & Privilege
The skill does not request always: true, does not declare system config paths, and does not appear to demand persistent system-level privileges. It appears to be limited to installing/using its own 'openmm' binary.
Scan Findings in Context
[no_findings] expected: The scanner found nothing because this is an instruction-only skill with no code files. That is expected, but it means there is no local code to review — you must instead inspect the npm package before trusting it.
What to consider before installing
Before installing or providing credentials: (1) Only supply API keys for the exchange(s) you actually intend to use — do not populate all four keys unless you need them. (2) Create API keys with minimal permissions (enable trading, disable withdrawals) and, where available, restrict by IP. (3) Audit the npm package @3rd-eye-labs/openmm before installation: check its repository, publisher, package.json, and published code for unexpected behavior. (4) Run the tool in a sandboxed environment (container or VM) and test with --dry-run first. (5) If you cannot inspect the package or verify the publisher, treat the package as higher-risk and avoid giving long-lived credentials. Additional information that would raise confidence: the package's source repository, a verified publisher, or explicit docs saying only the key for the selected exchange is required and what permissions are needed.

Like a lobster shell, security has layers — review code before you run it.

Current versionv0.1.0
Download zip
gridvk97akmx8fj0ejsza7yr25ypv3181vbcnlatestvk97akmx8fj0ejsza7yr25ypv3181vbcnmarketmakingvk97akmx8fj0ejsza7yr25ypv3181vbcnopenmmvk97akmx8fj0ejsza7yr25ypv3181vbcntradingvk97akmx8fj0ejsza7yr25ypv3181vbcn

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

📊 Clawdis
Binsopenmm
EnvMEXC_API_KEY, GATEIO_API_KEY, BITGET_API_KEY, KRAKEN_API_KEY

Install

Node
Bins: openmm
npm i -g @3rd-eye-labs/openmm

SKILL.md

OpenMM Grid Trading

Create automated grid trading strategies that profit from market volatility.

What is Grid Trading?

Grid trading places multiple buy and sell orders at preset price intervals around the current center price. As price oscillates, the bot automatically:

  • Buys low — places buy orders below the center price
  • Sells high — places sell orders above the center price
  • Profits from volatility — each complete cycle captures the spread

The grid uses levels per side and spacing to distribute orders. With 5 levels and 2% spacing (linear), orders are placed at 2%, 4%, 6%, 8%, 10% from center on both sides (10 total orders).

When to Use

Good for:

  • Sideways/ranging markets
  • High volatility pairs
  • Passive income generation
  • 24/7 automated trading

Avoid when:

  • Strong trending markets (risk of holding losing positions)
  • Low liquidity pairs
  • High fee environments

Quick Start

1. Dry Run First (Always!)

openmm trade --strategy grid --exchange mexc --symbol INDY/USDT --dry-run

2. Start Grid with Defaults

openmm trade --strategy grid --exchange mexc --symbol INDY/USDT

3. Custom Configuration

openmm trade --strategy grid --exchange mexc --symbol INDY/USDT \
  --levels 5 \
  --spacing 0.02 \
  --size 50 \
  --max-position 0.6 \
  --safety-reserve 0.3

4. Stop the Strategy

Press Ctrl+C to gracefully stop. The system will:

  1. Cancel all open orders
  2. Disconnect from exchange
  3. Display final status

Command Options

Required Parameters

  • --strategy grid — Specifies grid trading strategy
  • --exchange <exchange> — Exchange to trade on (mexc, bitget, gateio, kraken)
  • --symbol <symbol> — Trading pair (e.g., INDY/USDT, SNEK/USDT, ADA/EUR)

Grid Parameters

ParameterDescriptionDefault
--levels <number>Grid levels each side (max: 10, total = levels x 2)5
--spacing <decimal>Base price spacing between levels (0.02 = 2%)0.02
--size <number>Base order size in quote currency50
--confidence <decimal>Minimum price confidence to trade0.6
--deviation <decimal>Price deviation to trigger grid recreation0.015
--debounce <ms>Delay between grid adjustments2000
--max-position <decimal>Max position size as % of balance0.8
--safety-reserve <decimal>Safety reserve as % of balance0.2
--dry-runSimulate without placing real orders

Dynamic Grid Parameters

ParameterDescriptionDefault
--spacing-model <model>linear, geometric, or customlinear
--spacing-factor <number>Geometric spacing multiplier per level1.3
--size-model <model>flat, pyramidal, or customflat
--grid-profile <path>Load grid config from a JSON profile file

Volatility Parameters

ParameterDescriptionDefault
--volatilityEnable volatility-based spread adjustmentoff
--volatility-low <decimal>Low volatility threshold0.02
--volatility-high <decimal>High volatility threshold0.05

Spacing Models

Linear (default): Equal spacing between all levels.

With --spacing 0.02 and 5 levels:
Level 1:  2% from center
Level 2:  4% from center
Level 3:  6% from center
Level 4:  8% from center
Level 5: 10% from center

Geometric: Tighter spacing near center, wider gaps at outer levels.

openmm trade --strategy grid --exchange kraken --symbol BTC/USD \
  --levels 5 --spacing 0.005 --spacing-model geometric --spacing-factor 1.5
Level 1: 0.50% from center
Level 2: 1.25% from center
Level 3: 2.38% from center
Level 4: 4.06% from center
Level 5: 6.59% from center

Custom: Define exact spacing offsets per level using a grid profile JSON file.

Size Models

Flat (default): All levels get equal order sizes.

Pyramidal: Larger orders near center price where fills are more likely, tapering at outer levels.

openmm trade --strategy grid --exchange mexc --symbol INDY/USDT \
  --levels 5 --size 50 --size-model pyramidal

Grid Profiles

JSON files for complete grid configuration:

{
  "name": "balanced-geometric",
  "description": "Geometric spacing with pyramidal sizing",
  "levels": 10,
  "spacingModel": "geometric",
  "baseSpacing": 0.005,
  "spacingFactor": 1.3,
  "sizeModel": "pyramidal",
  "baseSize": 50
}
openmm trade --strategy grid --exchange gateio --symbol SNEK/USDT \
  --grid-profile ./profiles/balanced-geometric.json

Volatility-Based Spread Adjustment

When enabled, the grid automatically widens during volatile conditions and tightens when the market calms. Tracks price changes over a 5-minute rolling window.

  • Below low threshold (default 2%): Normal spacing (1.0x)
  • Between thresholds: Elevated spacing (1.5x)
  • Above high threshold (default 5%): Wide spacing (2.0x)
openmm trade --strategy grid --exchange mexc --symbol INDY/USDT \
  --levels 10 \
  --spacing 0.005 \
  --spacing-model geometric \
  --spacing-factor 1.3 \
  --size-model pyramidal \
  --size 5 \
  --volatility

Trading Examples

Conservative

openmm trade --strategy grid --exchange bitget --symbol SNEK/USDT \
  --levels 2 \
  --spacing 0.02 \
  --size 20

Active

openmm trade --strategy grid --exchange mexc --symbol BTC/USDT \
  --levels 7 \
  --spacing 0.005 \
  --size 25

Dynamic (Geometric + Pyramidal)

openmm trade --strategy grid --exchange kraken --symbol SNEK/EUR \
  --levels 10 \
  --spacing 0.005 \
  --spacing-model geometric \
  --spacing-factor 1.5 \
  --size-model pyramidal \
  --size 5

Risk Management

  • --max-position — Maximum % of balance used for trading (default: 80%)
  • --safety-reserve — % of balance kept as reserve (default: 20%)
  • --confidence — Minimum price confidence required (default: 60%)
  • Grid is automatically recreated when orders are filled
  • Adjusts to significant price movements (configurable via --deviation)

Exchange-Specific Notes

MEXC/Gate.io: Minimum order value 1 USDT per order Bitget: Minimum 1 USDT. Requires API key, secret, and passphrase. 6 decimal price precision for SNEK/NIGHT pairs. Kraken: Minimum 5 EUR/USD per order. Supports major fiat pairs (EUR, USD, GBP).

Tips for Agents

  1. Always dry-run first — show user the plan before executing
  2. Check balance — verify sufficient funds with openmm balance --exchange <ex>
  3. Check current price — use openmm ticker --exchange <ex> --symbol <sym>
  4. Respect minimum order values — ensure --size divided by --levels meets exchange minimums
  5. Use Ctrl+C to stop — graceful shutdown cancels all open orders

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…