Position Management
Position management in DPerp handles the creation, modification, and closure of leveraged trading positions. The system tracks position state, calculates P&L, and manages collateral requirements.
Position Structure
Core Position Data
struct Position {
uint256 size; // Position size in USD
uint256 collateral; // Collateral deposited
uint256 entryPrice; // Average entry price
uint256 entryFundingRate; // Funding rate at entry
uint256 reserveAmount; // Reserved liquidity tokens
int256 realisedPnl; // Cumulative realized P&L
uint256 lastIncreasedTime; // Last position increase
bool isLong; // Long or short position
}Position Identification
Positions are uniquely identified by:
function getPositionKey(address account, bytes32 assetId, bool isLong)
returns (bytes32) {
return keccak256(abi.encodePacked(account, assetId, isLong));
}Opening Positions
Increase Position
Position Creation Logic
Modifying Positions
Adding Collateral
Increasing Size
Entry Price Calculation
When increasing positions, entry price is recalculated:
Closing Positions
Partial Close
Full Close
Close Logic
P&L Calculations
Unrealized P&L
Realized P&L Tracking
Position Monitoring
Position Health
Liquidation Price Calculation
Position Limits
Size Validation
Global Limits
Integration Examples
Position Management Hook
Position Display Component
Risk Management
Position Validation
Minimum collateral requirements
Maximum leverage enforcement
Position size limits
Global exposure caps
Monitoring Systems
Real-time P&L tracking
Liquidation risk alerts
Funding fee calculations
Position health scoring
Last updated