MiroShark logo
5 min read

The First Open Social + Prediction Market Agent Dataset

8,201 decisions from 16 MiroShark simulations where the same AI agents argue on a social feed and bet on a prediction market. Free on Hugging Face.

datasetopen-sourcehugging-faceagentsprediction-marketsresearch

Today we're releasing a public dataset of what MiroShark agents actually do inside a simulation. It holds 8,201 decisions from 16 real runs. Each one captures what an agent saw, what it thought, and what it did: a post, a quote, a like, a follow, or a trade on a prediction market.

It's free, MIT-licensed, and live on Hugging Face: https://huggingface.co/datasets/MiroShark/social-prediction-market-sim

As far as we can tell, it's the first public dataset where the same AI agents both argue on a social feed and bet on a prediction market inside one simulation. Research projects have built systems like this before, but none of them released the agents' decisions. This post covers what's in it, how we collected it, and what you can build with it.

What a MiroShark simulation looks like

You give MiroShark a scenario - a product launch, a data breach, a new bill, a football fixture - and it builds a world around it. That world is a cast of personas: companies, founders, journalists, regulators, communities, fans. Each one has its own background, interests, and way of talking.

The personas then live through 8 to 10 rounds on three surfaces at once: a Twitter-style feed, a Reddit-style forum, and a prediction market with a real question on it. Every round, each agent reads what's new and decides what to do. Social chatter moves the market, and market prices feed back into the conversation.

The dataset is a recording of those decisions, one row per agent per round.

What's in the dataset

  • 16 simulations, 8 to 10 rounds each, 13 to 30 agents per simulation.
  • 8,201 decisions in total, with 6,563 in the cleaned training set.
  • Social actions: create_post, create_comment, quote_post, repost, like_post, like_comment, follow, trend, and do_nothing.
  • Market actions: buy_shares and sell_shares, with the agent's cash, open positions, and live prices.
  • Three open models did the thinking: DeepSeek V4 Flash, DeepSeek V4.1 Flash, and GLM 4.7 Flash.

The 16 scenarios cover four areas. Football: Alavés chasing a Champions League spot, PSG's winless run, Hull City's start to the season, a Bundesliga matchday, Juventus's injury crisis. AI policy: an AI Kill Switch Act, an alleged rogue-agent incident, a consumer AI device launch. Crypto and payments: whether x402 goes mainstream, ERC-8021 adoption, a token listing on Robinhood Chain. Crisis response: a data breach heading toward class actions, a CEO's public apology.

What one row looks like

Each row has three parts. The context is the agent's persona and the rules of the platform. The prompt is what the agent sees this round. The completion is the agent's reasoning, ending in a machine-readable action. Here is a trading turn, shortened:

prompt
YOUR PORTFOLIO:
Cash: $900.00
Open positions: 233.1 YES shares @ $0.478 (P&L: -5.10)

ACTIVE MARKETS:
#1: "Will the U.S. Congress or a federal regulator launch an inquiry
    into the rogue-agent breach before December 31, 2026?"
    [YES: $0.478, NO: $0.522] (44 trades)

SOCIAL MEDIA CONTEXT:
[Twitter - last round] Reuters: "Platform growth without accountability..."
completion
I'm buying an additional 135.5 YES shares at about $0.52, spending $70.
This builds a modest position to reflect my view that the regulatory
inquiry signal is underappreciated relative to mounting social pressure.

ACTION: [{"action_type": "buy_shares",
          "action_args": {"market_id": 1, "outcome": "YES", "amount_usd": 70}}]

Social turns have the same shape. The prompt holds the feed (posts, comments, likes, authors), and the action is something like a quote post with the agent's own text.

How we collected it

Nothing here was written for the dataset. Every row comes from a real MiroShark run, the same engine anyone can use at https://www.miroshark.xyz.

  • Tracing. Every model call in a MiroShark run is logged: the full input, the full output, the model, and the timing. That gave us the raw material without changing how the simulation behaves.
  • One row per decision. We grouped the logs by simulation, round, and agent, and kept each agent's final decision for the round, along with everything it was shown.
  • Recovering the action. Agents state their choice in their own words, so we parsed the action out of the text. Where that failed, we matched the reply to the engine's own record of the action it executed.
  • Flagging bad rows instead of hiding them. 397 rows had an empty prompt. In 1,241 rows the agent acted on a post, comment, or user that wasn't in what it saw - a made-up ID. We kept both in the raw set with a flag, and removed them from the training set.
  • Splitting by simulation. The test set is three whole simulations the training set never sees. That way a model can't score well by memorizing a scenario.

We also ran the data through Adaption Labs (adaptionlabs.ai), a service that rewrites datasets to make them better for training. The rewritten reasoning read more smoothly, but only about 10% of rows kept the exact action format MiroShark reads - the part a model most needs to learn. So we ship the agents' original, unedited outputs.

Two ways to use it

  • sft (default): prompt, context, and completion, ready for fine-tuning, with a train and test split.
  • raw: every decision with structured fields - persona, portfolio, market state, feed, reasoning, actions - plus the quality flags. Use it to build your own format or to study behavior across rounds.
python
from datasets import load_dataset

sft = load_dataset("MiroShark/social-prediction-market-sim")
raw = load_dataset("MiroShark/social-prediction-market-sim", "raw")

What it enables

  • Train small, cheap agent models. Fine-tune an open model to play MiroShark personas, so simulations can run faster and at lower cost.
  • Study how talk turns into bets. Every trading turn includes the social chatter the agent saw, so you can measure when sentiment moves positions, and when agents trade against the crowd.
  • Measure made-up references. The invented-ID flag is a ready-made test: does a model act only on things it actually saw?
  • Check persona consistency. Does a regulator stay a regulator for ten rounds? Does a brand account stay on message when the feed turns hostile?
  • Compare models in the same world. DeepSeek and GLM agents faced the same kind of scenarios, so you can compare how they post, trade, and reason.

Limits

Everything in the dataset is synthetic. The posts, trades, and prices come from simulated agents, not real people or real markets. Some personas are named after real organizations and public accounts, but their words were generated by a model. Nothing in it is financial advice. And at 8,201 rows it is small next to some social-simulation logs - we optimized for complete, trainable rows over raw volume.

Get it

The dataset is at https://huggingface.co/datasets/MiroShark/social-prediction-market-sim and the engine that produced it is at https://github.com/MiroShark/MiroShark. If you train something on it or find something interesting in it, tell us at @miroshark_ - we'd love to see it.

Keep reading

Back to the swarm.