SkillAgentSearch skills...

Delta Farmer

πŸ€– Delta-neutral trading automation for perp DEX airdrops. Farm points while you sleep.

Install / Use

npx skills add vladkens/delta-farmer

Installs into whichever agent you are using.

About this skill

Quality Score

0/100

Supported Platforms

Universal

README

delta-farmer

<p align="center"> English Β· <a href="readme.ru.md">Русский</a> Β· <a href="readme.uk.md">Π£ΠΊΡ€Π°Ρ—Π½ΡΡŒΠΊΠ°</a> </p> <p align="center"><img src=".github/logo.svg" width="200" /></p> <div align="center">

<img src="https://badges.ws/badge/-/%40uid127/000?icon=x&label" alt="x" /> <img src="https://badges.ws/badge/-/Telegram%20Channel/2CA5E0?icon=telegram&label" alt="tg channel" /> <img src="https://badges.ws/badge/-/Telegram%20Chat/2CA5E0?icon=telegram&label" alt="tg chat" />

</div>

Automated delta-neutral trading for crypto points farming. Run classic two-sided hedges or balanced multi-symbol baskets across perpetual DEXs to maximize volume and points with limited directional risk.

  • 🎯 Delta-neutral by design β€” matched long/short positions minimize directional exposure
  • 🧩 Multi-symbol basket mode β€” trade 2–4 symbols in one cycle, each leg staying neutral
  • πŸ”„ Multi-account management β€” one config file drives all your accounts simultaneously
  • πŸ‘₯ Grouped trading β€” split accounts into independent strategy groups
  • πŸ“Š Real-time safety checks β€” emergency close if ROI limits are breached
  • πŸ” Encrypted key storage β€” private keys never sit in plaintext
  • πŸ“¨ Telegram notifications β€” get alerts on trade start, stop, errors, and periodic reports
  • 🎲 Configurable sizing and timing β€” randomized sizes and durations to vary on-chain patterns

What is delta-farmer?

Delta-farmer is a trading bot that automatically opens matched long and short positions on perpetual DEXs. The idea is simple: by holding equal opposite-side trades, your net market exposure stays near zero β€” you're farming trading volume and protocol points rather than betting on price direction.

Each trading cycle, the bot:

  1. Opens a long position on one account and a short on another (or splits across multiple assets)
  2. Holds them for a configurable duration while monitoring risk
  3. Closes everything cleanly and waits before the next cycle
  4. Sends you a Telegram summary if configured

You control the size, timing, leverage, and which exchange to run on. The bot handles the rest.


Supported Exchanges

| Name | Network | Link | Referral | | -------- | ------- | --------------------------------------------- | ------------------------------------------------------------------ | | Ethereal | EVM | ethereal.trade | Sign up | | HyENA | EVM | hyena.trade | Sign up | | Nado | EVM | nado.xyz | Sign up | | Omni | EVM | variational.io | Sign up | | Onyx | EVM | onyx.live | Sign up | | Pacifica | Solana | pacifica.fi | Sign up | | RiseX | EVM | rise.trade | Sign up | | 01.xyz | EVM | 01.xyz | Sign up |


Installation

Step 1 β€” Install prerequisites

macOS

Open Terminal (Cmd + Space β†’ type "Terminal" β†’ Enter) and run:

xcode-select --install

A dialog will pop up β€” click "Install". Once done, install uv (official guide):

curl -LsSf https://astral.sh/uv/install.sh | sh

Close and reopen Terminal so the uv command becomes available.

Windows

Open PowerShell (Win + S β†’ type "PowerShell" β†’ Enter) and run:

winget install --id Git.Git -e --source winget

Then install uv (official guide):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Close and reopen PowerShell so both git and uv become available.

Step 2 β€” Download and run

git clone https://github.com/vladkens/delta-farmer.git
cd delta-farmer

That's it. Dependencies are installed automatically on the first run.


Quick Start

Replace <app> with your exchange name throughout: pacifica, omni, ethereal, nado, hyena, onyx, rise, or zero1.

Step 1 β€” Create a config file

uv run apps/<app>.py config new

This creates configs/<app>.toml pre-filled with sensible defaults. Open the file in any text editor.

Step 2 β€” Add your private keys

Find the [[accounts]] sections and paste your private keys:

[[accounts]]
name = "acc1"
privkey = "your-private-key-here"

[[accounts]]
name = "acc2"
privkey = "your-private-key-here"

You need at least 2 accounts β€” one goes long, the other goes short.

Step 3 β€” Encrypt your keys

uv run apps/<app>.py config encrypt

You'll be prompted for a password. After this step, the raw keys are replaced with encrypted values in the file. You'll enter this password each time you start the bot (or set it in .env β€” see Private Key Encryption & Passwords).

Step 4 β€” Start trading

uv run apps/<app>.py trade

Commands

All exchanges share the same command structure. Replace <app> with your exchange name.

# Trading
uv run apps/<app>.py trade          # Start automated trading
uv run apps/<app>.py close          # Close all open positions
uv run apps/<app>.py info           # View account balances & points
uv run apps/<app>.py positions      # View current open positions
uv run apps/<app>.py proxy          # Check configured proxies

# Statistics
uv run apps/<app>.py stats          # All cached periods (cached 1h)
uv run apps/<app>.py stats this     # Current period only
uv run apps/<app>.py stats last     # Previous period only
uv run apps/<app>.py stats W05      # Specific week/period prefix
uv run apps/<app>.py stats --force  # Force-refresh cached stats
uv run apps/<app>.py clean          # Delete all cached data

# Config management
uv run apps/<app>.py config new            # Create a new config file
uv run apps/<app>.py config new -c my.toml # Create at a custom path
uv run apps/<app>.py config encrypt        # Encrypt private keys in config
uv run apps/<app>.py config decrypt        # Decrypt to view raw keys

# Help
uv run apps/<app>.py --help

Logs

By default, logs are printed only to the terminal. For trading runs, set DF_LOG_FILE=1 to also write logs to logs/<timestamp>-<app>.log:

DF_LOG_FILE=1 uv run apps/<app>.py trade

Weekly summary

scripts/weekly.py reads cached stats from .cache. Refresh exchange data first with uv run apps/<app>.py stats --force when you need fresh numbers.

uv run scripts/weekly.py                    # All-time summary by exchange
uv run scripts/weekly.py 0                  # Latest cached ISO week
uv run scripts/weekly.py -1                 # Previous ISO week
uv run scripts/weekly.py W14                # Specific week in the current year
uv run scripts/weekly.py 2026-W14           # Specific ISO week with year
uv run scripts/weekly.py --from W14 --to W22 # Summary for a week range
uv run scripts/weekly.py -P --from W14 --to W22 # Weekly detail inside the range
uv run scripts/weekly.py Hyena              # One exchange, all available periods
uv run scripts/weekly.py Hyena 0            # One exchange, latest cached ISO week
uv run scripts/weekly.py -e Hyena           # Legacy alias for one exchange
uv run scripts/weekly.py --burn             # Burn pivot by ISO week and exchange
uv run scripts/weekly.py --help             # Full weekly report help

Exchange-specific commands

uv run apps/omni.py competition              # Show Omni competition status
uv run apps/omni.py competition --join       # Opt in all configured Omni accounts
uv run apps/hyena.py reward claim            # Claim Hyena rewards
uv run apps/hyena.py migrate                 # Migrate Hyena HyperLiquid accounts to unified mode
uv run apps/onyx.py migrate                  # Migrate Onyx HyperLiquid accounts to unified mode

Omni competition commands check the active tournament window, join status, eligibility volume, and leaderboard places. Hyena and Onyx migration commands switch HyperLiquid-backed accounts to Unified Account mode when the exchange reports a legacy account mode.

Omni Cloudflare challenges

Omni handles Cloudflare challenges automatically. By default it uses the shared solver gateway, so no extra configuration is required. To use your own Astrum solver account instead, register with Astrum, add funds, create an API key, and add it to configs/omni.toml:

captcha_key = "your-astrum-key"

captcha_key takes priority over the CAPTCHA_KEY value in .env. Leave it unset to use the shared gateway. Run uv run apps/omni.py config encrypt after adding the key.


Configuration Reference

All settings live in your configs/<app>.toml file. Here is every available parameter:

Core settings

| Parameter | Default | Description | | ------------------- | -------- | ----------------------------------------------------------------

Related Skills

View on GitHub
GitHub Stars18
CategoryDevelopment
Updated6d ago
Forks6

Languages

Python

Security Score

90/100

Audited on Aug 1, 2026

No findings