Time-Weighted Average Prices
Calculate time-weighted average prices using SurgeTwapTask
Time-weighted average price (TWAP) is a pricing algorithm that calculates the average price of an asset over a specified time period. TWAP provides manipulation-resistant pricing by averaging prices over a configurable time window, weighted by the duration each price was observed.
SurgeTwapTask
The surgeTwapTask calculates TWAP from Switchboard's streaming price data. The algorithm weights each observed price by how long it was in effect:
TWAP = Σ(price × duration) / Σ(duration)Basic Example
{
surgeTwapTask: {
symbol: "BTC/USD",
timeInterval: "ONE_HOUR"
}
}Parameters
symbol
string
Yes
-
Trading pair in */USD format (e.g., "BTC/USD", "ETH/USD", "SOL/USD")
timeInterval
TimeInterval
No
ONE_HOUR
Lookback window for TWAP calculation
Time Intervals
FIVE_MINUTES
5 min
Shortest window, most responsive to price changes
TEN_MINUTES
10 min
FIFTEEN_MINUTES
15 min
THIRTY_MINUTES
30 min
ONE_HOUR
1 hour
Default, balances responsiveness and stability
TWO_HOURS
2 hours
SIX_HOURS
6 hours
TWELVE_HOURS
12 hours
Most stable, least responsive
Constraints
Only
*/USDpairs are supported (e.g., "BTC/USD", "SOL/USD")The task will fail if a non-USD quote currency is provided
Use Cases
Lending Protocols — Use TWAP for liquidation price checks to prevent flash loan attacks that temporarily manipulate spot prices.
Perpetual Exchanges — Funding rate calculations based on TWAP reduce the impact of short-term price spikes.
Options and Derivatives — Settlement prices based on TWAP reduce the impact of last-minute price manipulation.
AMMs and DEXs — TWAP oracles provide manipulation-resistant prices for concentrated liquidity ranges or limit orders.
Examples
30-Minute TWAP for SOL/USD
TWAP with Price Bounds
Combine TWAP with bounding to ensure the calculated average stays within expected ranges:
Multiple TWAP Sources
Use a median task to aggregate TWAPs from multiple assets:
Error Handling
symbol is empty
Missing symbol parameter
Provide a valid symbol
only supports */USD pairs
Non-USD quote currency
Use USD pairs only (e.g., "BTC/USD" not "BTC/EUR")
no candle data available
No price data in lookback window
Verify the trading pair is supported
How It Works
The TWAP calculation uses Switchboard's continuous price streaming infrastructure:
Price ticks are accumulated into 5-minute candles
Each candle stores the time-weighted sum and observed duration
When queried, candles spanning the requested interval are aggregated
The final TWAP is computed by dividing total weighted sum by total duration
The system includes gap protection: if price updates are interrupted for more than 5 seconds, that gap does not contribute to the TWAP calculation. This prevents stale prices from being over-weighted during network interruptions or exchange outages.
A variance check compares the TWAP against secondary price sources. If the coefficient of variation exceeds 0.4%, the task fails to protect against compromised exchange data.
Last updated