Bezeichnung des Algorithmus | XEN_Netto_Buchwert_abzueglich_Short_Positionen |
Kurzbezeichnung | Algorithmus zur Ermittlung des "Netto-Buchwert abzüglich Short-Positionen (NBWAS)" |
Verbale Beschreibung/Beispiele | Es werden alle Geschäftsfälle selektiert, deren Restlaufzeit, Währung und direkte Gegenpartei gem. FinRep identisch zu Restlaufzeit, Währung und Gegenpartei des betrachteten Long-Geschäftsfalls sind. Anschließend wird über diese Geschäftsfälle iteriert, um die Summe deren "Netto-Buchwerte inkl. Zinsabgrenzungen (NBW)" zu ermitteln - dabei wird zwischen Long- und Short-Postionen unterschieden. Übersteigt die Summe der Short-Positionen die der Long-Positionen, so wird der Wert 0 zurückgegeben. Sonst wird der Anteil des Geschäftsfalls an der Differenz der Long- und Short-Positionen zurückgegeben. Die Summe der Werte "Netto-Buchwert abzüglich Short-Positionen" über die relevanten Geschäftsfälle ist demnach genau die Differenz der Netto-Buchwerte der Long- minus der Short-Positionen. Hinweis: Dieser Algorithmus ist auf (auslands-)filialübergreifender Basis mandantenübergreifend durchzuführen. |
Kommt vor in/wird verwendet für | Wertart_CL |
Formale Beschreibung | FUNKTION XEN_Netto_Buchwert_abzueglich_Short_Positionen(AI_Mandant MA, AI_Geschaeftsfall_ID gfId, AI_Stichtag_Datum repDate) counterparty = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT KR.AI_Rolle_Code = "Direkte Gegenpartei gem. FinRep (GF)" VON GF_Geschaeftsfall restlaufzeit = SELEKTIERE GF.GFA168_Vertragliche_Restlaufzeit_Ende_Datum VON GF_Geschaeftsfall gfkategorie = SELEKTIERE GF.GF00_Geschaeftsfallkategorie_Code VON GF_Geschaeftsfall bilanzseite = SELEKTIERE GK.GKA01_Bilanzseite_Code VON GK_Geschaeftsfall_Konsolidierungssicht waehrung = SELEKTIERE GF.GF03_Geschaeftsfall_Waehrung_Code VON GF_Geschaeftsfall //Hiermit werden alle Geschäftsfälle selektiert, deren Restlaufzeit, Währung und direkte Gegenpartei gem. FinRep identisch zu Restlaufzeit und Gegenpartei des betrachteten Geschäftsfalls sind. Ist die Restlaufzeit gleich NULL, so erfolgt kein Netting, sondern der NBWAS entspricht dem NBW. WENN(NICHT(ISTLEER(restlaufzeit))) DANN relevanteGF = SELEKTIERE ALLE GF.AI_Geschaeftsfall_ID MIT (counterparty ISTGLEICH KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT KR.AI_Rolle_Code ISTGLEICH "Direkte Gegenpartei gem. FinRep (GF)") UND (GF.GFA168_Vertragliche_Restlaufzeit_Ende_Datum ISTGLEICH restlaufzeit) UND (GF. GF03_Geschaeftsfall_Waehrung_Code ISTGLEICH waehrung) UND NICHT(GF.AI_Geschaeftsfall_ID ISTGLEICH gfId) VON GF_Geschaeftsfall SONST relevanteGF = NULL ENDE shortKZ = SELEKTIERE GF.GF40_Short_Position_Kennzeichen VON GF_Geschaeftsfall netto_bw = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Netto-Buchwert inkl. Zinsabgrenzungen (NBW)" WENN(gfkategorie ENTHAELT ("Einmalkredit (exkl. Kreditlinie) (X)", "Kreditlinie (Y)", "Wechselkredit (B)", "Barvorlage (E)", "Operating Leasing (F)", "Finance Leasing (G)", "Kreditkartenkredit (C)", "revolvierender Kredit (exkl. Überziehungskredit) (V)", "Überziehungskredit (W)", "Wertpapiere (H)", "Investmentfonds (I)", "Verbriefung (J)", "Sonstige Forderungen (AB)" ODER (gfkategorie ENTHAELT ("Sonstige Aktiva/Passiva aus Zwischenkonten (T)", "Sonstige Aktiva/Passiva aus Schwebender Verrechnung (U)") UND bilanzseite ISTGLEICH "Aktiv in der Bilanz (AKT)")) DANN WENN(shortKZ ISTGLEICH FALSCH UND netto_bw > 0) DANN summe_long = netto_bw summe_short = 0 //Iteration über alle relevanten Geschäftsfälle, um die Summe der Long- bzw. der Short-Positionen zu ermitteln ITERIERE relGf von 1 bis Anzahl(relevanteGF) short_kz_rel = SELEKTIERE GF.GF40_Short_Position_Kennzeichen VON GF_Geschaeftsfall MIT GF.AI_Geschaeftsfall_ID ISTGLEICH relGf netto_bw_rel = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "Netto-Buchwert inkl. Zinsabgrenzungen (NBW)" UND AI_Geschaeftsfall_ID ISTGLEICH relGf) gfkategorie_rel = SELEKTIERE GF.GF00_Geschaeftsfallkategorie_Code VON GF_Geschaeftsfall MIT GF.AI_Geschaeftsfall_ID ISTGLEICH relGf WENN(gfkategorie_rel ENTHAELT ("Einmalkredit (exkl. Kreditlinie) (X)", "Kreditlinie (Y)", "Wechselkredit (B)", "Barvorlage (E)", "Operating Leasing (F)", "Finance Leasing (G)", "Kreditkartenkredit (C)", "revolvierender Kredit (inkl. Überziehungskredit) (D)", "revolvierender Kredit (exkl. Überziehungskredit) (V)", "Überziehungskredit (W)", "Wertpapiere (H)", "Investmentfonds (I)", "Verbriefung (J)") DANN WENN(short_kz_rel ISTGLEICH WAHR) DANN summe_short = summe_short + netto_bw_rel SONST summe_long = summe_long + netto_bw_rel ENDE ENDE ITERATION ENDE WENN(summe_short >= summe_long) DANN //Übersteigt die Summe der Short-Positionen die der Long-Positionen, so wird der Wert 0 zurückgegeben rValue = 0 SONST //Sonst wird der Anteil des Geschäftsfalls an der Differenz der Long- und Short-Positionen zurückgegeben. Die Summe der Werte "Netto-Buchwert abzüglich Short-Positionen" über die relevanten Geschäftsfälle ist demnach genau die Differenz der Netto-Buchwerte der Long- minus der Short-Positionen. rValue = netto_bw * (summe_long – summe_short) / summe_long ENDE ENDE RUECKGABE rValue ENDE FUNKTIONSENDE |