WaveRunner
Fish with a net, not a rod.
A trader with a rod has to predict where the fish will be. A trader with a net just spreads it across the water and waits for the fish to swim through.
WaveRunner is the net. It is designed for choppy, sideways, or modestly trending markets where price oscillates inside a band. Outcomes depend on user configuration, market conditions, and exchange execution.
The script remembers the price it started at.
WaveRunner records the price at startup as the anchor, then builds a ladder of buy orders below it and sell orders above it.
You decide how many rungs, how far apart, and how large each order is. The framework handles execution.
Buy at the dips. Sell at the peaks. Automatically.
When price drops to a buy rung, the script buys. When price rises to a sell rung, it sells. Each completed buy-sell pair captures the configured spread, gross of fees.
No predictions. No discretion. The ladder does the work.
The grid follows the market, not the other way around.
When price drifts so far the ladder becomes one-sided, the script cancels open orders and rebuilds around the new price.
This auto re-anchor is the core mechanism of the framework — it keeps grid execution responsive across regimes.
Three safety mechanisms built into the framework
A grid execution framework is a simple machine. WaveRunner is one implementation of it — with guardrails the user can lean on.
Cruise control eases off when conditions change.
As price drifts away from the anchor, WaveRunner automatically shrinks new orders. The script never deploys full-size orders into a runaway trend.
- 100% size · near anchor
- 75% · 10–25% away
- 50% · > 25% away
The grid follows the market, automatically.
When the ladder becomes one-sided, the script cancels open orders, re-anchors at the current price, and rebuilds — no manual intervention required.
This is what keeps grid execution responsive across regimes.
Flip Manual Reset 0 → 1.
The script immediately cancels open orders and re-anchors at the current price. For when you've decided the market has changed and don't want to wait for the auto-mechanism.
Example starter configuration — BTC / USDT spot
An example configuration that satisfies the coverage rule below. Run your own backtests to validate against your chosen period and configure to your own risk tolerance.
| Parameter | Value | Why |
|---|---|---|
| Buy Orders | 25 | 25 rungs below the anchor |
| Sell Orders | 25 | 25 rungs above the anchor |
| Price Spread | 0.61% – 0.85% | Distance between rungs. Tight enough to fill often. |
| Cooldown | 5 hours | Default. Pause after a fill before the next one. |
| Order Size | — pick yours — | A size you'd be comfortable holding 25 of. |
| Taker Fee | 0.075% – 0.10% | Enter your exchange's actual rate. |
slots × spread < ~20%
That ensures the script can reach the edge of the ladder and re-anchor when it needs to. Any wider and the script cannot re-anchor — inventory accumulates.
Same market. Same script. Coverage decides everything.
Two example configurations of WaveRunner illustrated against the coverage rule. Outcome depends on user configuration, market conditions, and exchange execution.
25 slots × 0.61% spread
- Coverage: ±15.25% — inside the ~20% rule
- Re-anchor condition: Reachable in normal volatility
- Cycle behaviour: Active — pairs close at cadence
- Fee drag floor: 2 × taker / spread
50 slots × 1.1% spread
- Coverage: ±55% — outside the ~20% rule
- Re-anchor condition: Unreachable in normal volatility
- Cycle behaviour: Stalled — inventory accumulates
- Fee drag floor: Lower in theory, but cycles rarely close
Four numbers. Glance, don't stare.
The framework prints a report each day. These are the only metrics that matter.
| Metric | What it is | Healthy | Watch | Act |
|---|---|---|---|---|
| Re-Anchor Count | Times the grid rebuilt itself | > 0 after a few weeks | 0 for 2+ weeks | Stuck at 0 → grid too wide |
| Pending Half-Cycles | Buys waiting for a sell | A handful | ~ 20 | Dozens & growing |
| Fee Drag % | Gross profit eaten by fees | < 25% | 25% – 35% | > 35% |
| Win Rate (cycles) | Cycles closed at gain / total | 100% | — | — |
Less than five minutes a week.
Once it's running, WaveRunner doesn't need much. Here's the maintenance rhythm.
Glance at the report.
Verify the script is filling and re-anchoring as expected. After a week, drop to weekly check-ins.
~ 30 sec / day
Look for two warning signs.
› Pending half-cycles climbing past ~20 and re-anchors not firing — market has drifted, consider a manual reset.
› Fee drag creeping above 35% — widen the spread by 0.1–0.2%, or double order size. Both reduce drag at the same rate.
Compare to 30 days ago.
Behaviour relative to buy-and-hold varies by regime — grid execution prioritises spread capture on oscillation over directional exposure.
Underperforming in every regime means something needs tuning.
Remember › It's automated, not autonomous. WaveRunner runs the strategy. You run the configuration.
Honest about the failure mode.
Grid execution frameworks are not predictive. They have a specific design — capturing the configured spread on oscillation — and a specific failure mode.
Where it works
Choppy, sideways, modestly trending markets — where price oscillates up and down through the same band. Each oscillation can close a configured cycle for the script.
Where it struggles
One-way markets that exhaust the grid. A sustained, fast move in one direction will exhaust the ladder before auto re-anchor catches up. Inventory accumulates that the script cannot immediately offset within the configured spread.
Standard disclaimers
- Past performance is not indicative of future results. Backtests are illustrative; live conditions differ.
- Cryptocurrency markets are volatile and can lose value rapidly. Only deploy capital you can afford to have at risk.
- WaveRunner is non-custodial trading automation software. It does not predict markets, eliminate drawdowns, or guarantee returns. It is a tool for executing user-defined logic on user-controlled exchange accounts.
- You retain custody and responsibility at all times. The script trades on your own exchange account via API. Restricted features are not available to US persons.
- Nothing on this page is investment advice. Configuration choices and capital allocation are your decisions.
Frequently Asked Questions
Ready to deploy? Configure WaveRunner. Run your own backtest.
WaveRunner ships as a HaasScript on the HaasOnline platform. Configure it, validate it on your own backtest, deploy to your own exchange account. Non-custodial; restricted features are not available to US persons.