Bezeichnung des AlgorithmusXEN_Gegenpartei_FinRep
KurzbezeichnungErmittlung der direkten Gegenpartei gem. FinRep
Verbale Beschreibung/Beispiele

Technisch: In diesem Algorithmus wird pro Geschäftsfall die Gegenpartei des Geschäftsfalls gem. FinRep aus den bestehenden Rollen abgeleitet. Dadurch wird ein neuer Datensatz auf der Entität KR_Kundenrollen mit AI_Rolle_Code "Direkte Gegenpartei gem. FinRep (GF)" geschaffen. 

Inhaltlich: In der Regel entspricht die "Direkte Gegenpartei gem. FinRep (GF)" dem "Inhaber (IH)" des Geschäftsfalls.

Für diese Regel gelten folgende Ausnahmen:

  • Im Fall von Factoring-Geschäften mit Rückgriff wird der "Forderungsverkäufer (FV)" zurückgegeben.
  • Im Fall von Kreditderivaten, die gem. FINREP Finanzgarantien sind, ist der Inhaber des Underlyings (=Referenzschuldner) die Gegenpartei gem. FinRep. Falls mehrere Underlyings existieren, so ist jenes mit der größten Nominale zu verwenden. Sofern mehrere Underlyings dieselbe (größte) Nominale besitzen, ist eines dieser Underlyings zu wählen.
  • Im Fall von Wertpapier-Short-Positionen der Leihgeber des Wertpapiers bzw. der Vertragspartner im Reverse-Repo-Geschäft. Sofern das short gehaltene Wertpapier eine Verknüpfung mittels ST.AI_Geschaeftsfall_ID auf ST_Sicherheiten_Stammdaten aufweist und  ST04_Repo_Sicherheit_Kennzeichen = WAHR ist, so stammt es aus einem Reverse-Repo-Geschäft. Daher wird als "Direkte Gegenpartei gem. FinRep (GF)" der "Inhaber (IH)" des Kredits (=Vertragspartner im Repo) zurückgegeben. Sofern das Wertpapier nicht als Repo-Sicherheit hinterlegt ist, stammt es aus einer Leihenahme. Dies ist ebenfalls als Geschäftsfall abgebildet und mittels GB01_Beziehungsart_Code "Leihe (LE)" mit dem Wertpapier verknüpft. Hier wird der "Inhaber (IH)" der Leihenahme (=Leihgeber) selektiert und zurückgegeben.
Kommt vor in/wird verwendet fürRolle_CL
Formale Beschreibung

FUNKTION XEN_Gegenpartei_FinRep (AI_Mandant MA, AI_Geschaeftsfall_ID gfId, AI_Stichtag_Datum repDate)

//(I) Selektion der Input-Parameter

inhaber = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT AI_Rolle_Code ISTGLEICH "Inhaber (IH)" VON GF_Geschaeftsfall

kredituebertragung = SELEKTIERE GF.GKA18_Kredituebertragung_An_Verkauf_Code VON GF_Geschaeftsfall

factoringKZ = SELEKTIERE GF.GF159_Factoring_Forfaitierung_Kennzeichen VON GF_Geschaeftsfall

forderungsverkaeufer = SELEKTIERE KR.AI_Einheitennummer_ID MIT AI_Rolle_Code ISTGLEICH "Forderungsverkäufer (FV)" VON KR_Kundenrollen VON GF_Geschaeftsfall

shortKZ = SELEKTIERE GF.GF40_Short_Position_Kennzeichen VON GF_Geschaeftsfall

repoKZ = SELEKTIERE ST.ST04_Repo_Sicherheit_Kennzeichen VON ST_Sicherheiten_Stammdaten MIT ST.AI_Geschaeftsfall_ID ISTGLEICH gfId

reverseRepo = SELEKTIERE GF.AI_Geschaeftsfall_ID VON GE_Geschaeftsfall_Exposure VON SZ_Sicherheiten_Zerlegung MIT SZ.AI_Zerlegungsansatz_Code ISTGLEICH "Internes Risikomanagement (INT)" VON ST_Sicherheiten_Stammdaten MIT ST.AI_Geschaeftsfall_ID ISTGLEICH gfId

inhaberRepo = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT AI_Rolle_Code ISTGLEICH "Inhaber (IH)" VON GF_Geschaeftsfall MIT GF.AI_Geschaeftsfall_ID ISTGLEICH reverseRepo

leihenahme = SELEKTIERE GB.AI_Geschaeftsfall_ID2 VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT GB01_Beziehungsart_Code ISTGLEICH "Leihe (LE)" VON GF_Geschaeftsfall

mandant2_beziehungsart = SELEKTIERE GB.AI_Mandant2 VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT (GB.AI_Geschaeftsfall_ID ISTGLEICH gfId GB.AI_Geschaeftsfall_ID2 ISTGLEICH leihenahmeUND GB01_Beziehungsart_Code ISTGLEICH "Leihe (LE)")

WENN(NICHT(ISTLEER(mandant2_beziehungsart))) DANN

mandant_leihenahme = mandant2_beziehungsart

SONST

mandant_leihenahme = MA

ENDE

leihgeber = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT AI_Rolle_Code ISTGLEICH "Inhaber (IH)" VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH leihenahme UND GF.AI_Mandant ISTGLEICH mandant_leihenahme)

geschaeftsfallkategorie = SELEKTIERE GF.GF00_Geschaeftsfallkategorie_Code VON GF_Geschaeftsfall

regressKennzeichen = SELEKTIERE GF.GF151_Rueckgriff_Kennzeichen VON GF_Geschaeftsfall

derivattyp = SELEKTIERE GF.GF42_Derivattyp_Code VON GF_Geschaeftsfall

underlyingklasse = SELEKTIERE GF.GF43_Underlying_Klasse_Code VON GF_Geschaeftsfall

sicherungsgeber = SELEKTIERE GF. GFA162_Mandant_Sicherungsgeber_Kennzeichen VON GF_Geschaeftsfall

//(II) Verarbeitung der Parameter

WENN(kredituebertragung ENTHAELT ("Ankauf mit Einfluss auf die Bilanz (AM)", "Ankauf ohne Einfluss auf die Bilanz (AO)") UND factoringKennzeichen ISTGLEICH WAHR UND regressKennzeichen ISTGLEICH WAHR) DANN

rValue = forderungsverkaeufer

SONST WENN(geschaeftsfallkategorie ISTGLEICH "Derivate (Q)" UND derivattyp ISTGLEICH "Swap (SWAP)" UND underlyingklasse ENTHAELT ("Credit Default (CD)", "Total Return (TR)") UND sicherungsgeber ISTGLEICH WAHR) DANN

//Verarbeitung von Kreditderivaten die gem FINREP Finanzgarantien sind: Hier ist der Inhaber des Underlyings (=Referenzschuldner) die Gegenpartei gem. FinRep. Falls mehrere Underlyings existieren, so ist jenes mit der größten Nominale zu verwenden. Sofern mehrere Underlyings dieselbe (größte) Nominale besitzen, ist eines dieser Underlyings zu wählen.

underlyings = SELEKTIERE ALLE GB.AI_Geschaeftsfall_ID2 VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT (GB.GB01_Beziehungsart_Code ISTGLEICH "Underlying (UL)" UND GB.AI_Geschaeftsfall_ID ISTGLEICH gfId)

maxNominale = SELEKTIERE MAX(GFW.Wert) VON (GFW_Geschaeftsfall_Wert MIT AI_Wertart_Code ISTGLEICH "Nominale (NN)") VON GF_Geschaeftsfall MIT GF.AI_Geschaeftsfall_ID ENTHAELT underlyings

referenzschuldner = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT KR.AI_Rolle_Code ISTGLEICH "Inhaber (IH)" VON GF_Geschaeftsfall MIT GF.AI_Geschaeftsfall_ID ENTHAELT underlyings VON GFW_Geschaeftsfall_Wert MIT (GFW.Wert ISTGLEICH maxNominale UND GFW.AI_Wertart_Code ISTGLEICH "Nominale (NN)")

rValue = referenzschuldner

SONST WENN(geschaeftsfallkategorie ENTHAELT ("Wertpapiere (H)", "Investmentfonds (I)", "Verbriefung (J)") UND shortKZ ISTGLEICH WAHR) DANN

WENN(repoKZ ISTGLEICH WAHR) DANN

rValue = inhaberRepo

SONST

rValue = leihgeber

ENDE

SONST

rValue = inhaber

ENDE

//(III) Rückgabe

RUECKGABE rValue

FUNKTIONSENDE

  • No labels