Simuler le risque PM
Chaque chiffre décrit dans Marge de portefeuille peut être consulté pour votre compte, et chaque transaction peut être prévisualisée avant son envoi. Le simulateur n'est pas un modèle distinct : il exécute le même code de marge, avec la même politique et le même snapshot du moteur, que celui qui contrôle vos ordres et fait tourner le surveillant de liquidation.
Dans l'application
La page Portfolio margin (/risk/span) affiche, pour un compte PM :
- les fonds propres, l'IM, la MM, le pouvoir d’achat et la réserve de maintenance
- le risque de scanning, le plancher options et la surcharge gamma, chacun séparément
- la grille de scénarios pour chaque actif sous-jacent, avec le P&L de chaque scénario et de chaque jambe
- Simulate positions : ajoutez des jambes hypothétiques à votre portefeuille, ou remplacez-le, et comparez l'IM et la MM actuelles aux valeurs simulées. Une simulation ne place jamais d'ordre et ne modifie jamais l'état du compte.
La page se rafraîchit toutes les 5 secondes.
Endpoints
| Endpoint | Ce qu'il renvoie | Authentification |
|---|---|---|
GET /portfolio?wallet= | Fonds propres, IM, MM et positions actuels | Aucune |
GET /risk/grid?wallet= | Risque de scanning, plancher, surcharge actuels, et la matrice de scénarios par sous-jacent | Aucune |
POST /risk/simulate/portfolio | L'IM et la MM si vos positions étaient différentes | Aucune |
POST /risk/simulate/orders | Si un ordre ou un package passerait le contrôle de marge, et son coût en IM | Aucune |
GET /liquidation/status?wallet= | État de liquidation et déficit | Aucune |
Tous prennent votre portefeuille manager comme wallet ; Hypercall le résout vers votre compte PM. GET /risk/grid ne répond que pour les comptes PM.
Grille de risque
GET /risk/grid renvoie l'exigence de marge actuelle du compte et, pour chaque sous-jacent, les scénarios sur lesquels ce sous-jacent est évalué (sa propre grille, y compris les éventuels scénarios supplémentaires) avec :
scenarios[]:id,spot_shock_pct,vol_shock_pct,pnl_weight,is_tailet letotal_pnldu sous-jacent dans ce scénarioextended_risk_matrix.instruments[]: lesscenario_pnlspar jambe, alignés surscenarios
Le scanning_risk au niveau supérieur est le montant facturé : la pire perte pondérée de chaque sous-jacent, additionnée. Le worst_scenario_index de la matrice est un diagnostic propre à la grille d'un seul sous-jacent et ne détermine pas la marge entre sous-jacents.
Simulation de portefeuille
curl -X POST https://api.hypercall.xyz/risk/simulate/portfolio \
-H 'Content-Type: application/json' \
-d '{
"wallet": "0xYourManagerWallet",
"add_positions": true,
"positions": [
{"symbol": "BTC-20261231-100000-C", "quantity": "-1"},
{"symbol": "BTC-20261231-110000-C", "quantity": "1"},
{"symbol": "BTC-PERP", "quantity": "0.25"}
]
}'
add_positions: true(valeur par défaut) ajoute chaque quantité signée à votre position actuelle.falseremplace votre portefeuille par exactement cette liste.- Jusqu'à 50 symboles, chacun listé une seule fois. Les symboles d'options et de contrats perpétuels sont tous deux acceptés.
- Les positions sont valorisées aux marks actuels. Aucune prime n'est facturée et aucun carnet d'ordres n'est consulté.
La réponse contient current, simulated et delta. Dans chaque résumé, lisez :
| Champ | Signification |
|---|---|
equity | Fonds propres tels que définis sur la page de méthodologie |
position_initial_margin | IM sur les positions : max(risque de scanning, plancher) + surcharge |
position_maintenance_margin | MM, 0,85 × IM des positions |
open_orders_initial_margin | Réservation pour vos ordres actifs en attente dans le carnet |
total_initial_margin | IM des positions plus IM des ordres ouverts |
initial_margin_available | Fonds propres moins IM totale. Une valeur négative signifie que tout nouveau risque est refusé |
maintenance_margin_available | Fonds propres moins MM. Une valeur négative signifie la liquidation |
scanning_risk, option_floor, gamma_overlay | Les trois composantes |
underlyings[] | La matrice de scénarios par sous-jacent, comme dans GET /risk/grid |
venue_liquidation | Présent lorsque vous détenez des contrats perpétuels Hyperliquid : si chaque compartiment Hyperliquid résiste à la grille (hedge_survives), le collatéral qui serait perdu, et l'IM et la MM tenant compte de la plateforme |
metadata identifie le snapshot du moteur sur lequel la simulation a été exécutée (l2_seq, evaluated_at_ms).
Simulation d'ordres
POST /risk/simulate/orders exécute la partie financière de l'admission d'un ordre sans rien placer :
execution_mode: "resting"prend exactement un ordre et le facture comme un ordre en attente dans le carnet.execution_mode: "atomic"évalue les jambes comme un package exécuté en une seule fois, de la même manière qu'un combo est margé.hypothetical_open_ordersvous permet d'ajouter des ordres en attente que vous n'avez pas encore placés, évalués avantorders.
La réponse ajoute admissible et, lorsqu'il vaut false, un rejection_reason. Le bloc delta indique l'IM que l'ordre consommerait. Des exemples de requêtes figurent dans Authentification.
Le simulateur d'ordres répond uniquement à la question de la marge. Le matching, les bandes de prix, le RPI, les nonces, les limites de débit et les suspensions de trading ne sont pas simulés, et l'état du moteur peut évoluer avant que vous n'envoyiez l'ordre réel.
Erreurs
| Statut | error | Signification |
|---|---|---|
400 | invalid_simulation | Requête mal formée, symbole inconnu ou expiré, symbole en double, ou plus de 50 éléments |
429 | risk_simulation_saturated | La capacité de simulation est partagée et limitée ; réessayez avec un backoff |
503 | risk_inputs_unavailable | Une donnée d'entrée est manquante ou obsolète, par exemple aucun mark d'IV pour une option, ou un snapshot HyperCore obsolète. L'ordre réel serait refusé pour la même raison |
Les limites de débit des simulations sont indiquées dans Limites de débit.