Tessara — Complete Parameter Reference
Version: 3.0 — May 12, 2026
Purpose: Authoritative reference for all parameters that affect trading behavior.
About This Document
Every parameter that causes the bot to place, skip, resize, pause, or cancel an order is listed here. Parameters are grouped by functional category. Each entry includes:
- Internal name — the key used in settings.json and the API
- What it does — mechanical description of the effect, no interpretation
- Default — value used when the field is not explicitly set
- Range / Type — valid input bounds
Tessara executes the values you set. This document describes what each value controls.
Parameter Index by Category
1. Risk Controls
2. Grid Structure
3. Coin Selection & Discovery
4. Overnight Rules
5. Cash Conservation
6. Circuit Breakers
7. Grid Geometry
8. Dynamic Order Sizing
9. Market Regime Detection
10. Capital Allocation
11. Order Placement
12. Sell Pricing
13. Inventory Skew
14. System & Reconciliation
1. Risk Controls
Daily Loss Cap (%)
| Field | Value |
| **Internal name** | `dailyLossCapPct` |
| **What it does** | Tracks total realized and unrealized portfolio loss since midnight UTC. When cumulative loss exceeds this percentage, all new buy orders pause for the duration set by `cbRecoveryMinutes`. Sell orders continue unaffected. Resets at the next calendar day boundary. |
| **Default** | 3% |
| **Range** | 0.5 – 20 |
Daily Loss Cap (Fixed Dollar Override)
| Field | Value |
| **Internal name** | `dailyLossCapAmt` |
| **What it does** | Fixed dollar amount used as the circuit breaker threshold instead of the percentage formula. When set to any value above 0, it overrides `dailyLossCapPct`. Set to 0 to use the percentage formula. |
| **Default** | 0 |
| **Range** | 0 – unlimited |
Portfolio Heat Halt
| Field | Value |
| **Internal name** | `portfolioHeatHaltPct` |
| **What it does** | Measures total unrealized loss across all open coin positions as a percentage of total portfolio value. When this threshold is reached, all new buy orders halt. Halting clears automatically when unrealized losses fall back below the threshold. |
| **Default** | 15% |
| **Range** | 5 – 50 |
Max Position Per Coin
| Field | Value |
| **Internal name** | `maxPositionPct` |
| **What it does** | When a single coin's total cost basis exceeds this percentage of portfolio value, new buy orders on that coin are skipped. Existing orders and sell orders are unaffected. Buying resumes when the position drops back below the threshold through sell fills. |
| **Default** | 10% |
| **Range** | 1 – 100 |
Max Coin Drawdown
| Field | Value |
| **Internal name** | `maxCoinDrawdownPct` |
| **What it does** | Compares the current price of a coin to the bot's computed average cost basis (TWAP). When the price is more than this percentage below cost basis, new buy orders on that coin are paused. Buying resumes when price recovers above the threshold. |
| **Default** | 20% |
| **Range** | 1 – 100 |
Max Capital Per Coin
| Field | Value |
| **Internal name** | `maxCapPerCoinUSD` |
| **What it does** | Hard dollar cap on the total amount deployed into any single coin. The bot will not issue new buy orders that would push total cost basis on that coin above this value, regardless of other settings. |
| **Default** | $800 |
| **Range** | $50 – unlimited |
Stop Loss
| Field | Value |
| **Internal names** | `stopLossEnabled` / `stopLossPct` |
| **What it does** | When enabled: if a coin's current price falls below (average cost basis × (1 − stopLossPct/100)), the bot cancels all open orders on that coin and places a market sell for the full position. The grid is then permanently halted. Manual restart is required to re-enable. |
| **Default** | Disabled |
| **Range** | 1 – 99 (%) |
Per-Coin Realized Loss Halt
| Field | Value |
| **Internal name** | `perCoinRealizedLossPct` |
| **What it does** | When the sum of realized losses on a coin exceeds this percentage of its allocated capital (`maxCapitalUSD`), the grid for that coin is permanently halted. Applies to locked-in losses from completed sell cycles only, not unrealized paper losses. Manual restart required. |
| **Default** | 15% |
| **Range** | 5 – 100 |
Per-Coin Daily Loss Stop
| Field | Value |
| **Internal name** | `perCoinDailyLossPct` |
| **What it does** | Tracks realized losses on each individual coin since midnight UTC. When losses on a single coin exceed this percentage of that coin's allocated capital, buy orders on that coin pause for 24 hours. Set to 0 to disable this check. |
| **Default** | 0 (disabled) |
| **Range** | 0 – 50 |
Cash Reserve
| Field | Value |
| **Internal name** | `cashReservePct` |
| **What it does** | The bot will not issue new buy orders when doing so would cause total deployed capital (all coin positions combined) to exceed (100 − cashReservePct)% of portfolio value. Acts as a hard capital deployment ceiling. Does not force-sell existing positions; it only blocks new buys once the ceiling is reached. |
| **Default** | 0% |
| **Range** | 0 – 50 |
1b. Pump Protection
Pump Protection detects rapid per-coin price spikes and cancels open buy orders if the spike reverses within a configurable window. This prevents the bot from filling a ladder of buy orders on the way down after a pump-and-dump. It also monitors BTC-wide momentum and cancels buys across all coins when a market-wide pump starts to reverse.
Enable Pump Protection
| Internal name | pumpProtectionEnabled |
| Default | true (ON) |
| What it does | Master toggle for all pump protection logic. When OFF, none of the rules below apply and the bot behaves as if this feature does not exist. |
| Where to set | Setup → Pump Protection |
Pump Detect Threshold (%)
| Internal name | pumpDetectPct |
| Default | 4.0 |
| Range | 1–30 |
| What it does | Minimum price rise (as a % of the 15-minute-ago snapshot) to trigger a pump alert on a coin. When weekend mode is active, the effective threshold is multiplied by 0.75. A higher value means fewer, more extreme pumps trigger the protection; a lower value catches smaller moves but risks more false positives on volatile coins. |
| Where to set | Setup → Pump Protection |
Cancel Trigger — Retrace (%)
| Internal name | pumpRetracePct |
| Default | 2.0 |
| Range | 0.5–20 |
| What it does | How far price must fall from the pump’s high-water mark (within the hold window) to confirm a dump and cancel all open buy orders. Recommended: approximately 2–3× your grid spacing. Too low = false positives on normal consolidation; too high = orders fill before the trigger fires. |
| Where to set | Setup → Pump Protection |
Hold Window (minutes)
| Internal name | pumpHoldWindowMin |
| Default | 30 |
| Range | 5–240 |
| What it does | After a pump is detected, the bot watches for this many minutes. If price retraces by pumpRetracePct within this window, buys are cancelled (dump confirmed). If price holds without retracing for the full window, the bot treats it as a bull run and does NOT cancel. Weekend mode uses 0.5× this value. |
| Where to set | Setup → Pump Protection |
Cooldown (minutes)
| Internal name | pumpCooldownMin |
| Default | 30 |
| Range | 5–240 |
| What it does | After buy orders are cancelled due to a pump reversal, the bot pauses new buy placement for this many minutes. Sell orders and fill processing remain active. On cooldown expiry, the grid recenters at the then-current price and places a fresh ladder. |
| Where to set | Setup → Pump Protection |
Weekend Mode
| Internal name | pumpWeekendMode |
| Default | true (ON) |
| What it does | During the thin-liquidity window (Friday 20:00 UTC through Sunday 23:59 UTC), applies tighter multipliers: pump detect threshold ×0.75, hold window ×0.5. This reflects the higher pump-and-dump frequency during low-volume weekend hours. The cooldown duration is not changed by weekend mode. |
| Where to set | Setup → Pump Protection |
1c. DCA Depth Controls
Prevents the bot from averaging into a freefall. When a coin drops beyond the depth threshold, buys are halted. If price stabilizes (no new lows in 4h, range <6%), limited DCA resumes at 50% size every 4 hours.
DCA Depth Halt Enabled
| Setting | dcaDepthHaltEnabled |
|---|
| Default | true (ON) |
|---|
| Description | Enable or disable the DCA depth halt system entirely. |
|---|
DCA Depth Halt Percentage
| Setting | dcaDepthHaltPct |
|---|
| Default | 35 |
|---|
| Range | 15–80 |
|---|
| Description | Halt new buys when a coin's price drops this % below its average cost (twapCost). At 35%, a coin bought at $100 stops receiving new buys when price falls to $65. |
|---|
Stabilization Re-entry
| Setting | dcaStabilizationEnabled |
|---|
| Default | true (ON) |
|---|
| Description | When halted, if price consolidates without making new lows for 4 hours and the price range stays under 6%, limited DCA resumes at 50% of normal order size once per 4-hour window. |
|---|
Per-Coin Stop Loss
| Setting | perCoinStopLossEnabled |
|---|
| Default | false (OFF) |
|---|
| Description | Optional. When enabled, if a coin stays above the stop loss threshold below cost for 4+ continuous hours while DCA is halted, the bot places a market sell and blacklists the coin for 30 days. |
|---|
| Setting | perCoinStopLossPct |
|---|
| Default | 45 |
|---|
| Range | 20–80 |
|---|
| Description | Threshold for per-coin stop loss. At 45%, the coin must be 45%+ below cost for 4+ hours to trigger. |
|---|
1d. Grid Range Bounds
Set explicit price boundaries per coin. The bot halts new buys when price leaves the defined range. Any existing buy orders outside the range are cancelled when bounds are set.
Grid Range Enabled
| Setting | gridRangeEnabled (per-coin) |
|---|
| Default | true when gridHigh/gridLow are set |
|---|
| Description | Enables range enforcement for this coin. |
|---|
Grid Low / Grid High
| Setting | gridLow, gridHigh (per-coin) |
|---|
| Default | Auto-calculated: LOW = 30-day low × 0.92, HIGH = 30-day high × 1.10 |
|---|
| Description | Price floor and ceiling. Below floor: buys halted, position held. Above ceiling: buys halted, existing sells run out. Use “Apply Suggested Ranges” in Settings to auto-calculate from price history. |
|---|
1e. Take Profit
Automatically close or pause a coin's grid when total realized profit reaches a target percentage of deployed capital.
Take Profit Enabled
| Setting | takeProfitEnabled |
|---|
| Default | true (ON) |
|---|
Take Profit Percentage
| Setting | takeProfitPct |
|---|
| Default | 25 |
|---|
| Range | 5–200 |
|---|
| Description | Target profit as % of deployed capital. At 25%, a coin with $400 deployed closes its grid after earning $100 in realized profit. |
|---|
Take Profit Mode
| Setting | takeProfitMode |
|---|
| Default | close |
|---|
| Values | close (sell all + remove grid), pause (halt new buys, let sells run) |
|---|
1f. Smart Entry
Delays starting a new grid if the coin is currently overbought. Prevents launching grids at local tops.
Smart Entry Enabled
| Setting | smartEntryEnabled |
|---|
| Default | true (ON) |
|---|
RSI Maximum
| Setting | smartEntryRsiMax |
|---|
| Default | 65 |
|---|
| Range | 30–90 |
|---|
| Description | Don't start a new grid if RSI exceeds this value. Grid launch is delayed up to 48 hours until RSI normalizes. |
|---|
Above Average Percentage
| Setting | smartEntryAboveAvgPct |
|---|
| Default | 12 |
|---|
| Range | 5–50 |
|---|
| Description | Don't start if price is more than this % above its 7-day average (indicates local top). |
|---|
1g. Trailing Grid
When price trends strongly upward, shifts the entire grid up to capture more of the uptrend.
Trailing Grid Enabled
| Setting | trailingGridEnabled |
|---|
| Default | true (ON) |
|---|
Trailing Trigger
| Setting | trailingTriggerPct |
|---|
| Default | 12 |
|---|
| Range | 3–50 |
|---|
| Description | Trigger trailing when price rises this % above the last grid center. Only triggers when price is above cost basis. |
|---|
Trailing Shift
| Setting | trailingShiftPct |
|---|
| Default | 50 |
|---|
| Range | 10–100 |
|---|
| Description | When trailing triggers, shift the grid center up by this % of the price move. At 50%, if price rose 12%, the center moves up 6%. |
|---|
1h. Profit Compounding
Controls how much of each cycle's profit is reinvested into larger order sizes.
Compounding Percentage
| Setting | compoundingPct |
|---|
| Default | 100 |
|---|
| Range | 0–100 |
|---|
| Description | Percentage of profits reinvested. 100% = full compounding (all profits grow order sizes). 0% = no compounding. |
|---|
Compounding Cap
| Setting | compoundingCapUSD |
|---|
| Default | 0 (no cap) |
|---|
| Description | Stop compounding once a coin's allocation reaches this USD amount. 0 = compound indefinitely. |
|---|
2. Grid Structure
Grid Spacing
| Field | Value |
| **Internal name** | `gridSpacingPct` |
| **What it does** | Percentage distance between each grid level, measured from the grid center. Buy levels are placed at center × (1 − spacing × n) and sell levels at center × (1 + spacing × n) for each integer n. The sell price for any filled buy is set at buy_price × (1 + spacing/100), subject to the fee floor. |
| **Default** | 1.0% |
| **Range** | 0.3 – 5 |
| **Note** | Per-coin, auto-managed. Set automatically by the bot's ATR-based spacing tuner for each coin. Not a global setting — cannot be set in Setup. Displayed in the Coin Performance tab. |
Grid Levels
| Field | Value |
| **Internal name** | `gridLevels` |
| **What it does** | Number of buy order levels placed below grid center, and the corresponding number of sell levels above. Total concurrent orders = 2 × gridLevels (minus any already filled). |
| **Default** | 6 |
| **Range** | 2 – 20 |
| **Note** | Per-coin, auto-managed. Calculated per coin from allocated capital and target order size. Not a global setting — cannot be set in Setup. |
Order Size Per Level
| Field | Value |
| **Internal name** | `sizePerLevelUSD` |
| **What it does** | Dollar value of each individual buy order before dynamic sizing adjustments. Total capital required = sizePerLevelUSD × gridLevels (baseline; actual deployment varies with dynamic sizing). |
| **Default** | Derived from maxCapitalUSD ÷ gridLevels |
| **Range** | $10 – $10,000 |
| **Note** | Per-coin, auto-managed. Derived automatically from each coin's capital allocation and grid level count. Not a global setting — cannot be set in Setup. Adjusted dynamically by risk profile multiplier and dynamic sizing settings. |
Minimum Grid Allocation
| Field | Value |
| **Internal name** | `minGridAllocationUSD` |
| **What it does** | Minimum free USD cash balance required before the bot will initiate a new grid on any coin. If available cash is below this value, new grids are deferred until cash recovers. |
| **Default** | $400 |
| **Range** | $100 – $10,000 |
Maximum Active Grids
| Field | Value |
| **Internal name** | `maxActiveGrids` |
| **What it does** | Hard cap on the number of simultaneously active coin grids. When this cap is reached, no new coins are added regardless of available capital or discovery approvals. Set to 0 to use the auto formula (portfolio ÷ minGridAllocationUSD). |
| **Default** | 0 (auto) |
| **Range** | 0 – 120 |
Target Grid Count
| Field | Value |
| **Internal name** | `targetGridCount` |
| **What it does** | When auto-scaling is enabled, the bot targets this number of active grids and allocates capital accordingly. Takes precedence over maxActiveGrids when autoScaleSlot is true. Set to 0 to disable. |
| **Default** | Calculated from capital ÷ minGridAllocationUSD at onboarding |
| **Range** | 0 – 120 |
3. Coin Selection & Discovery
Auto-Discover Coins
| Field | Value |
| **Internal name** | `autoDiscover` |
| **What it does** | When ON, the bot runs periodic discovery scans and adds qualifying coins to the pending-discoveries queue. Each candidate requires explicit user approval before a grid is created. When OFF, only manually specified coins are traded. |
| **Default** | ON |
| **Type** | Boolean |
ML Scoring
| Field | Value |
| **Internal name** | `mlEnabled` |
| **What it does** | When ON, ML model scores are computed for each discovery candidate and used to rank the pending-discoveries queue. When OFF, candidates are ranked by volume and price momentum only. |
| **Default** | ON |
| **Type** | Boolean |
ML Minimum Confidence
| Field | Value |
| **Internal name** | `mlMinConfidence` |
| **What it does** | ML scores range from 0–20. Coins scoring below this threshold are not added to the pending-discoveries queue regardless of other criteria. |
| **Default** | 12 |
| **Range** | 0 – 20 |
Discovery Interval
| Field | Value |
| **Internal name** | `discoveryIntervalHours` |
| **What it does** | Interval in hours between automatic discovery scans. The scan evaluates all active Coinbase products against volume, listing age, and ML criteria. |
| **Default** | 24 hours |
| **Range** | 6 – 168 |
Coin Probation Period
| Field | Value |
| **Internal name** | `probationDays` |
| **What it does** | Newly approved coins operate at skeleton capital (`skeletonMaxCap`) for this many days. After the probation period, they are evaluated for promotion to full capital allocation. |
| **Default** | 7 days |
| **Range** | 1 – 30 |
Probation Win Rate Minimum
| Field | Value |
| **Internal name** | `probationWinRateMin` |
| **What it does** | Percentage of completed cycles that must be profitable for a coin to graduate from probation to full capital. Coins that fail this threshold at the end of probation are not promoted. |
| **Default** | 85% |
| **Range** | 50 – 95 |
Auto-Cull
| Field | Value |
| **Internal name** | `autoCullEnabled` |
| **What it does** | When ON, the bot automatically removes coins whose cumulative realized losses exceed `autoCullLossThreshold` after at least `autoCullMinCycles` trades. When OFF, coins are only removed manually. |
| **Default** | ON |
| **Type** | Boolean |
Auto-Cull Minimum Trades
| Field | Value |
| **Internal name** | `autoCullMinCycles` |
| **What it does** | A coin is not eligible for auto-cull until it has completed at least this many buy→sell cycles. |
| **Default** | 50 |
| **Range** | 5 – 200 |
Auto-Cull Loss Threshold
| Field | Value |
| **Internal name** | `autoCullLossThreshold` |
| **What it does** | When auto-cull is enabled: if a coin's total realized profit falls below this dollar amount and it has completed at least autoCullMinCycles trades, it is removed. Example: -1 means any coin down more than $1 lifetime is eligible. |
| **Default** | -1 (USD loss threshold) |
| **Range** | -10,000 – 0 |
Blacklisted Coins
| Field | Value |
| **Internal name** | `blacklistedCoins` |
| **What it does** | Array of coin symbols (e.g. `["XYZ", "ABC"]`). Coins on this list are excluded from auto-discovery, never proposed, and cannot be added as grids via signal. |
| **Default** | `[]` (empty) |
| **Type** | Array of strings |
Core Coins
| Field | Value |
| **Internal name** | `coreCoins` |
| **What it does** | Array of coin symbols designated as permanent portfolio members. Core coins bypass probation, are excluded from auto-cull evaluation, and receive priority in capital allocation. |
| **Default** | `[]` (empty) |
| **Type** | Array of strings |
4. Overnight Rules
Overnight Scale-Down (Enable)
| Field | Value |
| **Internal name** | `overnightScaleEnabled` |
| **What it does** | When ON, order sizes are multiplied by `overnightScaleMult` during the window defined by `overnightScaleStart` / `overnightScaleEnd`. When OFF, order sizes are constant at all hours. |
| **Default** | OFF |
| **Type** | Boolean |
Overnight Window Start
| Field | Value |
| **Internal name** | `overnightScaleStart` |
| **What it does** | Local wall-clock time (HH:MM, 24-hour) at which the overnight order-size multiplier activates. |
| **Default** | `22:00` |
| **Type** | String (HH:MM) |
Overnight Window End
| Field | Value |
| **Internal name** | `overnightScaleEnd` |
| **What it does** | Local wall-clock time (HH:MM, 24-hour) at which the overnight multiplier deactivates and normal order sizes resume. |
| **Default** | `08:00` |
| **Type** | String (HH:MM) |
Overnight Size Multiplier
| Field | Value |
| **Internal name** | `overnightScaleMult` |
| **What it does** | Factor applied to all order sizes during the overnight window. 1.0 = no change. 0.5 = half the normal order size. Applied multiplicatively on top of all other sizing adjustments. |
| **Default** | 0.5 |
| **Range** | 0.1 – 1.0 |
5. Cash Conservation
Cash-Aware Allocation
| Field | Value |
| **Internal name** | `cashAwareAllocationEnabled` |
| **What it does** | When ON and free cash drops below `pe2PauseTrigger`, the bot pauses buy orders on the `pe2PauseCount` lowest-efficiency coin grids. Buy orders on those coins resume when free cash recovers to `pe2ResumeThreshold`. When OFF, all grids continue regardless of available cash. |
| **Default** | ON |
| **Type** | Boolean |
Cash Conserve Pause Trigger
| Field | Value |
| **Internal name** | `pe2PauseTrigger` |
| **What it does** | Free USD cash threshold below which cash-aware allocation activates and pauses the lowest-performing coins. |
| **Default** | $300 |
| **Range** | $0 – $5,000 |
Cash Conserve Resume Threshold
| Field | Value |
| **Internal name** | `pe2ResumeThreshold` |
| **What it does** | Free USD cash level at which paused coins resume buy orders. Must be greater than `pe2PauseTrigger`. The difference between this value and `pe2PauseTrigger` determines the hysteresis band. |
| **Default** | $550 |
| **Range** | Must exceed `pe2PauseTrigger` |
Coins to Pause
| Field | Value |
| **Internal name** | `pe2PauseCount` |
| **What it does** | Number of coin grids to pause when cash conservation activates. The bot selects the lowest-ranked coins by efficiency score. |
| **Default** | 5 |
| **Range** | 1 – 20 |
6. Circuit Breakers
Circuit Breaker Recovery Time
| Field | Value |
| **Internal name** | `cbRecoveryMinutes` |
| **What it does** | Duration in minutes that new buy orders remain paused after the daily loss circuit breaker fires. After this period, buying resumes automatically. |
| **Default** | 60 minutes |
| **Range** | 15 – 1,440 |
Correlation Kill — Coin Count
| Field | Value |
| **Internal name** | `corrKillCoinCount` |
| **What it does** | Number of coins that must simultaneously drop by at least `corrKillDropPct` in a rolling window to trigger the correlation kill switch. When triggered, all buy orders across all coins halt for `corrKillRecoveryHours`. |
| **Default** | 3 |
| **Range** | 2 – 10 |
Correlation Kill — Drop %
| Field | Value |
| **Internal name** | `corrKillDropPct` |
| **What it does** | Per-coin price drop percentage threshold used in the correlation kill evaluation. Each coin's 30-minute price change is compared against this value. |
| **Default** | 5% |
| **Range** | 1 – 25 |
Correlation Kill — Recovery Hours
| Field | Value |
| **Internal name** | `corrKillRecoveryHours` |
| **What it does** | Duration in hours that the correlation kill-switch halt remains active after triggering. Buy orders on all coins are blocked for this period. |
| **Default** | 2 hours |
| **Range** | 0.5 – 24 |
Market Regime Stop — Coin Fraction
| Field | Value |
| **Internal name** | `regimeStopThresholdPct` |
| **What it does** | Percentage of active coin grids that must trigger `regimeStopDropPct` within a 30-minute window to activate the regime stop. Calculated as: ceil(activeCoins × regimeStopThresholdPct/100). When reached, all buy orders pause for 60 minutes. |
| **Default** | 25% |
| **Range** | 5 – 75 |
Market Regime Stop — Per-Coin Drop %
| Field | Value |
| **Internal name** | `regimeStopDropPct` |
| **What it does** | Price drop percentage (measured over 30 minutes) that qualifies a coin as having "dropped" for regime stop evaluation. |
| **Default** | 2% |
| **Range** | 0.5 – 10 |
Black Swan Halt
| Field | Value |
| **Internal name** | `blackSwanHaltPct` |
| **What it does** | Percentage drop from a coin's current grid center price that triggers an emergency halt. When triggered: all open orders on the coin are cancelled, the full position is sold at market price, and the grid is permanently halted pending manual restart. Measured as: (centerPrice − currentPrice) / centerPrice × 100. |
| **Default** | 15% |
| **Range** | 5 – 50 |
Triple Circuit Breaker — Halt Duration
| Field | Value |
| **Internal name** | `tripleCBHaltHours` |
| **What it does** | Duration in hours that all buy orders are halted when the daily loss CB, portfolio heat halt, and regime stop all fire simultaneously. |
| **Default** | 2 hours |
| **Range** | 0.5 – 24 |
Triple Circuit Breaker — Size Reduction
| Field | Value |
| **Internal name** | `tripleCBSizeReduction` |
| **What it does** | Multiplier applied to all order sizes for the remainder of the trading session following a triple circuit breaker event. 0.5 = 50% of normal size. Resets at the next session start. |
| **Default** | 0.5 |
| **Range** | 0.1 – 1.0 |
7. Grid Geometry
Level Spacing Exponent
| Field | Value |
| **Internal name** | `levelSpacingExponent` |
| **What it does** | Exponent applied to level index when computing grid level distances. At 1.0: levels are evenly spaced (level n is at center ± spacing × n). At values above 1.0: spacing between levels increases geometrically outward, clustering more levels near center (level n at center ± spacing × n^exponent). |
| **Default** | 1.18 |
| **Range** | 1.0 – 2.0 |
Grid Buy Boundary
| Field | Value |
| **Internal name** | `gridBuyBound` |
| **What it does** | Lower bound for buy order placement, expressed as a fraction of center price. No buy order is placed below (center × gridBuyBound). Example: 0.70 means no buys more than 30% below center. |
| **Default** | 0.70 |
| **Range** | 0.50 – 0.95 |
Grid Sell Boundary
| Field | Value |
| **Internal name** | `gridSellBound` |
| **What it does** | Upper bound for sell order placement, expressed as a fraction of center price. No new sell level is placed above (center × gridSellBound). Existing sell orders above this boundary are not cancelled. |
| **Default** | 1.30 |
| **Range** | 1.05 – 2.00 |
Recenter Threshold
| Field | Value |
| **Internal name** | `recenterThresholdPct` |
| **What it does** | Minimum price deviation from grid center (in %) required to trigger a grid recenter. When current price moves more than this percentage from center in either direction, the grid center is updated and all orders are rebuilt around the new center. |
| **Default** | 3% |
| **Range** | 0.5 – 20 |
Profit Lock Threshold
| Field | Value |
| **Internal name** | `profitLockPct` |
| **What it does** | When unrealized profit on a coin's open position exceeds this percentage of deployed capital, the grid is recentered upward to the current price. This moves sell levels higher, locking in a portion of the unrealized gain. |
| **Default** | 8% |
| **Range** | 2 – 50 |
Sell Floor Buffer
| Field | Value |
| **Internal name** | `sellFloorBuffer` |
| **What it does** | Additional percentage margin added above the fee break-even price when computing the minimum sell floor. The floor = buyPrice × (1 + makerFee + takerFee + sellFloorBuffer/100). Prevents rounding in fee calculations from producing net-negative cycles. |
| **Default** | 0.05% |
| **Range** | 0 – 0.5 |
Minimum Cycle Profit
| Field | Value |
| **Internal name** | `minCycleProfitUSD` |
| **What it does** | Minimum realized profit (in USD) for a completed buy→sell pair to be recorded as a cycle in performance statistics. Cycles below this threshold complete normally but are excluded from win rate and profit calculations. |
| **Default** | $0.03 |
| **Range** | $0 – $1.00 |
8. Dynamic Order Sizing
Underwater Size Multiplier (Maximum)
| Field | Value |
| **Internal name** | `underwaterMultMax` |
| **What it does** | Maximum multiplier applied to base order size for buy orders placed below grid center. Size multiplier = min(underwaterMultMax, 1 + distanceFromCenter × underwaterScaleFactor). |
| **Default** | 1.8× |
| **Range** | 1.0 – 3.0 |
Underwater Scale Factor
| Field | Value |
| **Internal name** | `underwaterScaleFactor` |
| **What it does** | Coefficient controlling how steeply order size increases as price falls below center. At factor 4: a buy order at 10% below center gets a 1.4× size multiplier (capped at underwaterMultMax). |
| **Default** | 4 |
| **Range** | 0 – 10 |
Win Streak Size Multiplier
| Field | Value |
| **Internal name** | `streakWinMult` |
| **What it does** | Multiplier applied to effective order size after 5 or more consecutive profitable cycles on a coin. Applied until the streak breaks. |
| **Default** | 1.10 |
| **Range** | 1.0 – 1.5 |
Loss Streak Size Multiplier
| Field | Value |
| **Internal name** | `streakLossMult` |
| **What it does** | Multiplier applied to effective order size after 3 or more consecutive unprofitable cycles on a coin. Applied until the streak breaks. |
| **Default** | 0.80 |
| **Range** | 0.5 – 1.0 |
Compounding Cap (Normal)
| Field | Value |
| **Internal name** | `compoundCapNormal` |
| **What it does** | Maximum order size from profit compounding, expressed as a multiple of base sizePerLevelUSD. Applies when the coin's Sharpe ratio is below 2.0. Compounded size = base + floor(totalProfit / compoundStepUSD) × stepIncrement, capped at base × compoundCapNormal. |
| **Default** | 3× |
| **Range** | 1 – 10 |
Compounding Cap (High Sharpe)
| Field | Value |
| **Internal name** | `compoundCapHighSharpe` |
| **What it does** | Maximum order size from profit compounding when the coin's Sharpe ratio exceeds 2.0. Replaces `compoundCapNormal` for that coin. |
| **Default** | 5× |
| **Range** | 1 – 20 |
Compounding Step Size
| Field | Value |
| **Internal name** | `compoundStepUSD` |
| **What it does** | Incremental profit required to advance one compounding step. Order size increases by one step for every multiple of this value in cumulative realized profit on the coin. |
| **Default** | $10 |
| **Range** | $1 – $100 |
Probation/New Coin Size Boost
| Field | Value |
| **Internal name** | `probationBoostMult` |
| **What it does** | Size multiplier applied to new coin grids during their first 5 days of operation, conditional on win rate remaining at or above `probationWinRateMin`. Multiplier is removed if the win rate condition is not met. |
| **Default** | 1.6× |
| **Range** | 1.0 – 3.0 |
Skeleton Max Capital
| Field | Value |
| **Internal name** | `skeletonMaxCap` |
| **What it does** | Maximum capital allocated to a coin grid in skeleton (probation or health-watch) mode. Coins in skeleton mode operate at this capital ceiling regardless of the standard allocation formula. |
| **Default** | $150 |
| **Range** | $50 – $5,000 |
9. Market Regime Detection
Extreme Risk Threshold
| Field | Value |
| **Internal name** | `regimeExtremeRiskThreshold` |
| **What it does** | BTC 1-hour price change (%) below which the bot enters EXTREME_RISK regime. In this regime, buy order sizing is at minimum and new buys are heavily restricted. |
| **Default** | −4% |
| **Range** | −20 to −1 |
Trending Down Threshold
| Field | Value |
| **Internal name** | `regimeTrendingDownThreshold` |
| **What it does** | BTC 1-hour price change (%) below which the bot enters TRENDING_DOWN regime. More conservative than RANGING but less than EXTREME_RISK. |
| **Default** | −2% |
| **Range** | −10 to −0.5 |
Trending Up Threshold
| Field | Value |
| **Internal name** | `regimeTrendingUpThreshold` |
| **What it does** | BTC 1-hour price change (%) above which the bot enters TRENDING_UP regime. |
| **Default** | +2% |
| **Range** | 0.5 – 10 |
Regime Check Interval
| Field | Value |
| **Internal name** | `regimeCheckIntervalMin` |
| **What it does** | Interval in minutes between regime evaluations. BTC 1-hour candle data is re-fetched at each evaluation. |
| **Default** | 5 minutes |
| **Range** | 1 – 60 |
10. Capital Allocation
Intraday Routing Interval
| Field | Value |
| **Internal name** | `intradayRouteIntervalHours` |
| **What it does** | Interval in hours between intraday capital routing evaluations. At each evaluation, idle capital from low-activity coins may be redistributed to higher-activity coins. |
| **Default** | 1 hour |
| **Range** | 0.25 – 24 |
Capital Shift Amount
| Field | Value |
| **Internal name** | `intradayShiftPct` |
| **What it does** | Maximum percentage of an idle coin's budget that can be shifted to a higher-activity coin per routing cycle. |
| **Default** | 25% |
| **Range** | 5 – 100 |
Idle Coin Threshold
| Field | Value |
| **Internal name** | `intradayIdlePct` |
| **What it does** | A coin's grid is classified as idle when this percentage or more of its allocated budget is undeployed (not in open buy orders or crypto holdings). Idle grids are eligible to have capital redistributed from them. |
| **Default** | 40% |
| **Range** | 10 – 90 |
Efficiency Window
| Field | Value |
| **Internal name** | `efficiencyWindowDays` |
| **What it does** | Number of days of historical cycle data used when computing per-coin efficiency scores for capital allocation ranking. |
| **Default** | 7 days |
| **Range** | 1 – 30 |
11. Order Placement
Slippage Model Divisor
| Field | Value |
| **Internal name** | `slippageDivisor` |
| **What it does** | For orders above $50, the bot applies a price impact adjustment of (sizeUSD / slippageDivisor) as a fractional price offset to account for market impact. Higher values produce smaller adjustments. |
| **Default** | 200,000 |
| **Range** | 10,000 – 1,000,000 |
Slippage Feedback Weight
| Field | Value |
| **Internal name** | `slippageWeight` |
| **What it does** | Fraction of the bot's own measured historical slippage incorporated into future order price adjustments. 0 = historical slippage data not used. 1 = fully weight own slippage history. |
| **Default** | 0.5 |
| **Range** | 0 – 1.0 |
Buy Retry Price Improvement
| Field | Value |
| **Internal name** | `retryPriceImprovementBuy` |
| **What it does** | When a buy order is rejected by Coinbase, the retry is submitted at (original price × (1 + retryPriceImprovementBuy/100)) to move the price toward the current market. |
| **Default** | 0.02% |
| **Range** | 0 – 0.2 |
Sell Retry Price Improvement
| Field | Value |
| **Internal name** | `retryPriceImprovementSell` |
| **What it does** | When a sell order is rejected by Coinbase, the retry is submitted at (original price × (1 − retryPriceImprovementSell/100)) to move the price toward the current bid. |
| **Default** | 0.02% |
| **Range** | 0 – 0.2 |
Cash Guard Buffer
| Field | Value |
| **Internal name** | `cashGuardBuffer` |
| **What it does** | Minimum USD balance that must remain free at all times. Buy orders are skipped when available cash minus this buffer is insufficient to cover the order. Prevents API-level insufficient-funds rejections caused by settlement timing. |
| **Default** | $10 |
| **Range** | $1 – $500 |
12. Sell Pricing
Depth Threshold — Thin (Low)
| Field | Value |
| **Internal name** | `depthThresholdLow` |
| **What it does** | When total bid depth is below this USD value, sell price is adjusted down by 0.2% to increase probability of fill in thin markets. |
| **Default** | $5,000 |
| **Range** | $100 – $100,000 |
Depth Threshold — Thin (Medium)
| Field | Value |
| **Internal name** | `depthThresholdMed` |
| **What it does** | When total bid depth is between this value and `depthThresholdLow`, sell price is adjusted down by 0.1%. |
| **Default** | $15,000 |
| **Range** | $1,000 – $500,000 |
Depth Threshold — Deep (Medium)
| Field | Value |
| **Internal name** | `depthThresholdHigh` |
| **What it does** | When total bid depth exceeds this value, sell price is adjusted up by 0.1% to capture more value in liquid markets. |
| **Default** | $50,000 |
| **Range** | $5,000 – $1,000,000 |
Depth Threshold — Deep (High)
| Field | Value |
| **Internal name** | `depthThresholdVHigh` |
| **What it does** | When total bid depth exceeds this value, sell price is adjusted up by 0.2%. |
| **Default** | $100,000 |
| **Range** | $10,000 – $5,000,000 |
Depth Adjustment Cap
| Field | Value |
| **Internal name** | `depthAdjCap` |
| **What it does** | Maximum absolute sell price adjustment from all order book depth signals combined. Adjustments from individual depth signals are summed and capped at ±depthAdjCap%. |
| **Default** | 0.3% |
| **Range** | 0 – 1 |
Order Flow Imbalance Threshold
| Field | Value |
| **Internal name** | `ofiThreshold` |
| **What it does** | Order flow imbalance (OFI) value above which sell price is nudged up (+0.1%), and below the negative of which it is nudged down (−0.1%). OFI measures the ratio of buy pressure to sell pressure in recent order book updates. |
| **Default** | 0.05 |
| **Range** | 0.01 – 0.5 |
Thin-Market Sell Boost Fraction
| Field | Value |
| **Internal name** | `thinMarketBoostFraction` |
| **What it does** | In thin markets where a gap exists between the sell price and the best ask, the bot places the sell at: sellPrice + (bestAsk − sellPrice) × thinMarketBoostFraction. Applied only when ask volume is below 100 units and best ask is more than 0.3% above buy price. |
| **Default** | 0.3 |
| **Range** | 0 – 1.0 |
13. Inventory Skew
Skew Tier 1 Threshold
| Field | Value |
| **Internal name** | `skewTier1Pct` |
| **What it does** | When current price is more than this percentage below average cost basis, 1 additional sell level is added to the grid above the standard configuration. |
| **Default** | 2% |
| **Range** | 1 – 20 |
Skew Tier 2 Threshold
| Field | Value |
| **Internal name** | `skewTier2Pct` |
| **What it does** | When current price is more than this percentage below average cost basis, 2 additional sell levels are added. Cumulative with tier 1 if both thresholds are met. |
| **Default** | 5% |
| **Range** | 2 – 30 |
Skew Tier 3 Threshold
| Field | Value |
| **Internal name** | `skewTier3Pct` |
| **What it does** | When current price is more than this percentage below average cost basis, 3 additional sell levels are added. |
| **Default** | 10% |
| **Range** | 5 – 50 |
Downtrend Skew Boost
| Field | Value |
| **Internal name** | `skewDowntrendBoost` |
| **What it does** | Additional sell levels added when a coin is simultaneously underwater and in a detected downtrend. Applied on top of tier-based skew additions. |
| **Default** | 2 |
| **Range** | 0 – 5 |
Maximum Skew Levels
| Field | Value |
| **Internal name** | `skewMaxLevels` |
| **What it does** | Hard cap on total additional sell levels from all skew sources combined (tiers + downtrend boost). |
| **Default** | 4 |
| **Range** | 0 – 10 |
14. System & Reconciliation
Reconcile Interval
| Field | Value |
| **Internal name** | `reconcileIntervalSec` |
| **What it does** | Interval in seconds between order reconciliation checks. At each check, the bot's internal order state is compared against live Coinbase open orders. Discrepancies trigger state corrections. |
| **Default** | 60 seconds |
| **Range** | 15 – 300 |
Startup Grace Period
| Field | Value |
| **Internal name** | `startupGraceMinutes` |
| **What it does** | Minutes after bot restart during which fill detection is suppressed. Allows grid order state to reload from disk before the reconciler begins processing. Orders placed in this window are not treated as missing fills. |
| **Default** | 3 minutes |
| **Range** | 1 – 10 |
Fill Lag Tolerance
| Field | Value |
| **Internal name** | `fillLagToleranceMin` |
| **What it does** | Orders placed within this many minutes are not flagged as missing during reconciliation, accounting for Coinbase's settlement and propagation latency. |
| **Default** | 5 minutes |
| **Range** | 1 – 30 |
TWAP Phantom Threshold
| Field | Value |
| **Internal name** | `twapPhantomThreshold` |
| **What it does** | Maximum allowable price spread (as a fraction) between a sell order's linked buy price and the current price. When the spread exceeds this value, the buy→sell link is treated as unreliable and fallback cost basis methods are used. |
| **Default** | 0.20 (20%) |
| **Range** | 0.05 – 0.50 |
Dead Grid Window
| Field | Value |
| **Internal name** | `deadGridHours` |
| **What it does** | Number of hours without a completed fill after which a grid is classified as dead. Dead grids are eligible for restructuring or recenter. |
| **Default** | 12 hours |
| **Range** | 1 – 168 |
Health Score — Cull Threshold
| Field | Value |
| **Internal name** | `healthScoreCullThreshold` |
| **What it does** | Coins with a health score (0–100 scale, computed from win rate, cycle recency, and profit trend) below this value are candidates for capital reduction or removal. |
| **Default** | 58 |
| **Range** | 0 – 100 |
Health Score — Promotion Threshold
| Field | Value |
| **Internal name** | `healthScorePromoteThreshold` |
| **What it does** | Minimum health score required for a coin in skeleton/probation mode to be promoted to full capital allocation. |
| **Default** | 70 |
| **Range** | 0 – 100 |
Weekly Rotation Day
| Field | Value |
| **Internal name** | `weeklyRotationDayUtc` |
| **What it does** | Day of the week (0 = Sunday, 6 = Saturday, UTC) on which the bot evaluates portfolio-level performance and considers removing underperforming coins. |
| **Default** | 0 (Sunday) |
| **Range** | 0 – 6 |
Weekly Rotation Hour
| Field | Value |
| **Internal name** | `weeklyRotationHourUtc` |
| **What it does** | UTC hour (0–23) at which the weekly rotation evaluation runs. |
| **Default** | 3 |
| **Range** | 0 – 23 |
DCA Depth Controls
DCA Depth Halt — Enabled
| Field | Value |
| **Internal name** | |
| **What it does** | When enabled, halts new buys on any coin that drops more than % below its TWAP cost basis. Prevents the bot from chasing a coin in freefall. If is also on, limited DCA may resume when price consolidates. |
| **Default** | true |
| **Range** | true / false |
DCA Depth Halt — Threshold (%)
| Field | Value |
| **Internal name** | |
| **What it does** | The percentage drop below TWAP cost that triggers DCA halting. At 35% (default), if a coin's current price is 35% or more below what the bot paid on average, new buy orders are paused until price recovers or stabilizes. |
| **Default** | 35 |
| **Range** | 15 – 80 |
DCA Stabilization Re-entry — Enabled
| Field | Value |
| **Internal name** | |
| **What it does** | When enabled alongside , allows limited DCA to resume if the coin's price consolidates (no new lows over ~4 hours, price range < 6%, not in TRENDING_DOWN or EXTREME_RISK regime). In this stabilized mode, the bot places at most 1 buy every 4 hours at 50% of the normal order size. |
| **Default** | true |
| **Range** | true / false |
Per-coin Stop Loss — Enabled
| Field | Value |
| **Internal name** | |
| **What it does** | Opt-in feature. When a coin has been in DCA depth halt AND its price stays more than % below cost basis for more than 4 consecutive hours, the bot automatically places a market sell for all held coins, halts the grid, and blacklists the coin for 30 days. Off by default — enable only if you want automatic exits on deeply underwater positions. |
| **Default** | false |
| **Range** | true / false |
Per-coin Stop Loss — Threshold (%)
| Field | Value |
| **Internal name** | |
| **What it does** | The percentage drop below TWAP cost that, combined with 4+ hours of DCA depth halt, triggers the per-coin automatic sell. At 45% (default), a coin must be 45% or more below cost for 4+ hours before the bot exits the position. |
| **Default** | 45 |
| **Range** | 20 – 80 |
Tessara Parameter Reference — Version 3.0 — May 12, 2026
Smart Signals is an intelligence layer that improves entry sizing, manages conviction over time, and protects the portfolio when market conditions deteriorate. Most features are off by default and can be enabled individually in Settings.