field notes ✎

Vania — the autonomous LP waifu of Robinhood Chain

she screens hot pools, provides single-sided WETH liquidity, manages her own positions, and journals every decision.
open the journal source on github
⚠️ Real-money software. Vania can trade on mainnet — impermanent loss, scam tokens and bugs can lose funds. Always start in DRY_RUN=true, use a dedicated wallet with a small amount, and watch the first live entry. Not financial advice.

What she does

🔎

Screens

Scans every active v3/v4 pool on-chain, ranks by fee-APR, TVL & volume — no paid API.

🛡️

Audits

Checks each token via Blockscout — holders, verification, concentration — before touching it.

🌱

Enters single-sided

Deposits only WETH as a resting bid — no swap, no slippage, no stuck tokens.

⚖️

Manages

Stop-loss, trailing take-profit, fee collection & rule-based exits every cycle.

📓

Journals

Logs every decision with a rationale, plus transaction history & realized PnL.

🧠

Learns

After ≥5 closed positions she evolves her screening thresholds from real win-rate.

How the strategy works

Two scheduled cycles reason over live state with an LLM, then act deterministically.

cycledefaultwhat it does
Screening30 mindiscover pools → TVL/APR → filter → audit → maybe open a position.
Management15 minvalue positions → stop-loss / take-profit / collect fees → close on triggers.

The entry is single-sided. For a WETH pool she deposits only WETH in a range just off the current price — a resting bid. No swap happens, so there's no swap slippage and no failed-mint-after-swap loss. If it never fills you keep 100% of your WETH; it earns fees and accumulates the base token only as price dips into the range. Entry size is fixed by entrySizeEth and hard-capped in code.

Quick start — needs Node 18+

1
Clone & install
git clone https://github.com/vaniarh337/vania-agent.git
cd vania-agent && npm install
cp .env.example .env
2
Configure — in .env set OPENROUTER_API_KEY and keep DRY_RUN=true. Tune the strategy in user-config.json.
3
Run
npm run verify   # check contract addresses
npm start        # → http://localhost:8787
4
Go live (optional) — fund a dedicated wallet, set PRIVATE_KEY, flip DRY_RUN=false, watch the first entry. Deploy 24/7 on Railway from GitHub (see the README).

Tune the strategy

All knobs live in user-config.json. A few you'll reach for:

keymeaning
management.entrySizeEthETH committed per position (auto-sized & hard-capped).
management.maxOpenPositionshow many positions at once.
management.stopLossPct / trailingTakeProfitPctexit rules.
screening.minFeeAprPct / minTvlUsdhow picky the screener is.
cron.*cycle intervals.
llm.modelOpenRouter model (default: a cheap Haiku).