Position Limits
고지 사항: 이 백서는 영어 버전이 공식 문서입니다. 다른 언어 버전은 참고용입니다。
Overview
섹션 제목: “Overview”PIPO implements position limits to manage concentration risk, prevent market manipulation, and ensure fair access for all participants.
Limit Structure
섹션 제목: “Limit Structure”By User Type
섹션 제목: “By User Type”| User Type | Single Position | Underlying Total | Platform Total |
|---|---|---|---|
| Retail | $100K | $500K | N/A |
| KYC Verified | $500K | $2M | N/A |
| VIP (KYB) | $5M | $20M | N/A |
| Institution | Custom | Custom | Custom |
By Position Type
섹션 제목: “By Position Type”| Position | Limit Rationale |
|---|---|
| Call Warrant | Capped by SPV inventory |
| Put Warrant (Buy) | User limit + pool availability |
| Put Warrant (Write) | KYB required, minimum $50K |
| LP Position | No limit (beneficial for liquidity) |
Concentration Limits
섹션 제목: “Concentration Limits”Per-Underlying
섹션 제목: “Per-Underlying”Concentration Risk Management:
Single User Limits (% of pool):├── Retail: Max 5% of any pool├── KYC Verified: Max 10% of any pool├── VIP: Max 25% of any pool└── Institution: Negotiated (typically 40%)
Platform Limits:├── Single underlying: Max 60% of total TVL├── Top 3 underlyings: Max 80% of total TVL└── Reviewed quarterlyExample
섹션 제목: “Example”Scenario: SpaceX Call Pool TVL = $5M
User Limits:├── Retail user: Max $250K position (5%)├── KYC user: Max $500K position (10%)└── VIP user: Max $1.25M position (25%)
If user already holds $200K:├── Retail: Can add $50K more├── KYC: Can add $300K more└── VIP: Can add $1.05M moreImplementation
섹션 제목: “Implementation”Real-Time Checking
섹션 제목: “Real-Time Checking”// Position limit check on every tradefunction checkPositionLimit( address user, address warrant, uint256 amount) internal view returns (bool) { uint256 currentPosition = balanceOf(user, warrant); uint256 newPosition = currentPosition + amount;
UserTier tier = getUserTier(user); uint256 poolTVL = getPoolTVL(warrant);
uint256 maxPosition = getMaxPosition(tier, poolTVL);
return newPosition <= maxPosition;}
// Tier-based max positionfunction getMaxPosition(UserTier tier, uint256 poolTVL) internal pure returns (uint256) { if (tier == UserTier.RETAIL) return poolTVL * 5 / 100; // 5% if (tier == UserTier.KYC) return poolTVL * 10 / 100; // 10% if (tier == UserTier.VIP) return poolTVL * 25 / 100; // 25% return type(uint256).max; // Institution - custom}User Notification
섹션 제목: “User Notification”┌─────────────────────────────────────────────────────────────────┐│ ⚠️ POSITION LIMIT WARNING │├─────────────────────────────────────────────────────────────────┤│ ││ Your order exceeds position limits. ││ ││ Order Details: ││ ├── Warrant: SPACEX-CALL-200B-Q42025 ││ ├── Order Amount: $300,000 ││ ├── Current Position: $200,000 ││ └── Requested Total: $500,000 ││ ││ Your Limits (Retail Tier): ││ ├── Single Position Max: $250,000 (5% of pool) ││ └── Available to Add: $50,000 ││ ││ Options: ││ ├── [Reduce Order to $50,000] ││ ├── [Complete KYC for Higher Limits] ││ └── [Cancel Order] ││ │└─────────────────────────────────────────────────────────────────┘Upgrade Path
섹션 제목: “Upgrade Path”Tier Progression
섹션 제목: “Tier Progression”Tier Upgrade Path:
RETAIL (Default)├── Limits: $100K position, 5% pool├── Requirements: None (wallet connect)└── Upgrade: Complete KYC →
KYC VERIFIED├── Limits: $500K position, 10% pool├── Requirements: Identity verification├── Process: ~24 hour approval└── Upgrade: Complete KYB →
VIP (KYB)├── Limits: $5M position, 25% pool├── Requirements: Entity verification, accreditation├── Process: ~5 business days├── Benefits: OTC desk, physical delivery└── Upgrade: Custom agreement →
INSTITUTION├── Limits: Custom (negotiated)├── Requirements: Institutional agreement├── Process: Manual onboarding└── Benefits: API access, prime brokerageAnti-Manipulation Rules
섹션 제목: “Anti-Manipulation Rules”Wash Trading Prevention
섹션 제목: “Wash Trading Prevention”Wash Trading Detection:├── Same wallet buying and selling rapidly├── Related wallets trading with each other├── Circular trading patterns└── Volume without price impact
Consequences:├── Warning (first offense)├── Trading suspension (repeat)├── Permanent ban (confirmed manipulation)└── Loss of LP rewardsFront-Running Protection
섹션 제목: “Front-Running Protection”Front-Running Mitigations:├── Private mempool (Flashbots-style)├── Randomized transaction ordering├── MEV rebate to users└── Time-weighted execution for large ordersSpecial Situations
섹션 제목: “Special Situations”Event Windows
섹션 제목: “Event Windows”During Exercise Windows:├── Position limits unchanged├── No new purchases allowed (for expiring series)├── Selling/exercising allowed└── Concentration limits relaxed for settlementMarket Stress
섹션 제목: “Market Stress”During High Volatility:├── Limits may be reduced by 50%├── New positions paused temporarily├── Existing positions honored└── Communication via all channelsAPI Reference
섹션 제목: “API Reference”Check Position Limit
섹션 제목: “Check Position Limit”const limit = await pipo.checkPositionLimit({ user: '0x...', warrant: 'SPACEX-CALL-200B-Q42025', amount: 300000});
// Response{ allowed: false, currentPosition: 200000, requestedAmount: 300000, newPosition: 500000, userTier: 'RETAIL', maxPosition: 250000, maxAddable: 50000, reason: 'EXCEEDS_TIER_LIMIT', upgradeOptions: ['COMPLETE_KYC']}