paper mode · synthetic tape · no install
One spec in.One bot out.
Bots are trading on this page right now and printing a receipt for every decision. Each one carries the risk.py its spec generates, and that file stamps refused on anything the spec does not allow.
Watch them, take one over, or write a spec and put your own bot on the tape.
Nothing to download, no Python, no wallet. Nothing you do leaves this tab.
The bots run in your browser with JavaScript. Without it this page is the manual: the spec language, the refusals and the repository it writes are all below.
- bots
- 0
- fills
- 0
- refused
- 0
- stops hit
- 0
- tick
- 0
- paper pnl
- +0.00
01 Bots
Five example bots run here when JavaScript is on.
02 The desk
The desk needs JavaScript: it runs the generated risk module in your browser. Everything it would tell you is in src/risk.py of any repository degenerator writes.
03 Write your own bot
# Momentum Degen venue: hyperliquid pairs: BTC, SOL, HYPE timeframe: 5m max_position: 5% stop_loss: 3% leverage: 3x cash: 1000 rules: - long when the 20 period average crosses above the 50 - close anything down 3% - flat before funding
├── README.md ├── .env.example ├── .gitignore ├── requirements.txt ├── Makefile ├── Dockerfile ├── compose.yml ├── .github/ │ └── workflows/ │ └── ci.yml ├── src/ │ ├── main.py │ ├── strategy.py │ ├── risk.py │ └── venue/ │ ├── base.py │ └── hyperliquid.py ├── tests/ │ └── test_risk.py └── runs/
-
A venue that does not exist.
degenerator: v.spec.md: unknown venue 'binance': choose one of hyperliquid, dydx, robinhood, paper -
A title with nothing in it, so there is no name to give the repo.
degenerator: t.spec.md:1: the title line is empty: write '# My Bot' -
No rules at all.
degenerator: r.spec.md: no rules: a bot with no rules is a random number generator
| key | default | notes |
|---|---|---|
| venue | paper | hyperliquid, dydx, robinhood or paper |
| pairs | BTC | comma separated |
| timeframe | 5m | copied into the strategy as a comment |
| max_position | 0.05 | share of equity per position, % accepted |
| stop_loss | 0.03 | per position, % accepted |
| leverage | 1 | 3x or 3; above 1 is refused on robinhood |
| cash | 1000 | starting paper equity |
Rules are copied into strategy.py as comments, verbatim. Unknown keys are kept in the README.
04 What is real here
- The generator. The CLI's parser and templates run in this tab and are checked against the Python byte for byte on every push. The zip is the repository the CLI writes.
- Every refusal. Each bot carries a port of the risk.py its spec generates, and CI runs the same orders through both and fails on a single differing word.
- The stops. They close positions at the price your spec sets, and the receipt credits risk.py.
- Venues: hyperliquid and dydx are perps; robinhood is spot only, so leverage is refused in the spec, a short is refused by risk.py, and fills are marked model=swap.
- The prices. One seeded random walk for every bot, starting where the generated paper adapter quotes. Not a record of any market.
- The strategy. Every bot runs the same demo: an 8 over 21 moving-average cross that asks for 10% of equity. degenerator never turns rule text into code, so neither does this page.
- The money. Paper fills, no network, no wallet. Generated adapters refuse to start with live=True.
pip install -e . degenerator new examples/momentum.spec.md
Standard library only. Every run leaves a JSON receipt. Source on GitHub, MIT.
$DGEN
degenerator writes bots for Robinhood Chain, so the ticker lives there. The tool is MIT and stays MIT — the token is not a licence, a key or a gate.