102: EMC Perps: show liquidation risk and account health

This commit is contained in:
2026-10-26 06:05:26 +01:00
parent 2f30712004
commit e71a8daa8d
30 changed files with 1070 additions and 48 deletions
+62 -5
View File
@@ -445,7 +445,9 @@ og alarmer beholder deres afhængigheder og cache.
Servicen læser asynkront ved start og venter 60 sekunder efter hvert fuldført gennemløb.
Runder overlapper ikke og afhænger ikke af EMC's synlighed. Jupiter-overblikket bruger
ét REST-opslag pr. wallet. Phoenix bruger trader-state, metadata, én mark price pr.
unikt åbent marked og ét TWAP-opslag, når der er positioner. Begge har 10 sekunders request-timeout; Phoenix bevarer fælles
unikt åbent marked, ét TWAP-opslag, når der er positioner, og et risikolæs pr. synlig
konto. Lokal trader-adresseafledning bruger den eksisterende Solana-afhængighed.
Begge har 10 sekunders request-timeout; Phoenix bevarer fælles
pacing og 429-cooldown. En fuld opdatering tager opslagstid plus pausen, ikke nødvendigvis
ét minut. Implementeringens `close()` afbryder worker'en; consumer-API'et har kun læsning.
@@ -457,7 +459,7 @@ oprindelige succes-tidspunkt. Andre wallets/venues forsøges stadig. Et gyldigt
rydder den pågældende scope og kan totalisere nul; HTTP-/formatfejl kan ikke. En gyldig
Cross-konto med kapital bevares, selv om dens sidste position lukkes.
EMC viser **Position | Direction | Margin | Collateral | Leverage | Exposure | Value | uPnL | TWAP**
EMC viser **Position | Risk | Direction | Margin | Collateral | Leverage | Exposure | Value | uPnL | TWAP**
under den synlige rod **Perpetual Contracts**. Isolerede positioner har wallet → venue →
position; Phoenix Cross har wallet → venue → Cross → position. Positionens konto-ID
bestemmer identitet og tilhørsforhold, aldrig instrumentteksten. Wallets følger den
@@ -465,7 +467,8 @@ hidtidige konfiguration med Jupiter før Phoenix. En venue uden positioner eller
skjules og vises igen, når der kommer indhold. Skjulte venues indgår fortsat i snapshot
og totaler; deres læsestatus findes på wallet-rækkens tooltip. En Cross-konto med kapital
holder derfor Phoenix synlig, selv uden åbne positioner. Eksisterende foldestatus, markering og
rækkeobjekter bevares; uændrede snapshots opdaterer ikke træet. Vinduesstart er 1100 × 600,
rækkeobjekter bevares; kun ændrede rækkeværdier eller børn opdateres, også når risikodata
ældes i et ellers uændret snapshot. Vinduesstart er 1100 × 600,
og smallere vinduer kan scrolle vandret, når kolonnernes minimumsbredder kræver det.
TWAP vises kun på en eksisterende Phoenix-position, når ordren selv har et faktisk
@@ -493,8 +496,8 @@ positiv Collateral. På Cross-positioner er Collateral et initialt marginkrav i
ikke særskilt ejet kapital. Cross-gruppens leverage er bruttoeksponering / udiskonteret
equity før estimerede exitgebyrer. Cross-positionernes leverage og ROI-procent er
utilgængelige, fordi Phoenix-konventionerne ikke er verificeret; dollar-uPnL vises.
Cross-positioners Value er ikke entydigt defineret og vises som —. Kontoudnyttelse er
ikke implementeret.
Cross-positioners Value er ikke entydigt defineret og vises som —. Risk viser særskilt
vedligeholdelsesmarginens udnyttelse; det er ikke samlet initial-marginudnyttelse eller fri købekraft.
Value er et estimat ved referencepriser, ikke et eksekverbart tilbud. Phoenix medregner
collateral, pris-uPnL og signed uafregnet funding og fratrækker estimerede takergebyrer
@@ -515,5 +518,59 @@ på wallet-rækkens tooltip. Gamle tal beskrives ikke som nye.
EMC spørger hver miljøservice straks ved åbning og hvert tredje sekund uden at blokere
JavaFX-tråden. Skjul/luk stopper kun EMC-polling. Der er ingen sample-data, Refresh-knap,
handel, signering, kontoaktivering eller automatisk genstart af Hub'en i denne læsevej.
### Risiko i Perps
Risk står ved positionsnavnet og bruger tekst og en statusprik, mens Long/Short-
baggrundene bevares. På isolerede positioner vises rapporteret likvideringsafstand:
```text
Long: 100 × (venue-referencepris − likvideringspris) / venue-referencepris
Short: 100 × (likvideringspris − venue-referencepris) / venue-referencepris
```
Ejeren valgte 24. oktober 2026 **neutral positiv afstand og rød ved nået/overskredet
grænse**. Der er ingen generelle grøn/gul/rød-grænser pr. marked. Positiv uPnL eller
lav leverage tildeler ikke en sikkerhedsstatus. Negativ afstand bevarer fortegnet;
det er en observeret grænseoverskridelse, ikke bevis for gennemført likvidering.
Manglende, nul og negative sentinel-priser er ukendte, ikke uendelig sikkerhed.
Tooltip viser venue-priser, præcis afstand, eventuel rapporteret tier og observationstid.
Phoenix' egne tiers bruger grøn **OK**, gul **At risk**, orange **Cancellable** og
rød **Liquidatable**, **Backstop** eller **High risk**. En selvstændigt gyldig
kontoklasse kan bruges, selv om en positiv likvideringspris mangler. På Cross-kontoen:
```text
MM utilization = 100 × maintenance margin / positiv effective collateral
USD headroom = effective collateral − maintenance margin
```
MM er marginudnyttelse, ikke likvideringssandsynlighed eller en prisafstand. Phoenix'
præcise tier styrer likvideringsstatus; visningsafrunding bruges ikke til klassifikation.
Ved ikke-positiv effektiv sikkerhed er procenten utilgængelig. En kendt tom konto
uden vedligeholdelseskrav vises som **No positions**; det lover ikke noget om fremtidige
ordrefills. Manglende nødvendige data eller modstridende
Safe-data må ikke vises grønt. Cross-positioner viser **Shared** med konto-ID i tooltip,
og kontoens risiko tælles kun én gang uanset antallet af positioner.
Grupper viser værste kendte risiko og antal ukendte/forældede scopes uden gennemsnit
af afstande eller MM-procenter. En neutral afstand gør ikke hele gruppen grøn; **Distance
only** angiver, at der ikke er tildelt en sikkerhedsklasse. Før første succes er en
venue ukendt. En tidligere tom venue kan også blive forældet, selv om dens overskrift
er skjult. Kendt kritisk risiko forbliver rød med usikkerhedsmarkering efter fejl/aldring.
Risikodata bliver **Stale** ved fem minutter fra ældste nødvendige observation,
straks ved venue- eller snapshot-læsefejl eller ved et fremtidigt tidsstempel. Også
et fejlet `getPositionsSnapshot()` genviser den beholdte observation med fejlstatus.
Fem minutter er en grænse
for datakvalitet, ikke en garanti for sikkerhed i perioden. Langsomme normale runder
kan derfor give Stale. Den eksisterende tresekunders UI-polling genvurderer alder,
også når servicen returnerer samme snapshot, uden en ny timer eller flere venue-kald.
Forældet eller ufuldstændig ikke-kritisk risiko får ingen grøn statusprik.
Tidsstempler er modtagelsestider; API-lag og separate pris-/kontolæs begrænser aktualiteten.
Visningen viser senest observeret risiko og er ikke en livealarm. Datakilderne er
beskrevet i [Jupiter-overblikket](JupiterPerpsOverview.md) og
[Phoenix-risikolæsningen](PhoenixPerps.md#venue-reported-account-risk).
Den kanoniske systembeskrivelse findes i
[Evelyn: services og status](../../r35157_docs/projects/evelyn/README.md#evelynperpsservice).