Analytics
Reference
SW

Analytics reference

What every number, chart, and label in the analytics section means, how it is calculated, and the full set of values each field can take. This is the source of truth when a metric is unclear. It documents the presentation layer; the developer wires these to the live read model without reshaping them.

How to read this

The analytics section is five screens: Overview (the daily driver), Growth (the analytical dashboard), and three drill-downs, Users, Cards, and Bot Health. Every screen shares the same time range, profit model, and vocabulary, documented first, then each screen is covered in turn.

Metric
A single number, like Realized profit or Completed trades. Hover the small info icon next to any label in the app for its one-line definition.
Infographic
A chart or composed panel, like the profit trend bars or the trade funnel. Each screen section below lists its infographics and what they show.
Data value
A category a field can hold, like a trade Kind of “No offer” or an Intent of “Seller.” The full set for each field is in Data values.
Drill-down
Most numbers are clickable and open a table of the underlying trades, cards, or traders, scoped to the current time range.

Time ranges

The selector in the topbar (Today, 7D, 30D, 90D, All) scopes the entire analytics section. Every metric, chart, and drill-down on every screen re-reads against the selected window.

The five ranges

Today
The current day so far. Special: numbers are pace-fair, they show progress so far today compared against the same point yesterday, plus an on-pace projection for the full day and a “% of day done” marker.
7D / 30D / 90D
The trailing window of that many days, as a period total, compared against the prior window of equal length (for example 7D versus the 7 days before it).
All
The full mock history. There is no prior window of equal length, so comparison deltas read “all time” instead of a percentage.

Comparison labels

A delta next to a metric always compares to the matching prior window:

vs yesterday
Shown on Today. Same time yesterday, so the comparison is fair mid-day.
vs prior 7d / 30d / 90d
Shown on the dated ranges. The immediately preceding window of the same length.
all time
Shown on All, where there is nothing to compare against.

Profit & money model

How profit is booked is the most important convention in the whole section. Read this before trusting any profit number.

Profit is realized on the sell

Profit only exists when a card we bought is later sold. Buying a card is just acquiring inventory, it books no profit on its own, even inside a trade where we also sell cards. When a copy sells, its profit is the sale price minus what we paid for it.

realized profit on a sale = sale price − cost of the copy sold

LIFO cost basis

When we hold several copies of a card bought at different prices, the cost used for a sale is the price of the latest copy we bought (last in, first out). This is the cost basis behind every “Realized” profit figure.

Realized vs Real P&L

Realized profit
Profit actually booked on copies sold, using the LIFO cost above. This is the headline profit everywhere (Overview hero, Growth money panel, the card “Realized” column).
Real P&L
Realized profit adjusted for how the price of the copies we still hold has moved since we bought them. If a card dropped after we bought it, Real P&L sits below Realized. It flags inventory that is quietly losing value. Cards screen only.

Our point of view: Bought and Sold

Money is always framed from our side of the table, never the trader’s:

Bought
Tix we spent buying cards from traders (money out, builds inventory).
Sold
Tix traders paid us for cards they bought (money in).
Net flow
Sold minus Bought. Negative usually means we spent the period building inventory.
Margin
Realized profit as a share of what we Sold. How much of each tix of sales ends up as profit.

Vocabulary

A few words are used precisely and consistently across the section.

Opener
Anyone who opens a trade with a bot, whether or not it finishes. The top of the funnel.
Trader
Someone who actually completes trades. Every trader is an opener; not every opener becomes a trader.
Trade
One trade session: a user opening a trade with a bot and what happened. The unit behind every count. (In the data model this is a trade_session record.)
Completed trades
The conversion metric: of the trades opened, the share that finished. Shown as a percentage.
Opened / Completed
Raw counts of trades started and trades finished in the window.
GB / Goatbots
A competing bot service used as the price reference. “Buy vs GB” and “Sell vs GB” compare our prices to theirs.
tix
Event tickets, the MTGO currency all money figures are denominated in.
Foil
A premium foil printing, marked with the Magic shooting-star symbol next to a card’s set code. Absence of the symbol means a normal copy.

Data values

The complete set of categories each classifying field can take, with the color it uses in the app.

Trade Kind: how a trade ended

One outcome per trade for the higher-level views, derived from the per-trade flags below. When a trade fails on both legs at once the sell-side label (No sale) wins; the flags still record the full story. Priority order, furthest along to least:

Completed
Finished. Cards changed hands and the trade booked.
No sale
The trader picked cards to buy from us but did not confirm or complete. A warm buyer who walked: a pricing or checkout signal.
No buy
The bot offered to buy their cards, but the trader declined the offer. Usually our buy price was not attractive enough.
No offer
The bot wanted none of the cards they brought, so no buy offer was made. A targeting signal: cards we do not buy.
Cancelled
The trader left before the bot responded.

Trade flags: the raw per-leg truth

Because a trade has two independent legs (we buy their cards, they buy ours), the single Kind above cannot hold the whole picture. These flags are logged on every trade and are what the Kind is derived from. They are true or false regardless of how the trade ended, so a completed sell-only trade still shows Nothing to buy. Shown on a trade under What happened.

Picked cards to buy
The trader added our cards to their binder: the sell leg was engaged.
Bot made an offer
The bot offered to buy cards from the trader.
Nothing to buy
The bot found no cards it wanted to buy from the trader.
Reached confirm
The trade reached the final screen where both sides double-check the items.
Completed
The trade finalized and cards changed hands.

Trade lifecycle: the stages a trade passes through

Shown as a stepper on a single trade and as the Growth funnel in aggregate:

  1. 1OpenedA trader opens a trade with a bot.
  2. 2Bot evaluatedThe bot assesses the cards on both legs.
  3. 3Deal on the tableAn actionable deal exists in one or both directions.
  4. 4ConfirmedBoth sides reach the screen to double-check the exact items exchanged.
  5. 5CompletedThe trade finalizes and cards change hands.

Funnel drop reasons: where opens are lost

The same outcomes as Trade Kind, framed as the reason a trade fell out of the funnel:

Cancelled
Left before the bot responded.
No offer
Evaluated, but the bot wanted nothing and the trader picked nothing.
No buy
The bot offered to buy, but the trader declined.
No sale
Reached the confirm step with cards to buy, but abandoned before finishing.
Bounced
A special flag: the trader bailed within 10 seconds of the bot’s response. Tracked as a signal of a bad first impression, not a separate outcome.

Intent: what a trader mostly comes to do

A per-trader rollup across their trades (their majority direction), not any single trade. Every bot always tries to buy the trader’s cards, so the buy leg is universal; intent is about their dominant behavior.

Seller
Mostly sells cards to us. The majority (~60%).
Buyer
Mostly buys cards from us.
Hybrid
Does both in meaningful amounts.

Direction: what a completed trade actually did

We bought
We only bought cards from the trader.
We sold
We only sold cards to the trader.
We bought & sold
We both bought and sold within the one trade.

Trader segments: Users screen

New
First-ever trade with us happened inside the current range.
Returning
Traded with us before this range and came back.
Whale
Top 10% of traders by volume. A handful move a large share of flow.
Costly trader
A trader we tend to lose money on, they time our prices, so their flow nets against us (negative Our profit).

Card flags: Cards screen

Losing
The price dropped after we bought it, so Real P&L trails Realized. Inventory quietly losing value.
Not buying
Traders bring it to sell us but we are not set up to buy it. Every one is a turned-away trade.
Out of stock
Traders tried to buy it from us while we held none. Lost sales.
Foil
A premium foil printing, marked with the shooting-star symbol.

Overview screen

The daily driver. A composed snapshot of how the desk is doing right now, scoped to the selected range. Every number clicks through to its underlying table.

Infographics

Realized profit hero
The headline profit for the range, its comparison delta, and a secondary stat (This week on Today, Daily average otherwise).
Profit trend bars
One bar per bucket over the range (daily, weekly for 90D, monthly for All). Green for a profitable bucket, red for a losing one, most recent bucket brightened. Shows the shape of the window at a glance.
Trade funnel strip
Opened trades, the Completed % between them, and Completed trades, with a bar showing the converted share.
Trade flow
Two bars, cards Bought and cards Sold with the tix each moved, plus Net flow and Profit.

Metrics

Realized profit
Profit booked in the window. See the profit model above.
range profit; on Today, so-far vs same time yesterday, with on-pace projection
This week / Daily average
On Today, profit week-to-date. On any other range, average profit per day across the window.
Opened trades / Completed trades
Trades started and trades finished in the window, each with a delta versus the prior window.
Completed %
The share of opened trades that finished. The conversion metric.
completed ÷ opened
Cards bought / Cards sold
Copies bought and sold and the tix each side moved.
with tix out / tix in
Net flow / Profit
Sold minus Bought in tix, and realized profit for the window.

Growth screen

The analytical dashboard behind the North Star: how many people we pull in and how well we convert and monetize them. Every panel drills down.

Headline metrics

Unique openers
The North Star. How many different people opened a trade with us over the selected window.
distinct users who opened ≥1 trade
New openers
Of the unique openers, those opening with us for the first time ever.
Completed trades
Share of opened trades that finished, across the whole desk.
completed ÷ opened
New-user completion
Completed % for first-time users only. If it falls while openers rise, we are pulling people in and losing them on price or a confusing trade.
Market share
Our bots as a share of all trade ads in the MTGO classifieds. Roughly how much of the shelf is ours (about 99% of MTGO ads are bots, so the denominator is all ads).
our ads ÷ all classified ads

Infographics

Unique openers trend
Openers over time, granularity following the range (daily, weekly, monthly).
Money panel
KPIs (Bought, Sold, Net flow, Realized profit, Margin) over a Bought-vs-Sold bar chart across time.
Trade funnel
Each lifecycle stage with its count and share of opens, and red annotations for where and why trades drop off.
Where opens are lost
The drop reasons broken out (see Data values).
Trade mix
Stacked bars for Intent at open (seller/buyer/hybrid) and Completed direction (we bought/sold/hybrid), plus tix bought and sold.
Ad-card engagement
Per card: ad versions run, opens, completes, and open→complete. Ties classified ads to the demand they drive.
Do traders come back?
A cohort retention grid: of traders who first traded in a given week, how many came back 1, 2, 3+ weeks later.
Market share tile
The current share of the classifieds shelf that is ours.

Users screen

Who trades with us, segmented, and ranked by value. Row click opens a trader’s full profile.

Headline metrics

Active traders
Distinct people who opened at least one trade in the selected time window (today, the last 7 days, and so on), finished or not.
New traders / Returning
First-timers this range, and those who had traded before and came back.
Whales / Costly traders
Top 10% by volume, and traders whose flow nets against us. See segments in Data values.

Leaderboard columns

Trader / Intent
The account, and its Seller / Buyer / Hybrid rollup.
Opens / Completed / Completed %
Trades opened, finished, and the ratio, for that trader.
Bought / Sold
Tix we spent buying their cards, and tix they paid us.
our point of view
Our profit
Our estimated profit from this trader across all their trades. Negative means they cost us, usually by timing our prices.
+ makes us money, − costs us
Last seen
How long since their last trade.

Trader detail

Weekly activity, the cards they trade, an at-risk / high-value read, and their trades today. Same metrics as the leaderboard, expanded for one trader.

Cards screen

The market-maker command center: demand versus supply, our price position, inventory, turnover, and profit per card. Row click opens the card’s detail.

Table columns

Buyers / Sellers
Users who tried to buy the card from us, and users who brought it in to sell to us, over the selected window.
Buy vs GB / Sell vs GB
Our buy and sell price versus Goatbots. Positive Buy vs GB means we pay sellers more (attractive to sell to us); negative Sell vs GB means we sell cheaper (attractive to buy from us).
Inv (tix) / Age
Value of the copies we hold, and their average age. Old stock is money sitting still.
Realized / Real P&L
Profit booked on copies sold (LIFO), and that figure adjusted for price moves on copies still held.
see profit model
% of profit
This card’s share of our total profit, counting only cards that make money. The top few usually carry most of it.
Turn/wk
Turnover. Higher means we are not sitting on stock.
copies traded per week ÷ copies held
Caps / Price update lag
Buy-limit hits that stopped us buying more, and how long the card’s price takes to update (over ~1.2s risks trading stale).

Insight strip

Cards we're losing on
Prices dropped after we bought; Real P&L trails Realized.
We're not buying
Traders bring them, we do not target them: turned-away buys.
Out of stock
Traders want them, we hold none: lost sells.
Price update speed
Average price-update latency, with buy-limit hits, slow cards, and 15-minute repricings.

Card detail

A price-vs-Goatbots line chart (our buy, our sell, Goatbots), inventory and flow over time, the full transaction ledger (each buy and sell with counterparty, bot, price, time), and the trades that touched the card today. Foil printings show the shooting-star symbol by the set code.

Bot Health screen

Fleet operations: are the bots up, and how much are they each moving. Row click opens a bot’s detail.

Headline metrics

Avg uptime
Average share of time the bots were online and trading over the range.
Trades opened / Completed / Completed %
Fleet-wide opened, finished, and the conversion between them.
Fleet volume
Total tix traded across the fleet.
Bots down
Bots currently offline. Bots are interchangeable workers, so one down is not an outage but needs attention.

Table columns

Status / Uptime
Whether the bot is running, and its uptime for the range.
Opened / Completed / Completed %
That bot’s opened, finished, and conversion.
Volume / Caps / Errors
Tix moved, buy-limit hits, and disconnects or errors.
Last seen
Time since the bot last checked in.

Bot detail

24-hour activity, per-bot ad performance by window with the cards each ad drove, and its trades today.

Mock data, stub actions. Numbers on the live screens are seeded and deterministic, not real trading data.