What is SunnyDEX?
SunnyDEX is a visual crypto strategy builder and automation terminal on Solana. You design trading logic as a directed graph of blocks—triggers, conditions, and actions—without writing code. The platform can run strategies in demo mode (simulated execution on the host) or, when enabled, route the final swap step on-chain through your connected wallet.
Unlike a simple swap UI, SunnyDEX focuses on algorithmic workflows: scheduled checks, balance and indicator conditions, market orders, DCA and grid-style blocks, multi-asset portfolios, and backtests on historical data using the same semantics as live runtime.
Swap quotes and token routing use Jupiter (Jupiter Metis v1). SunnyDEX is a non-custodial interface: you keep control of your keys; transactions are signed in your wallet when executing in live mode.
The public app exposes Swap and Terminal (strategy builder, demo sessions, Details metrics, and Backtests). Full documentation lives at docs.sunnydex.net.
Release Roadmap
Major public betas use 0.x.0; minor releases (0.x.y) ship between them. v0.4.0 is the live on-chain milestone.
| Version | Date | Status |
|---|---|---|
| v0.4.0 Beta 4 | Target Sep 30, 2026 | Planned |
| v0.3.4 | Ops & reliability | In development |
| v0.3.3 | Jul 2026 | Shipped |
| v0.3.2 | Jun 25, 2026 | Shipped |
| v0.3.1 | Jun 15, 2026 | Shipped |
| v0.3.0 Beta 3 | Jun 6, 2026 | Shipped |
v0.4.0 Beta 4
Planned- On-chain execution — real swaps through the SunnyDEX program instead of simulated demo fills.
- Non-custodial wallet flow — users sign live trades in their own wallet.
- Live SPL balances — runtime reads real wallet tokens in Live mode.
- Demo → Live transition — promote a tested strategy from paper trading to on-chain.
- Operations & emergency controls — admin visibility and kill-switch for live strategies.
v0.3.4
In development- Admin stop / kill-switch — operators can stop runs with durable audit and safe fund settlement.
- Keeper presence & failover — resilient assignment when keepers disconnect; demo continues without false “run failed” money moves.
- Platform hardening — quieter ops, dual SMS path on staging, prep for a clean production cutover.
v0.3.3
Shipped- Faster Terminal API — hot read paths moved to sunny-api (Rust) behind Apache.
- Backtest orchestration — enqueue/cancel without fragile shell helpers in the web runtime.
- Isolated DEV environment — safer testing away from production data paths.
v0.3.2
Shipped- Honest metrics naming — drawdown and related labels cleaned up.
- Builder hygiene — deprecated update-params path removed from the UI.
- API baseline — TTFB measurement for the next performance wave.
v0.3.1
Shipped- Unified simulation engine — demo and backtest execution parity.
- Backtest reliability — queue, cancel, and pending-run improvements.
- Portfolio analytics polish — chart markers, collapsible panels, aligned Details.
- Grid enhancements, site performance, mobile read-only stubs, SEO.
v0.3.0 Beta 3
Shipped- Pro-grade backtesting — historical runs with risk metrics (Alpha, Beta, Sortino, IR).
- Real-time portfolio risk metrics on running demo sessions.
- Stateful block control — stop, start, restart, update DCA / Grid.
- Strategy Details redesign, limit orders, sessions panel, chart upgrade.
Previous releases
v0.2.x — Beta 2 line
v0.2.0 — Mar 26, 2026: DCA & Grid, indicators, demo accounts, lifecycle.
v0.2.1 — Apr 14, 2026: Sessions panel and Details view.
v0.2.2 — May 26, 2026: Backtesting foundation, limit orders, chart migration.
v0.1.x — Beta 1 line
v0.1.0 — Sep 21, 2025: Terminal launch, Swap redesign, builder skeleton.
v0.1.1 — Oct 13, 2025: Live price charts, market data feed.
v0.1.2 — Nov 10, 2025: Full strategy builder, save & drafts, execution pipeline.
How we version releases
| Label | Meaning |
|---|---|
| 0.x.0 | Major public beta — new product phase (demo → live on-chain) |
| 0.x.y | Minor release — fixes, performance, incremental features |
| Target date | Planned production deploy for the next release |
Questions or feature requests: Telegram · @SunnyDexApp on X.
Getting Started
- Open the Terminal — the main workspace is the strategy canvas with chart, sessions, and block editor.
- Connect a wallet — use Connect Wallet in the header. You can explore the builder without signing in; saving strategies and live runs require a connected wallet.
- Create or open a strategy — add blocks from the in-canvas flow: start with a Time Trigger or market trigger, chain Conditions, then Actions (e.g. market order).
- Choose Demo or Live — demo simulates fills and state locally; live sends the execution step on-chain when you run the strategy.
- Run backtests — open the Backtest tab in the strategy panel (next to Graph and Details) to validate logic on historical data before risking capital.
Account Limits
During the early access period, each account has practical caps so the platform stays stable for everyone:
- Saved strategies — up to 5 strategies per account.
- Active demo sessions — no more than 3 demo runs at the same time (running or paused). Stop an existing session before starting another if you hit the limit.
Limits may be raised for specific accounts later. If you need more capacity, contact us via Telegram.
Strategy Builder
The canvas is a visual flow editor: you connect triggers, conditions, and actions into a single strategy. The editor guides valid connections so the graph always stays runnable.
Core ideas
- Event-driven — the strategy wakes on execution events (timer, market update, webhook where supported), evaluates branches, then waits for the next event.
- Typed connections — only valid block types can be attached in each place; the UI guides you so the graph stays executable.
- Multi-currency — allocations and conditions can reference several tokens in one strategy.
- Same behaviour in demo and live — scheduling, conditions, balances, and UI updates work the same way; only the final swap step differs (simulated vs on-chain).
Example flow: Time Trigger → Balance Condition → Indicator Condition (EMA/RSI) → Market Order.
Triggers
Triggers start an execution pass. Common types:
- Time Trigger — cron-style or interval schedules (e.g. every 15 minutes, daily at UTC noon).
- Market Trigger — reacts to price or candle updates for a configured pair.
- Webhook Trigger — external signal (where enabled) to run a branch on demand.
Each trigger connects to one or more root branches (conditions or actions). High-frequency market triggers allow near-continuous monitoring without a separate “loop” block in the graph.
Conditions
Conditions gate whether downstream actions run. Examples:
- Balance Condition — token balance above/below a threshold.
- Indicator Condition — EMA, RSI, or crosses between indicator and price (see Indicators).
- Price / cross conditions — compare live price or indicator values using the unified value system (fixed numbers, % offsets, variables).
- Logic AND / OR — combine branches in the editor; the generator flattens them for runtime.
Actions
Actions perform work when their branch is taken:
- Market Order — swap via Jupiter routing (live) or simulated fill (demo).
- DCA — dollar-cost averaging block with configurable steps and sizing.
- Grid — grid trading block with price levels and size rules.
- Alerts — UI notifications; external channels (e.g. Telegram) where implemented.
Order size, slippage, and pair selection are set per block. Always review slippage and liquidity before live trading.
Indicators (EMA / RSI)
SunnyDEX includes built-in technical indicators for conditions and charts:
- EMA (Exponential Moving Average) — trend filter; compare price above/below EMA or EMA crossovers.
- RSI (Relative Strength Index) — overbought/oversold style rules (e.g. RSI < 30 for entries).
Typical pattern: Time Trigger every N minutes → Indicator Condition (EMA/RSI on SOL/USDC) → Market Order when conditions pass. Parameters (period, timeframe, pair) are set in the block inspector.
More indicators may be added over time. Thresholds can be fixed numbers, percentages, or references to price and indicator values in the block settings.
DCA & Grid — Automated Ladder Trading
Both DCA and Grid blocks place sequences of swaps at predefined price levels. They are ideal for systematic accumulation, profit-taking, or market-making without manually watching the chart.
When to use DCA vs Grid
| Scenario | Block |
|---|---|
| Only buy on dips, accumulate position | DCA Buy |
| Only sell on rallies, reduce position | DCA Sell |
| Buy and sell in a coordinated price range | Grid |
| Infinite DCA ladder (reactivate on each cycle) | DCA + On reactivation |
DCA Block — Parameters
- Pair
- The trading pair (e.g. SOL/USDC). Base token is left of /, quote token is right.
- Side — Buy or Sell
-
Buy: levels are set below the base price. The block fires when the market price drops to each level and then recovers by the trailing distance.
Sell: levels are set above the base price. The block fires when price rises to each level and then drops by the trailing distance. - Price source
-
Current market price — base price is captured at the moment the strategy starts (first bar after Start). Levels are calculated from that snapshot.
Manual price — you specify the base price explicitly. - Levels
- Number of price steps. Each level is one swap execution. For a Buy with 5 levels and 2% step, the engine will attempt to buy at base×0.98, base×0.96, …, base×0.90.
- Step
- Distance between consecutive levels, expressed as Percent (%) or Absolute price. Percent compounds: level N price = base × (1 ± step%)^N.
- First order size & unit
-
Size of the swap at each level. The default unit for Buy is Quote asset (spend X USDC per level). The default for Sell is Base asset (sell X SOL per level).
Quote asset — fixed amount in the quote currency.
Buy: spend X USDC to receive SOL at the level price.
Sell: receive X USDC worth, spending SOL at the level price (engine converts: SOL = X / price).
Base asset — fixed amount in the base currency.
Buy: buy X SOL, spending X × price USDC per level.
Sell: sell exactly X SOL per level.
% balance — spend N% of the current balance at the moment of execution. After each level the remaining balance decreases, so subsequent levels spend a smaller absolute amount. After 5 levels at 20% each, approximately 32.8% of the starting balance remains (0.8⁵). This mode never exhausts the balance to zero and is the safest for long-running strategies.
Use the MAX button to auto-calculate a per-level size that fits the full balance evenly across all levels (balance ÷ N levels). - Order multiplier (martingale)
- Optional. Each subsequent level's size is multiplied by this factor. Multiplier 1.5 with base 10 USDC gives: 10, 15, 22.5, 33.75, 50.6 USDC. Total budget grows exponentially — check the Order Summary panel before saving.
- After fill — level reuse mode
-
Reuse same level — after execution the level resets to pending. If price returns to the same level it will fire again. Suitable for range-bound markets with recurring touches.
Remove level — the level is consumed after one execution. The DCA sequence advances until all levels are spent.
Rebuild grid — after each execution all levels are recalculated around the execution price. - Base price reset
-
Manual only — base price is fixed until you manually edit the block. Levels do not shift.
On reactivation — after the DCA completes a full cycle (all levels fire), the base price resets to the current market price and 5 new levels are calculated. This creates an infinite DCA ladder that keeps buying as price drops. With a falling market this generates many transactions. Use with caution and set % balance sizing to avoid running out of funds.
On full cycle — similar to On reactivation but the reset only happens once all levels are consumed, not on each individual level execution. - Slippage
- Controls the maximum accepted price deviation on swap execution. Auto (Jupiter Metis v1) lets Jupiter calculate the optimal slippage. Manual sets a fixed tolerance in percent.
DCA — Worked example (Buy, Quote asset, % balance)
Start: 1000 USDC, 0 SOL. DCA Buy SOL/USDC, 5 levels, 2% step, 20% of balance.
| Level | Trigger price | USDC balance before | Spend (20%) | After |
|---|---|---|---|---|
| 1 | ≤ $98 | $1000 | $200 | $800 |
| 2 | ≤ $96 | $800 | $160 | $640 |
| 3 | ≤ $94 | $640 | $128 | $512 |
| 4 | ≤ $92 | $512 | $102 | $410 |
| 5 | ≤ $90 | $410 | $82 | $328 |
After all 5 levels: $328 USDC remains (32.8% of starting). The DCA never spends all funds regardless of how many levels fire — this is the key safety property of % balance sizing.
DCA — Two separate blocks vs Grid
A common pattern is two DCA blocks fed from the same Market Trigger:
- DCA Buy — fires below base price (accumulates SOL on dips)
- DCA Sell — fires above base price (takes profit on rallies)
This is functionally similar to a Grid strategy but with independent level management. The drawback is that the two blocks don't share state — if the Sell DCA exhausts its levels and reactivates, it may set a new base price that overlaps with the Buy levels.
For a tightly coordinated buy/sell grid around a single base price, use the Grid block instead.
Grid Block — Parameters
The Grid block places orders both above and below a base price from a single configuration. It is the natural choice for market-making strategies in a defined price range.
- Levels up / Levels down
- Number of sell levels above base price and buy levels below. A Grid with 3 up / 3 down at 2% step and base $100 places sells at $102, $104, $106 and buys at $98, $96, $94.
- Step
- Same as DCA — Percent or Absolute, compounded outward from base price.
- Order size & unit
- Same units as DCA. For Grid, Base asset is typical: sell X SOL on each upper level, buy X SOL on each lower level. This creates balanced round-trips: buy low → sell high within the grid band.
- Level reuse & reset
- Same semantics as DCA. Reuse same level is the most common for Grid — the level keeps firing as price oscillates through the band, collecting spread on each round-trip.
Grid — Round-trip PnL logic
A Grid earns the spread on each complete round-trip (buy at lower level, sell at upper level). For a 2% step grid, each round-trip captures approximately 2% minus fees and slippage. The strategy is profitable in a sideways or oscillating market and loses value in a strongly trending market (price exits the grid range).
Safety checklist before running DCA or Grid
- Open Order Summary in the block panel and verify Total spend is within your available balance.
- With On reactivation reset mode, the DCA will keep buying/selling indefinitely as price trends — make sure you intend this behavior.
- Use % balance sizing to prevent balance exhaustion; use fixed amount when you want precisely N USDC or N SOL per level.
- Always test with a short backtest before enabling demo or live.
Demo vs Live Execution
Demo runs your strategy end to end with simulated swaps on the server—balances, history, and UI updates behave like live trading, without spending funds. Use demo to learn the builder, test logic, and review PnL.
Live follows the same rules and scheduling; only the final swap is executed on-chain. You sign transactions in your wallet. SunnyDEX does not hold custody of assets.
Risks: slippage, failed transactions, network congestion, and smart-contract/third-party API behavior apply in live mode. See Terms of Service in the app menu.
Backtests
The Backtest tab in the strategy panel (alongside Graph and Details) runs your current canvas against historical market data. Semantics align with runtime demo/live rules where possible.
Use it to:
- Compare equity, PnL, drawdown, and swap history before starting a demo or live session
- Inspect branch decisions, fill assumptions, and per-run metrics (returns, Sortino, and related KPIs in the Details dashboard)
- Iterate on EMA/RSI or DCA/Grid parameters without spending funds
Backtest results are simulations; past performance does not guarantee future results. For account caps during early access, see Account Limits.
Swap & Routing
The Swap page offers a direct token exchange UI. Quotes and routes are provided by Jupiter. SunnyDEX does not operate its own liquidity pools.
For automated strategies, swaps happen inside Market Order (and related) actions on the canvas, not only on the Swap page.
FAQ
- Is SunnyDEX a DEX?
- It is a strategy builder and terminal that routes trades through Jupiter and your wallet—not a standalone AMM.
- Do I need to code?
- No. You compose visual blocks on the canvas; the platform saves and runs your strategy automatically.
- Is KYC required?
- No KYC for wallet connection. Optional contact fields in profile are voluntary.
- Where is data stored?
- On-chain activity is public on Solana. Strategy definitions and session state are stored per your account on SunnyDEX infrastructure.
- How do I get help?
- Join the Telegram community or follow @SunnyDexApp on X.
Last updated: June 2026 (Beta 3)