You already trade the 5-minute markets. You just can’t be awake for all of them.

A new window opens every five minutes, all night — 288 between one midnight and the next. You take the ones you are awake for. This is a Python bot that sits on the rest, on your machine, and it starts in simulation: no wallet, no funds, no account. Watch it work live markets for a week before it goes near a dollar.

We ran it with real money, lost $270 finding out which parts were wrong, and published every order — the losing ones included. What survived is the configuration it ships with; it closed its live run at +7.3% ROI. Yours for $99, once — no subscription, no licence server, no telemetry, nothing anybody can switch off remotely.

Listed on POLBOTS.COM · Open data on GitHub · Record computed from the bot's own fill log, published per order

The Uruguabot signal monitor running in dry-run mode: live signals with measured accuracy, simulated bets, and the audited +7.3% ROI record

How much can it lose before something stops it?

This bot can lose money. Ours did: the live experiment finished down overall, and the only configuration that ended up ahead is the one it now ships with, at +7.3% ROI. You will not find that sentence on any other bot’s landing page, which is most of the reason it is on this one. So skip the question of whether it can lose. The one that matters is how much it can lose before something stops it — and every limit below is already switched on when you unzip it.

1. It does not start with your money

  • Ships DRY_RUN=true. Out of the box it finds real live 5-minute markets and trades them in simulation. No wallet, no funds, no account needed to evaluate it.
  • The simulation is not flattering. Fills are drawn from slippage measured on real trades — −1.2¢ entry, −1.3¢ stop-loss, −8.8¢ take-profit on average — not zero-friction fantasy fills.
  • Going live takes two separate flags. DRY_RUN=false and LIVE_CONFIRM=YES. It refuses to start live without both.
  • And a dress rehearsal first. check_wallet.py verifies your auth and balances without placing a trade that could fill.

2. You set the ceiling, and it is small by default

  • BET_USD=2 and MAX_OPEN_POSITIONS=2 — about $4 exposed at any one moment, out of the box.
  • A stop-loss on every position at execution price −10¢ (SL_DELTA=0.10), not a mental one.
  • The honest limit: the bot can spend whatever you fund it with. It only ever touches the wallet whose key is in your .env, so use a dedicated Polymarket wallet with a small balance. Nothing in software can protect a wallet you overfunded.

3. It stops itself

  • Three circuit breakers, on by default: 10% daily loss, 7 consecutive losses, or 80% of the last 20 orders going unfilled. Any one of them pauses trading.
  • The pause survives a restart. It is written to disk, so rebooting does not accidentally un-pause a bot that stopped itself for a reason.
  • It auto-resumes after 30 minutes (RISK_AUTO_RESUME_MINUTES=30). Set that to 0 and the pause holds until you lift it by hand.
  • A volatility guard sits out the violent regimes where measured stop-loss slippage hit −24¢ at the worst decile instead of the usual −2¢.

4. It never touches anything you did not give it

  • It will not adopt a position it did not open. Ever. That is deliberate: on the previous bot, auto-adoption managed the owner's own manual bets into the ground — about $591 in three days.
  • Fills are verified by USDC balance delta, so an order that really filled can't be written off as a ghost and left running with no stop-loss on it.
  • The bet log is written atomically (temp file + rename, keeping a .bak), so a hard kill mid-write cannot corrupt your trade history.
  • Nothing leaves your machine. No telemetry, no licence server, no account. Your private key stays in your .env.

None of that is a setting you have to go and find. It is how the file arrives — and you can sit and watch every one of those limits trip in dry-run before a dollar is involved.

Get the bot — $99 once $99, one-time · starts in dry-run · no subscription

Three commands, and it is trading. Nothing of yours is at risk yet.

No wallet. No funds. No account. No API key. Inside a quarter of an hour it is watching real 5-minute windows open and close, taking the trades it would have taken, and writing down what happened to each one — the signal state, 11 market features, the simulated fill. The monitor panel scores it live while you make coffee.

pip install -r requirements.txt
cp .env.example .env
python uruguabot.py        # starts in dry-run, no real money

The .env.example it ships with is not a blank template waiting for you to guess. It is the exact configuration that came out of the live test: BTC only, stop-loss ten cents under your fill, guards on. You can change every line of it. You do not have to change any of it to start.

What it does while you're not watching

Five things run inside that terminal window. Two of them only exist because they cost us money first.

Trading engine

Market discovery, multi-timeframe consensus signals (30s/1m/5m), entry gates, asymmetric exit management.

Execution layer (CLOB V2)

FOK orders with ghost-fill detection via USDC-delta, stale-read handling, 2-decimal share alignment, on-chain balance fallback.

Honest dry-run simulator

Simulated fills use slippage distributions measured from real trades (entry −1.2¢, SL −1.3¢, TP −8.8¢ mean) — not zero-friction fantasy.

Signal accuracy monitor

A local web panel that freezes predictions before each window and measures the real accuracy of every signal — including your own manual picks — without spending a dollar.

Ops tooling

Wallet/auth checker, status reports, dry-vs-live drift measurement, orphan-share detector. ~15 readable Python files, bilingual docs (EN/ES).

The best predictor we measured was a human

We spent a week settling an argument. Every signal the bot can compute — momentum, mean reversion, orderbook imbalance, the machine-learning model — had its call frozen before each window opened, then scored against what actually happened. 1,934 resolved windows. On the same windows, under the same rule, we also scored the manual picks of the person who built the thing.

Four of the five predictors came back indistinguishable from a coin.

PredictorWindows scoredAccuracy
ML model (the “brain”)30848.1%
Momentum1,83448.8%
Mean reversion1,50049.6%
Orderbook imbalance1,06951.3%
A human's manual picks8359.0%

The one that didn’t was the human. 83 picks at 59% gives p ≈ 0.05 against a coin flip — suggestive, not conclusive, one person, one week, and we are not going to inflate it into more than that. But it is the only above-chance directional read anywhere in this project, and it did not come out of the automation.

Which tells you exactly what this is for. It is not sold on out-predicting you. It is sold on the part you cannot do by hand at 4am: sitting on every qualifying window without getting bored, and cutting a loser at −10¢ the moment it hits, without negotiating with itself the way you did that night you held on because it felt due. That discipline is what made the default configuration profitable at a 40% win rate. Whatever read you have stays yours.

So the monitor panel scores your calls next to the bot’s, on live markets, with no wallet attached and nothing at stake. You may find out that your read is the best signal in the room. You may find out it isn’t. Either answer is cheaper to get here than with money on it. Full methodology and data.

The configuration that made money won fewer trades than the one that lost it

That is not a typo, and it is the entire mechanism. In May 2026 Uruguabot traded real money on Polymarket — not a backtest — running two exit configurations back to back. The first was right more often and finished down. The second was right less often and finished up. Computed from the bot’s own fill log, every order published row by row in the audit repository:

PhaseConfigurationWin rateROI
Hypothesis ASymmetric TP/SLSymmetric TP/SL49%−10.0%
Hypothesis B (now the default)Tight SL, winners held to resolutionTight SL, winners held to resolution40%+7.3%
What we are not going to round off. Take the experiment as a whole and it finished down. An infrastructure bug — since fixed, and named below — cost more than the strategy earned, and only the configuration that now ships as the default came out ahead. Every order, winning and losing, is in the full audit and the open data repository, and compute_summary.py rebuilds every figure in that table from the raw fills, so you can check us rather than believe us. The documentation inside the product calls this a validated mechanism, not a proven ROI. So do we. You are buying infrastructure and a tested exit rule, not a promise.

The whole story, every order, every bug, in the order we hit them: the complete audit. And if you would rather read the thing than read about it — 6,735 lines of Python, nothing compiled, nothing obfuscated — the file list and a real function out of the execution layer are sitting in the docs, before you pay.

Get the bot — $99 once $99, one-time · starts in dry-run · no subscription

Before you decide

What is the worst it can do while I am asleep?

With the shipped defaults: open at most two positions of $2 each, each with a stop-loss at execution −10¢. If the day's losses reach 10%, or seven trades lose in a row, or 80% of the last 20 orders fail to fill, it pauses itself — and that pause is written to disk, so restarting the machine does not clear it. The real ceiling, stated plainly: it can spend whatever is in the wallet whose key you put in .env. Use a dedicated wallet, funded small.

Can I test it without money?

Yes — dry-run is the default mode, with fills simulated using empirically measured slippage. The monitor panel also measures signal accuracy in real time without trading.

Is Uruguabot profitable?

Taken as a whole, no: our fully-automated live test was a net loss overall. One configuration — the one that ships as the default — was profitable, at +7.3% ROI on a 40% win rate. The documentation inside the product calls that a validated mechanism, not a proven ROI, and we are not going to describe it any better than its own docs do. No future performance is promised. You are buying infrastructure and the lessons that were expensive to learn, not guaranteed profits.

Do I need to know how to code?

You need to be comfortable with a terminal and editing a config file. Install is three commands. Modifying the strategy requires Python.

Does it work in the United States?

Polymarket restricts trading from several jurisdictions including the US. Check Polymarket's current geographic restrictions and your local laws before buying. The bot includes no mechanism to evade geo-restrictions.

Is there a subscription, license server, or telemetry?

No, no, and no. One-time purchase, full source, runs entirely on your machine. Sold as-is with no support obligation — the code is deliberately small so you can own it.

Why are you selling it if it works?

Because the honest answer to "does it work?" is "the mechanism is validated, but the edge is thin" — and nobody raises a fund on that sentence. You sell tooling with it. A thin edge on $2 stakes is a hobby; the same code sold once to people who want to stop missing the 4am windows is a product. We would rather say that out loud than run a Discord and post green screenshots. The full reasoning is in the audit article.

What $99 gets you

A bot you own, not a subscription you rent

$99 once. A bot you rent at $99 a month costs $1,188 in the first year, and stops working the month you stop paying. This one keeps running whether or not I do.

No licence server, no telemetry, no account to keep alive. Nobody can raise the price on you, sunset the tier you are on, or switch your copy off — if this site is gone next year, the files on your disk do not care. That is possible because there is no company here to feed: one developer in Argentina, working alone, who wrote the bot, put real money through it, and wrote this page. A one-person project cannot honestly promise a support SLA, so it does not promise one. Sold as-is, kept deliberately small and heavily commented, so that maintaining it never depends on me answering.

What arrives when you pay

You buy on Whop and the download unlocks immediately — not a waitlist, not a Discord invite, not a licence key to activate. One zip, Uruguabot-1.0.zip: 33 files, about 110 KB.

  • 21 Python modules — the whole trading core plus the ops scripts, full source, nothing compiled.
  • .env.example, preloaded with the configuration that was profitable in the live test (BTC only, tight asymmetric stop, guards on), and data/empirical_slippage.json, the measured distributions the simulator draws its fills from.
  • monitor.html + monitor_server.py (the read-only accuracy panel) and START_DRYRUN.bat + start_dryrun.sh for a one-command start on Windows or Linux/macOS.
  • README.md + README_ES.md (full docs, EN and ES), STRATEGY_AND_RESULTS.md with the real live numbers including the losing phase, plus CHANGELOG.md and requirements.txt (five public packages).
  • legal/EULA.txt + legal/RISK_DISCLOSURE.md — licence terms and risk disclosure, in the package, readable before you run anything.

Who should not buy this

Three of them. If any one is a no, close the tab — we would rather lose the sale than take $99 for something that will not run on your machine or in your country.

  1. Python 3.11+, on Windows, Linux or macOS. No Docker, no build step, no compiler.
  2. Polymarket has to be reachable from your jurisdiction. It restricts trading from several, including the United States — check its current restrictions and your local law before paying. There is no mechanism here to evade them and we will not help you build one. If Polymarket does not serve you, dry-run alone is not worth $99.
  3. You are comfortable in a terminal and editing a config file. You do not need to write Python to run it; you do to change the strategy. No GUI installer, and nobody to call.

Refunds

There are no refunds once the source has been downloaded. It is delivered source code: once you have the files, you have them, and no amount of good faith puts that back in the box. You are reading that here, three screens before checkout, instead of finding it in the small print after you pay.

That is exactly why dry-run mode exists and why it is the default: you can run the real bot on real live markets, with no wallet and no money, for as long as you like before you decide. Evaluate it first, then buy it.

Get the bot

The trading engine, the execution layer with the ghost-fill fix in it, the simulator calibrated on real slippage, the circuit breakers, the monitor panel. Everything the $270 bought us. $99, one time.

Our own live experiment lost money overall, and nothing on this page is a forecast or a track record. Start in dry-run. Size your first live week as though it is going to be the losing one, because it might be. Every figure here is computed from data you can download and recompute yourself.

How we found all this out