> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sandmark.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recipes

> Five tested strategies to copy, run and adapt.

Each recipe below is a complete request body. They all run as written: the table shows what each returned
for 1 May to 31 October 2026, the window used throughout these docs. Change `start` and `end` to suit your
[lookback](https://docs.sandmark.com/backtesting/plans-and-limits.md).

| Recipe | Return | Sharpe | Max drawdown | Positions | Main warning |
| - | - | - | - | - | - |
| [Covered call with disciplined exits](#covered-call-with-disciplined-exits) | -0.1% | 0.02 | -8.8% | 14 | only 14 positions |
| [Delta-hedged short straddle](#delta-hedged-short-straddle) | -0.2% | -0.13 | -1.7% | 7 | only 7 positions |
| [Put spread with a profit target](#put-spread-with-a-profit-target) | -3.0% | -0.67 | -10.6% | 8 | only 8 positions |
| [Weekend iron condor](#weekend-iron-condor) | +0.9% | 2.23 | -0.3% | 27 | 40 marks carried forward |
| [At-the-money call calendar](#at-the-money-call-calendar) | -0.7% | -2.12 | -0.9% | 7 | only 7 positions |

> [!WARNING]
>
> Six months of results are shown to prove the recipes run, not to recommend them. Every one of these
> carries a small-sample warning over this window: judge a strategy over the longest window your plan allows.

## Covered call with disciplined exits

Sell a 20-delta call against one BTC each month. Take profit at 75% decay, stop out if the call's delta reaches 0.45, roll two days before expiry.

```json covered-call.json theme={null}
{
  "name": "BTC 20-delta covered call",
  "asset": "DER.BTC_USD",
  "start": "2026-05-01",
  "end": "2026-10-31",
  "capital": {
    "initial_equity": 1,
    "sizing": {
      "mode": "contracts",
      "value": 1
    }
  },
  "structure": {
    "expiry": {
      "by": "monthly",
      "min_dte": 20
    },
    "legs": [
      {
        "id": "call",
        "type": "call",
        "direction": "short",
        "strike": {
          "by": "delta",
          "value": 0.2
        }
      }
    ]
  },
  "lifecycle": {
    "rules": [
      {
        "name": "take_profit_75",
        "when": {
          "predicate": {
            "subject": "structure",
            "metric": "premium",
            "op": "below",
            "value": -0.75,
            "unit": "percent",
            "reference": "entry"
          }
        },
        "do": {
          "action": "close_all"
        }
      },
      {
        "name": "delta_stop",
        "when": {
          "predicate": {
            "subject": "leg:call",
            "metric": "contract_delta",
            "op": "above",
            "value": 0.45
          }
        },
        "do": {
          "action": "close_all"
        }
      },
      {
        "name": "roll_before_expiry",
        "when": {
          "predicate": {
            "subject": "structure",
            "metric": "dte",
            "op": "below",
            "value": 2
          }
        },
        "do": {
          "action": "close_all"
        }
      }
    ]
  }
}
```

## Delta-hedged short straddle

Sell the at-the-money straddle on the front monthly, both legs on one strike via `shared_strike`, and delta-hedge with dated futures whenever net delta drifts past 0.5. Isolates the volatility premium from direction.

```json hedged-straddle.json theme={null}
{
  "name": "BTC delta-hedged short straddle",
  "asset": "DER.BTC_USD",
  "start": "2026-05-01",
  "end": "2026-10-31",
  "capital": {
    "initial_equity": 100,
    "sizing": {
      "mode": "percent_of_equity",
      "value": 0.2
    }
  },
  "structure": {
    "expiry": {
      "by": "monthly",
      "min_dte": 20
    },
    "shared_strike": "call",
    "legs": [
      {
        "id": "call",
        "type": "call",
        "direction": "short",
        "strike": {
          "by": "moneyness",
          "value": 1.0
        }
      },
      {
        "id": "put",
        "type": "put",
        "direction": "short",
        "strike": {
          "by": "moneyness",
          "value": 1.0
        }
      }
    ],
    "hedge": {
      "enabled": true,
      "greek": "delta",
      "band": 0.5,
      "match_expiry": true
    }
  },
  "lifecycle": {
    "rules": [
      {
        "name": "roll_week_before",
        "when": {
          "predicate": {
            "subject": "structure",
            "metric": "dte",
            "op": "below",
            "value": 7
          }
        },
        "do": {
          "action": "close_all"
        }
      }
    ]
  }
}
```

## Put spread with a profit target

Buy the 25-delta put and sell the 10-delta put, spending 2% of equity on premium. Close when the spread has doubled or a week before expiry.

```json put-spread-take-profit.json theme={null}
{
  "name": "BTC 25/10-delta put spread, take profit",
  "asset": "DER.BTC_USD",
  "start": "2026-05-01",
  "end": "2026-10-31",
  "capital": {
    "initial_equity": 100,
    "sizing": {
      "mode": "premium_budget",
      "value": 0.02
    }
  },
  "structure": {
    "expiry": {
      "by": "monthly",
      "min_dte": 20
    },
    "legs": [
      {
        "id": "long_put",
        "type": "put",
        "direction": "long",
        "strike": {
          "by": "delta",
          "value": 0.25
        }
      },
      {
        "id": "short_put",
        "type": "put",
        "direction": "short",
        "strike": {
          "by": "delta",
          "value": 0.1
        }
      }
    ]
  },
  "lifecycle": {
    "rules": [
      {
        "name": "take_profit_100",
        "when": {
          "predicate": {
            "subject": "structure",
            "metric": "premium",
            "op": "above",
            "value": 1.0,
            "unit": "percent",
            "reference": "entry"
          }
        },
        "do": {
          "action": "close_all"
        }
      },
      {
        "name": "roll_before_expiry",
        "when": {
          "predicate": {
            "subject": "structure",
            "metric": "dte",
            "op": "below",
            "value": 7
          }
        },
        "do": {
          "action": "close_all"
        }
      }
    ]
  }
}
```

## Weekend iron condor

Open a 3%/6% iron condor on the nearest listed expiry every Friday at 08:00 UTC and close it on Monday. Uses weekday gating and moneyness strikes.

```json weekend-iron-condor.json theme={null}
{
  "name": "BTC weekend iron condor",
  "asset": "DER.BTC_USD",
  "start": "2026-05-01",
  "end": "2026-10-31",
  "clock": {
    "decision_hour_utc": 8
  },
  "capital": {
    "initial_equity": 100,
    "sizing": {
      "mode": "percent_of_equity",
      "value": 0.25
    }
  },
  "structure": {
    "expiry": {
      "by": "listed",
      "min_dte": 2
    },
    "legs": [
      {
        "id": "short_put",
        "type": "put",
        "direction": "short",
        "strike": {
          "by": "moneyness",
          "value": 0.97
        }
      },
      {
        "id": "long_put",
        "type": "put",
        "direction": "long",
        "strike": {
          "by": "moneyness",
          "value": 0.94
        }
      },
      {
        "id": "short_call",
        "type": "call",
        "direction": "short",
        "strike": {
          "by": "moneyness",
          "value": 1.03
        }
      },
      {
        "id": "long_call",
        "type": "call",
        "direction": "long",
        "strike": {
          "by": "moneyness",
          "value": 1.06
        }
      }
    ]
  },
  "lifecycle": {
    "entry_weekdays": [
      "friday"
    ],
    "exit_weekdays": [
      "monday"
    ]
  }
}
```

## At-the-money call calendar

Sell the front monthly at-the-money call and buy the same strike one month further out, using a per-leg `expiry` and `shared_strike`. Close three days before the front leg expires.

```json calendar-spread.json theme={null}
{
  "name": "BTC ATM call calendar",
  "asset": "DER.BTC_USD",
  "start": "2026-05-01",
  "end": "2026-10-31",
  "capital": {
    "initial_equity": 100,
    "sizing": {
      "mode": "percent_of_equity",
      "value": 0.2
    }
  },
  "structure": {
    "expiry": {
      "by": "monthly",
      "min_dte": 20
    },
    "shared_strike": "front",
    "legs": [
      {
        "id": "front",
        "type": "call",
        "direction": "short",
        "strike": {
          "by": "moneyness",
          "value": 1.0
        }
      },
      {
        "id": "back",
        "type": "call",
        "direction": "long",
        "strike": {
          "by": "moneyness",
          "value": 1.0
        },
        "expiry": {
          "by": "monthly",
          "nth": 2,
          "min_dte": 20
        }
      }
    ]
  },
  "lifecycle": {
    "rules": [
      {
        "name": "close_before_front_expiry",
        "when": {
          "predicate": {
            "subject": "leg:front",
            "metric": "dte",
            "op": "below",
            "value": 3
          }
        },
        "do": {
          "action": "close_all"
        }
      }
    ]
  }
}
```

## Building your own

Start from the closest recipe and change one thing at a time. Check the `strategy` block of each
result to confirm the engine read your change the way you meant it. See
[Strategy specification](https://docs.sandmark.com/backtesting/strategy-spec.md) for every field.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.