Skip to content

Repository files navigation

Quiver

Quiver automates crypto buys on Robinhood through Robinhood's official Crypto Trading API. It runs on your own computer, follows rules you set in a config file, and never spends past the limits you give it. Start with a few dollars or run it at whatever size your caps allow; nothing in the code forces "small," so the amounts are your choice. The code is open source under the MIT license.

Read this before anything else

Quiver has no secret edge, and it will not make you rich. We checked. Scheduled buying, buying dips, and buying more on bigger dips were all tested against real price history, and none of them beat simply buying and holding once trading costs are counted. Crypto can fall a long way and stay down.

What Quiver is good for is narrow: putting fixed amounts into a few coins on a schedule or on dips, automatically, with tight guardrails and a clear record of every trade. It scales to whatever you configure, but the rule is the same at any size: use only money you can afford to lose completely, and do not size up because a run looks like it is working. If your goal is to grow savings, an ordinary index fund has a real expected return and this does not.

If that is clear, read on.

What it does

Quiver watches a short list of coins you pick and buys small amounts using one of two simple rules:

  • Scheduled buying: a fixed dollar amount on a fixed interval (plain dollar-cost averaging).
  • Dip buying: a fixed amount, sized up the further the price is below its recent average, with a cooldown between buys.

It only ever buys. It does not sell on signals, use margin or leverage, or trade anything but spot. Every order is written to a local database, and it can email you whenever a real purchase happens.

The guardrails

Whether an order comes from the automation or from you placing one by hand, it passes the same checks:

  • Nothing is real until you turn on live trading. The default is a dry run that only simulates orders and touches no money.
  • Spending caps you set: a limit per order, per day, and per coin.
  • It skips a trade when the bid/ask spread is too wide, when the price quote is stale, or when Robinhood's price disagrees too much with an outside reference (CoinMarketCap).
  • A kill switch stops everything at once and stays in effect across restarts.
  • Only one copy can run at a time, so two processes cannot quietly double your daily limit.
  • Dry-run and live use separate databases, so paper testing never touches your live records.

What you need

  • Python 3.11 or newer, on Windows, macOS, or Linux.
  • A Robinhood account with the Crypto Trading API turned on, plus an API key (steps below).
  • A few minutes to set the config.

Setup

  1. Get the code and open the folder:
    git clone <your-repo-url> quiver
    cd quiver
    
  2. Create a virtual environment and install the dependencies:
    python -m venv .venv
    .venv\Scripts\activate        # Windows
    source .venv/bin/activate     # macOS / Linux
    pip install -r requirements.txt
    
  3. Copy the example config and secrets files, then edit your copies:
    copy config.example.toml config.toml    # Windows
    copy .env.example .env
    
    Use cp instead of copy on macOS/Linux.
  4. Make an API key:
    python -m quiver.cli keygen
    
    It prints a public key and a private key. Add the public key to Robinhood's API credentials page, then paste the private key and your Robinhood API key into .env. Never share or commit .env.
  5. Open config.toml and set your coins, amounts, and spending caps. The defaults are small on purpose; raise the caps and amounts when you want to size up.
  6. Run it in dry-run first and watch it. No real orders happen:
    python -m quiver.cli run
    
  7. When you are ready for real orders, add --live:
    python -m quiver.cli run --live
    
    Stop it with Ctrl-C, or from another terminal with python -m quiver.cli kill.

Commands

  • run / run --live: start the engine, dry-run or live.
  • web / web --live: open a local dashboard to watch and control it.
  • status: show your account, holdings, and how much of the daily cap is used.
  • quote SYMBOL: print the current bid and ask.
  • backfill / backtest: download free historical prices and compare buying approaches.
  • test-email: send yourself a sample purchase email (needs a Brevo API key).
  • kill / resume: engage or clear the kill switch.

The dashboard

python -m quiver.cli web serves a page at http://127.0.0.1:8787 that is reachable only from your own machine. It shows quotes, holdings, recent orders, the daily-cap usage, and how far each coin sits below its recent averages. You can start or stop the engine, place a manual order, and hit the kill switch. The mode, dry-run or live, is fixed by how you launch it, not by a button.

Running it unattended

You can start it on login with Windows Task Scheduler; see scripts/run-quiver.ps1 and the comments there. The simplest setup is one process that does both: quiver web --live --start runs the engine and serves the dashboard together, so you can open http://127.0.0.1:8787 anytime to watch or control it (use web --start without --live for dry-run). You cannot run a separate run and web at once; they share a single-instance lock. Stop it with the kill switch or Ctrl-C rather than force-killing the process, so its records stay consistent.

Email alerts (optional)

If you set a Brevo API key and a verified sender, Quiver emails you the full details of every real purchase. It is off by default. The sending domain has to be verified in your Brevo account or the emails will not arrive.

Disclaimer

Quiver is provided as is, with no warranty, under the MIT license (see LICENSE). It is not financial advice. You are responsible for your own money, for any order it places, and for following Robinhood's API terms and the laws where you live. Crypto trading loses money for many people. Only run this with funds you are prepared to lose.

About

A local-first, guardrailed Robinhood crypto automation system with dry-run/live separation, atomic risk reservations, SQLite audit trail, backtesting, and a localhost dashboard.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages