Build / Rules

Contract Specifications

Futures contract unit, tick size, PnL, and settlement surface.

Contract Specifications

This document describes the technical specifications and parameters of HPDX Hashprice Futures contracts. Current values can be found in the Contract Specs section of the HPDX Futures application.


Understanding Contract Specifications

These are the key values that define how each futures contract works. You'll see these values displayed in the trading interface.

Contract Specifications

Parameter What It Means
Contract Unit The amount of hashrate each contract represents (measured in hashes per second).
Margin Requirement The percentage of contract value you must deposit as collateral. This protects both parties if prices move against you. Higher requirements mean more capital locked up.
Maturity Time The time at which the contract matures and becomes settleable. Stored on-chain as expirationAt.

Contract frequency

Parameter What It Means
Available Expirations How far into the future you can trade. For example, if set to 4 contracts, you can trade up to 4 weeks ahead.
Expiration Interval Interval between two closest expiration dates in days.

Pricing & Settlement

Parameter What It Means
Settlement Currency The currency used for all payments (e.g., USDC). This is what you deposit as margin and receive during settlement.
Tick Size The smallest price movement allowed. Orders must be placed at prices that are multiples of this step (e.g., if the step is $0.01, you cant bid at $0.015)
Tick Value The value of a one-tick move for a single contract.
Contract Size One contract settles one unit of mark price (no duration multiplier). PnL = mark × netQuantity − netEntryValue.

Fees & Limits

Parameter What It Means
Maker / Taker Fee Charged on fills. Maker fee may be zero by default.
Max Open Orders Maximum resting orders per address and delivery date (MAX_ORDERS_PER_PARTICIPANT_PER_EXPIRATION = 100). Quantity is signed int256 (no 127 cap).

Settlement Functions, Events & Errors

As of contract version 3.0.0, futures are cash-settled unilateral aggregates. The table below summarizes the settlement-related surface. See Settlement for the full lifecycle.

Functions

Function Status What It Does
settlePosition(address user, uint256 expirationAt) Active Permissionless. Pins the expiry settlement price on first use, marks that user's aggregate to the pin, routes PnL via the insurance fund, clears the aggregate, emits PositionSettled.
settlePositions(address[], uint256[]) Active Batch of (user, expirationAt) pairs; lengths must match.
recordSettlementPrice(uint256) Active Permissionless pin of getMarketPrice() at/after maturity; idempotent; emits SettlementPriceRecorded.
settlementPrice(uint256) Active Pinned settlement price (0 until recorded).
getUserPosition(address, uint256) Active { netQuantity, netEntryValue } for that user+expiry.
getActiveExpirationDates(address) Active Expiries where the user still has a non-zero aggregate.
getMarketPrice() Active Live oracle mark used for pinning and margin.

Events

Event Status Meaning
PositionSettled(user, expirationAt, closedQuantity, pnl, settlementPrice, settledBy) Active User's aggregate cash-settled at the pinned price.
SettlementPriceRecorded(expirationAt, price, recordedBy) Active Expiry settlement price pinned (once).

Errors

settlePosition reverts with PositionNotExists() (flat at that expiry) or PositionExpirationNotStartedYet() (before expirationAt). recordSettlementPrice reverts with SettlementDateNotReached() before expirationAt.


Read next

Sourced from futures-marketplace/docs/gitbook/02.Contract-Specifications.md @ dev. Regenerated on every site build.