Skip to main content

Pricing

pricingMode controls whether a strategy prices against fair value or bids a fixed amount.

ModeBehavior
VARIANCEBid anchors to fair value: fairValue − belowFv, clamped by minBidCents / maxBidCents and capped at fairValue + aboveFv. The default
FLATBid is a fixed amount, independent of fair value

The mode is set at two levels:

  • Groupdata.pricingMode: VARIANCE (default), FLAT, or MIXED
  • StrategystrategyConfig.pricingMode: VARIANCE (default) or FLAT

A VARIANCE or FLAT group forces every child strategy to that mode. A MIXED group lets each strategy choose. Adding or updating a strategy whose mode conflicts with its group returns PRICING_MODE_MISMATCH. In a MIXED group, flat and variance strategies compete on equal footing — highest bid × quantity still wins.

Variance pricing

A VarianceBound is either a fraction of fair value or absolute cents:

{ "unit": "PCT", "value": 0.15 }
{ "unit": "CENTS", "value": 500 }
BoundRole
belowFvThe discount — the bid rests at fairValue − belowFv
aboveFvCeiling cap at fairValue + aboveFv, applied last — it can pull a bid below minBidCents

minBidCents / maxBidCents hard-clamp the computed bid per product (maxBidCents must be ≥ minBidCents).

Inheritance

Variance set on the group (data.variance) is the default for every child. A strategy's own variance overrides it; null inherits. Updating the group's variance propagates to every inheriting strategy in one call — strategies with overrides don't move.

Multiple pricing models per group

Each strategy stores its own filterCriteria.fvModelConfigId, so one group can hold strategies pinned to different fair-value models under a shared budget. Today trading cards price via CardHedge, with more models coming soon — discover what's available per asset type via Model Configs.

Fair-value drift guards

filterCriteria.fvDriftRules stop a strategy from bidding into a sudden fair-value swing — a manipulated or thin market. While a product's fair value has moved more than the allowed amount over the window, the strategy stops bidding on that product; it resumes when the move falls back in range.

{ "direction": "UP", "maxDriftBps": 1500, "windowSeconds": 86400 }
FieldDescription
directionUP, DOWN, or BOTH
maxDriftBpsMaximum allowed move in basis points (100 bps = 1%)
windowSecondsLookback window, up to 30 days

Up to ten rules per strategy. Within the same window you can't repeat a direction, and BOTH can't combine with UP/DOWN. A rule only acts once enough price history exists to compare against — until then it doesn't block. VARIANCE strategies only.

Block bidding if fair value jumps more than 15% in a day or falls more than 25% in a week:

{
"fvDriftRules": [
{ "direction": "UP", "maxDriftBps": 1500, "windowSeconds": 86400 },
{ "direction": "DOWN", "maxDriftBps": 2500, "windowSeconds": 604800 }
]
}

Flat pricing

A FLAT strategy bids a fixed amount on every product its filter matches. Two ways to express it — set exactly one:

FieldMeaning
flatBidCentsThe bid amount itself
flatAllInPriceCentsYour all-in cost including buyer fees — Tradepost derives the bid net of your fee schedule

flatAllInPriceCents is the one to use when you think in landed cost: send what you're willing to pay all-in, and the derived bid guarantees fees never push you past it.

FLAT strategies must omit every fair-value field: variance, minBidCents, maxBidCents, and the filterCriteria fields fvMinCents, fvMaxCents, fvConfidenceMin, fvDriftRules. Sending any of them is rejected. Targeting fields (keyCriteria, facets, query) still apply.

Pricing at fill time

Strategy prices are formulas, not resting numbers. At the moment a fill happens, the price is recomputed against current fair value and the fill clears at the fresh price — bounded by the counterparty's slippage tolerance. You never fill at a stale quote from before the market moved. Details in Fills.