Decimal places
Cutting toward zero means the digits past the limit are dropped, not rounded.
97.9488 becomes 97.94, and -12.345 becomes -12.34.
The numbers inside quant_metrics are the exception. They are passed through exactly as computed, with no cut. See Quant metrics.
Integer fields
These come back as whole numbers with no decimal point.Exact decimal atoms
GET /api/v1/trader/{address} adds pnl.exact.realized and stats.exact.total_volume. GET /api/v1/positions adds an exact object to each valued position. An atom has this shape:
value is decimal text from the verified source value, unit identifies what it measures, scale preserves the source decimal scale, and basis names the source field or derivation. The existing numeric twin remains the display field. Parse value with a decimal type and never reconstruct an exact value from that numeric twin. The exact block or an optional atom is omitted when its source is unavailable; omission is not zero.
The position route uses shares, USD, and USD/share units for the corresponding exact fields. avg_price is derived with decimal arithmetic from the exact cost basis and exact shares, and is omitted when that derivation cannot be made.
Exact decimals sent as strings
Counterparty makers and Counterparty executions returnfilled_shares and filled_usdc as decimal strings rather than JSON numbers. Parse them with a decimal type, not a float, or you will lose the last digits.
Display strings on Pick of the Day
Pick of the Day and its archive return pre-formatted strings next to the numbers they came from. The number is the value to compute with, and the string is only for display. No other endpoint returns these.
The archive’s
hit_rate object carries its own set, and so does each archive row and each archive day.
net_profit_display and roi_display are rounded first and signed afterwards, so a record that rounds to zero reads "+$0" or "+0.0%" and never shows a negative zero.
Handle a missing value
A field with no value is usually left out of the JSON rather than sent asnull, so read those fields with a default and never read a missing key as zero.
What this does not tell you
- An exact reconciliation. Adding up cut values drifts away from the stored total, so compute from the source data when cents matter.
- How many decimals are stored. The API returns 2 or 4 places whatever the stored value holds.
- A display string anywhere outside Pick of the Day. Every other route returns the number alone.