# Sf Deploy

> Deploy a StrategyFactory strategy as a copy bot on one of your connected exchanges. Use only after the user has explicitly chosen a strategy (typically via sf-best-pick / sf-market-fit / sf-profit-factor) and named the target exchange and sizing. Dangerous — creates a live bot that places real orders. Always confirm with the user before invoking.

- Skill: `daviddme/sf-deploy` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add daviddme/sf-deploy`
- Raw SKILL.md: https://api.skillmd.com/api/skills/daviddme/sf-deploy/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: daviddme (https://skillmd.com/u/daviddme)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/daviddme/sf-deploy

---


# sf-deploy

Creates a copy bot via `POST /api/user-api/bots`. The server enforces
exchange ownership, so this is safe in the "wrong-account" sense, but the
bot it creates will trade real money on the named exchange.

## When to use

ONLY after:

1. The user has picked a strategy (`sf-best-pick`, `sf-market-fit`, `sf-profit-factor`)
2. The user has named the target exchange (`sf-portfolio` lists IDs)
3. The user has specified sizing (`--position` and `--amount`)
4. The user has explicitly said "deploy" / "create the bot" / "go live"

Always echo the chosen strategy + sizing + exchange and confirm before
running this skill.

## How to run

```
# Fixed leverage
python sf-deploy/deploy.py \
  --strategy SLUG_OR_ID \
  --exchange EXCHANGE_ID \
  --position percentage \
  --amount 3 \
  --leverage 10 \
  [--name "Best Pick #1"] \
  [--dry-run] [--json]

# Dynamic leverage
python sf-deploy/deploy.py \
  --strategy SLUG_OR_ID \
  --exchange EXCHANGE_ID \
  --position usdt \
  --amount 100 \
  --dynamic-leverage \
  [--name "..."] [--dry-run] [--json]
```

## Inputs

- `--strategy`: id or slug. Get it from `sf-best-pick` or any list skill.
- `--exchange`: exchange id from `sf-portfolio` (NOT the venue name).
- `--position`: `percentage` (of wallet) or `usdt` (fixed dollar amount).
- `--amount`: positive number. Percent if `--position percentage`, USDT
  if `--position usdt`.
- `--leverage` OR `--dynamic-leverage`: pick one.
- `--name`: optional bot display name.

## Safety

- `--dry-run` prints exactly what would be POSTed and exits without
  calling the API.
- The API is rate-limited to 120 requests/minute per user; the shared
  client throttles to stay well under.
- This skill does NOT preview the strategy's metrics. The agent should
  echo them from `sf-best-pick` / `sf-edge-watch` before calling deploy.

