Pyth Price Feeds
Fetch real-time price data from Pyth Network oracles
Fetch real-time price data from Pyth Network’s decentralized oracle network. Access price feeds for various crypto assets with support for symbol lookup and price formatting.
Price Feed Management
Symbol-based feed lookup
Price feed ID resolution
Real-time price fetching
Decimal adjustment
Price Operations
Multi-symbol support
Price scaling
Error handling
Format conversion
Copy
// Get feed ID by token symbol
const feedId = await agent.methods.getPythPriceFeedID("SOL");
console.log("SOL Price Feed ID:", feedId);
Copy
// Fetch current price using feed ID
const price = await agent.methods.getPythPrice(feedId);
console.log("Current Price:", price);
// Or chain the operations
const symbol = "SOL";
const feedId = await agent.methods.getPythPriceFeedID(symbol);
const price = await agent.methods.getPythPrice(feedId);
Copy
"Get the current SOL price from Pyth"
"Check ETH price using Pyth oracle"
"Fetch BTC/USD price feed"
"Look up price feed ID for USDC"
Copy
{
"tokenSymbol": "SOL"
}
Copy
{
"priceFeedId": "H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"
}
Copy
interface PythPriceFeedIDItem {
id: string;
attributes: {
base: string;
quote: string;
asset_type: string;
};
}
// Features
- Case-insensitive matching
- Multiple feed handling
- Asset type filtering
- Error recovery
Copy
interface PythPrice {
price: {
price: string;
expo: number;
};
}
// Features
- Decimal adjustment
- Price scaling
- Format handling
- BN precision
Copy
{
status: "success",
feedId: "H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"
}
Copy
{
status: "success",
price: "23.45",
message: "Current price: $23.45"
}
Copy
try {
const price = await agent.methods.getPythPrice(feedId);
} catch (error) {
if (error.message.includes("No price feed")) {
// Handle missing feed
} else if (error.message.includes("HTTP error")) {
// Handle network issues
}
}
Feed ID Management
Cache common feeds
Validate symbols
Handle multiple matches
Monitor updates
Price Fetching
Handle decimals properly
Validate responses
Consider staleness
Format consistently
Error Handling
Implement retries
Validate inputs
Check feed status
Log errors
Performance
Cache feed IDs
Batch requests
Monitor latency
Handle timeouts
Feed Lookup
Invalid symbols
Multiple matches
Missing feeds
Network errors
Price Fetching
Stale prices
Decimal errors
Format issues
Connection problems
Data Quality
Price accuracy
Update frequency
Feed reliability
Data consistency
SOL/USD
H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG
BTC/USD
GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU
ETH/USD
JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB
USDC/USD
Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD
Most feeds update every 400ms
Updates depend on market conditions
Consider confidence intervals
Monitor update timestamps
Price Monitoring
Copy
// Regular price checks setInterval(async () => { const price = await agent.methods.getPythPrice(feedId); console.log(`Current price: $${price}`); }, 5000);
Error Recovery
Copy
async function getPriceWithRetry(feedId: string, retries = 3) { for (let i = 0; i < retries; i++) { try { return await agent.methods.getPythPrice(feedId); } catch (error) { if (i === retries - 1) throw error; await new Promise(r => setTimeout(r, 1000)); } } }
getTokenData
: Get token informationtrade
: Execute tradesfetchMarketData
: Get market infocalculatePositionValue
: Value positions
Last updated