Page tree
Skip to end of metadata
Go to start of metadata
Bezeichnung des AlgorithmusXEN_Letztrisiko
KurzbezeichnungAbleitung des Letztrisikos
Verbale Beschreibung/Beispiele

Die zugrunde liegenden Annahmen und rudimentärsten Mechanismen des Letztrisikoalgorithmus sind in Darstellung des Letztrisikos beschrieben. Eine Beschreibung des Ableitungs-Algorithmus in der Formalsprache des Datenmodells findet sich ebenfalls anbei, jedoch ist dieser verbalen Beschreibung über die Bestimmung des Letztrisikos prinzipiell Prioriät einzuräumen.

Grundsätzlich gibt es vier Mechanismen, durch die ein Risikotransfer stattfinden kann:  

  • Haupt-Zweiganstalt-Beziehung
  • Risikotransfer aufgrund von Sicherheiten
  • Risikotransfer durch Underlyings
  • Zerlegung des Geschäftsfalls mittels Lookthrough

Wenn keiner dieser Mechanismen zur Anwendung kommt, dann werden die Letztrisiko-Attribute entsprechend der ursprünglichen Gegenpartei bestimmt. Somit entsprechen Land, Sektor und Wertart jenen des ursprünglichen Datensatzes:

Bei der Bestimmung der LR_Letztrisiko-Attribute ist wichtig, dass für LR01_Land_Code und LR02_Sektor_Code immer prioritär eine OeNB-Einheiten-Sicht verwendet wird. Dies ist auch bei der Bestimmung des Risikotransfers aufgrund einer Hauptanstalt-Zweiganstalt-Beziehung zu berücksichtigen.

Initialisierung: betroffene Geschäftsfälle und Wertarten

Die Bestimmung des Letztrisikos betrifft beinahe alle Geschäftsfälle, dennoch sollte die Letztrisiko-Entität nicht mit allen Geschäftsfällen initialisiert werden. Weiters ist das Letztrisikos auf bestimmte Wertarten beschränkt. Die folgenden Wertarten sind für den Zweck des Letztrisikos relevant:

  • Ausstehender Nominalwert
  • Buchwert
  • Marktwert (nur bei Finanzderivaten)
  • Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht) 
  • Zinsabgrenzung Soll sonstige (Kundensicht)
  • Nominale
  • Unwiderruflicher Kreditrahmen

Folgende Meldekonzepte selektieren die Geschäfstfälle, die potentiell einen Risikotransfer erfahren:

Kredit-Cube:

  • K01_BF01             Einmalkredite
  • K01_BF03             Kreditkartenkredit
  • K01_BF04             revolvierende Kredite und Überziehungskredite
  • K01_BF05             financial leasing
  • K01_BF06             Anteilsrechte nicht in Form von Wertpapieren
  • K02_AF07             Finanzderivate mit positivem Marktwert (nur für Wertarten Marktwert, Zinsabgrenzung und Nominale bei begebenen Kreditderivaten)
  • K03_AB01             Außerbilanzielle Geschaefte gem. Anhang I CRR (exkl. Kreditderivate, Kreditrahmen; nur für Wertarten Nominale und Unwiderruflicher Kreditrahmen)

Wertpapier-Cube:

  • W01_WP              Wertpapiere (nur Aktiv in der Bilanz)

Einlagen und Sachkonten-Cube:

  • M02_AF07            Finanzderivate mit negativem Marktwert (Wertarten Marktwert und Nominale bei begebenen Kreditderivaten)

Bestimmung des Letztrisikos in Verbindung mit Wertarten

Die verschiedenen Wertarten erfahren ebenfalls einen Risikotransfer zur Einheit der das Letztrisiko zugeordnet wird. Für den Zweck der Bestimmung des Letztrisikos wird der Ausstehende Nominalwert zusammen mit der Zinsabgrenzung als Einheit gesehen, jedoch erfährt der Ausstehende Nominalwert bei einem teilweisen Risikotransfer diesen prioritär vor der Zinsabgrenzung. Der verbleibende Risikotransfer wird aliquot auf die Zinsabgrenzung Soll aus Agio/Disagio und die sonstigen Zinsabgrenzungen Soll verteilt. Unwiderrufliche Kreditrahmen erfahren nur im Falle einer Überbesicherung über die Summe aus Ausstehender Nominalwert und Zinsabgrenzung einen Risikotransfer, sind also diesen gegenüber nachrangig zu behandeln.


Beispiel 1: Einmalkredit Ausstehender Nominalwert 1000, mit Zinsabgrenzung-Soll sonstige (20) und Unwiderruflicher Rahmen (100)

Beispiel 1a: Sicherheit mit Wert 1200: Vollständiger Risikotransfer der Sicherheit auf Ausstehender Nominalwert, Zinsabgrenzung und unwiderruflicher Rahmen. Das Letztrisiko für all diese Wertarten liegt bei der Sicherheit.

Beispiel 1b: Sicherheit mit Wert 1020: Risikotransfer durch die Sicherheit der Wertarten Ausstehender Nominalwert und Zinsabgrenzung Soll sonstige (Kundensicht); das Letztrisiko für diese beiden Wertarten liegt bei der Sicherheit. Kein Risikotransfer des unwiderruflichen Rahmens, das Letztrisiko liegt weiterhin bei der ursprünglichen Einheit.

Beispiel 1c: Sicherheit mit Wert 1010. Risikotransfer durch die Sicherheit der Wertart Ausstehender Nominalwert. Teilweiser Risikotransfer für die Wertart Zinsabgrenzung Soll - sonstige (Kundensicht) (Wert 10); das Letztrisiko für diese beiden Wertarten liegt bei der Sicherheit. Kein Risikotransfer für einen Teil der Zinsabgrenzung Soll - sonstige (Kundensicht) (Wert 10) und des kompletten unwiderruflichen Kreditrahmens, das Letztrisiko liegt weiterhin bei der ursprünglichen Einheit.


Wertart Nominale

Die Wertart Nominale wird bei der Bestimmung des Letztrisikos nur für die Meldekonzepte außerbilanzielle Geschäfte und Finanzderivate verwendet und sollte bei der Initialisierung bei Derivaten weiter auf begebene Kreditderivate eingeschränkt werden. Die Nominale-Wertart stellt den Garantie-Teil des Kreditderivats dar. Hinweis: Die Wertart Nominale für Kreditderivate ist beim Risikotransfer prioritär nach ihrem Underlying aufzulösen (Siehe Kreditderivate - Besondere Geschäftsfälle).

Formen des Risikotransfers

Aufgrund verschiedener Mechanismen des Risikotransfers werden die Letztrisiko-Attribute eines Geschäftsfalle nicht der unmittelbaren Gegenpartei zugeordnet. Zwischen den verschiedenen Formen des Risikotransfers besteht, unter anderem auch aufgrund der Modellierung im Datenmodell, eine Hierarchie: So sind beispielsweise Sicherheiten immer prioritär zur Bestimmung des Letztrisikos zu verwenden, bzw. muss jede Einheit überprüft werden, ob es sich um eine unselbstständige Zweiganstalt handelt. Prinzipiell (als Ausnahme, aufgrund der Datenmodellierung, siehe Besondere Geschäftsfälle – Kreditderivate) wird zur Bestimmung die folgende Reihenfolge angewandt:

  1. Sicherheiten
  2. Underlyings
  3. Look-Through
  4. Haupt-Zweiganstalten

Ein jeder Geschäftsfall soll in dieser Reihenfolge solange aufgelöst und einer Einheit zugeordnet werden, bis keine weitere Auflösung mehr möglich ist. Dann erst ist die Einheit des Letztrisikos bestimmt und die Letztrisiko-Entität Attribute können auf Basis dieser Einheit bestimmt werden.

Im Zuge der Auflösung kann es auch zu einer Aufteilung des ursprünglichen Datensatzes kommen. So wird beispielsweise bei einer Teilbesicherung, der besicherte Teil der mit der Einheit verbundenen Sicherheit und ein anderer Teil etwa der ursprünglichen Einheit zugeordnet. Oder im Falle eines Look-Throughs wird der ursprüngliche Datensatz vollständig in die durchgeschauten Datensätze zerlegt. Wesentlich ist jedoch, dass durch die Auflösung des Risikotransfers und die Verteilung in verschiedene Datensätze, die Summen der jeweiligen Wertarten nicht ändern können. So muss etwa die Summe aller Ausstehenden Nominalwerte vor Anwendung des Letztrisiko-Algorithmus immer der Summe der Ausstehenden Nominalwerte nach der Anwendung des Algorithmus sein.

Der Letztrisiko-Algorithmus in der Formalsprache iteriert über jeden Geschäftsfall und zerlegt ihn in seine weiteren Bestandteile. Ist ausschließlich eine „tiefer“ liegende Einheit für das Letztrisiko relevant, und die ursprüngliche Einheit (z.B. durch eine vollständige Besicherung) irrelevant, wird der ursprüngliche Geschäftsfall aus der LR-Entität entfernt. Findet nur ein teilweiser Risikotransfer statt, wird der ursprüngliche Datensatz in der LR-Entität lediglich um den transferierten Betrag reduziert. Anschließend wird für jeden Risikotransfer ein neuer Datensatz in der LR-Entität angelegt (jeweils mit und für die ursprünglichen Wertarten). Somit ist garantiert, dass die Summe der Wertarten immer konstant bleibt. Für eine exemplarische Darstellung dieser Vorgehensweise siehe Algorithmus Beispiele.

Im Folgenden werden die verschiedenen Formen des Risikotransfers im Detail beschrieben:

Sicherheiten

Sicherheiten sind prinzipiell prioritär gegenüber anderen Formen des Risikotransfers zu behandeln. Als Sicherheiten für die Bestimmung des Letztrisikos werden alle Sicherheiten gem. Zerlegungsansatz "CoRep (COR)" herangezogen; der anrechenbare Wert der Sicherheit entspricht dem anrechenbaren Wert gemäß CoRep. Wie oben beschrieben sind prioritär Ausstehender Nominalwert, Marktwert, Nominale und Zinsabgrenzung und anschließend erst der unwiderrufliche Kreditrahmen zu behandeln. Kreditrahmen werden also nur im Falle einer Überbesicherung (des ursprünglichen Geschäftsfalles) vom Risikotransfer erfasst. Der Wert der Sicherheiten, die über die Summe aus Ausstehender Nominalwert, Zinsabgrenzung und Unwiderruflichen Kreditrahmen hinausgeht (Überbesicherung) führt zu keinem Risikotransfer und ist zu ignorieren. Die Aufteilung auf die der Sicherheit zugeordneten Einheiten erfolgt immer aliquot pro Sicherheit (gemäß ihrem Sicherungswert) auf alle betroffenen Wertarten (siehe Beispiel 2). 

Für jeden besicherten Geschäftsfall wird in der formalen Beschreibung des Letztrisikoalgorithmus der Risikotransfer folgendermaßen vorgenommen:

Reduziere den Wert des ursprünglichen Geschäftsfalls um den besicherten Betrag, bzw. lösche den Geschäftsfall aus der LR_Letztrisiko-Entität im Falle eine Voll-/Überbesicherung (die ursprüngliche Einheit ist in diesem Fall nicht mehr relevant).

Im Falle einer Überbesicherung reduziere ggf. den unwiderruflichen Rahmen, um den überbesicherten Anteil. Ist der unwiderrufliche Rahmen in diesem Sinne vollständig besichert, dann lösche die Wertart des unbesicherten Rahmens (die ursprüngliche Einheit ist in diesem Fall auch für den unwiderruflichen Rahmen nicht mehr relevant).

Anschließend: Füge für jede Sicherheit, die dem Geschäftsfall zugeordnet wird, für jede vom Risikotransfer betroffene Wertart einen neuen Datensatz hinzu. Wobei jeweils die Einheit der Sicherheit zur Bestimmung der LR_Letztrisiko-Attribute herangezogen wird. Bei Sicherheiten mit den Ausprägungen  des ST03_Sicherheitenkategorie_Code "Wohnimmobilie (WI)", "Büros und sonstige Gewerberäume (GB)", ist der LR02_Sektor_Code mit der Ausprägung "Nicht Zuordenbar" (Erweiterte ESVG-Sektor Ausprägung: Code=9999) zu befüllen. Der Wert des neuen Datensatzes entspricht dem aliquoten Anteil der Sicherheit an allen vom Risikotransfer betroffenen Wertarten (siehe Beispiel weiter unten)

Nach der Überprüfung auf eine vorliegende Hauptanstalt ist die Bestimmung des Letztrisikos also immer abgeschlossen.


Beispiel 2a: Aliquote Aufteilung von Sicherheiten

Einmalkredit: Ausstehender Nominalwert 1000, Zinsabgrenzung Soll - sonstige (Kundensicht) 50, Unwiderruflicher Kreditrahmen 100
Sicherheit 1: 600, Sicherheit 2: 600
Ausstehender Nominalwert 500 wird Sicherheit 1 zugeordnet, Ausstehender Nominalwert 500 wird Sicherheit 2 zugeordnet.
Zinsabgrenzung 25 wird Sicherheit 1 zugeordnet, Zinsabgrenzung 25  wird Sicherheit 2 zugeordnet.
Unwiderruflicher Kreditrahmen 50 wird Sicherheit 1 zugeordnet, Unwiderruflicher Kreditrahmen 50  wird Sicherheit 2 zugeordnet.


Beispiel 2b: Aliquote Aufteilung von Sicherheiten

Einmalkredit: Ausstehender Nominalwert 1000, Zinsabgrenzung Soll - sonstige (Kundensicht) 100, Unwiderruflicher Kreditrahmen 400
Sicherheit 1: 500, Sicherheit 2: 700
Ausstehender Nominalwert: 1000 * (500/(500+700)) werden Sicherheit 1 zugeordnet
Ausstehender Nominalwert: 1000 * (700/(500+700)) werden Sicherheit 2 zugeordnet
Zinsabgrenzung Soll - sonstige (Kundensicht): 100 * (500/(500+700)) werden Sicherheit 1 zugeordnet
Zinsabgrenzung Soll - sonstige (Kundensicht): 100 * (700/(500+700)) werden Sicherheit 2 zugeordnet
Unwiderruflicher Kreditrahmen: 100 * (500/(500+700)) werden Sicherheit 1 zugeordnet
Unwiderruflicher Kreditrahmen: 100 * (700/(500+700)) werden Sicherheit 2 zugeordnet
Unwiderruflicher Kreditrahmen: 300 werden der ursprünglichen Einheit zugeordnet

Underlyings

Die Underlying Beziehung (GB01_Beziehungsart_Code = "Underlying) ist für die Zwecke des Risikotransfers primär für Credit Linked Notes und Kreditderivate relevant. Wesentlich dabei ist, dass bei Kreditderivaten nur die Nominale (jener Teil des Geschäftsfalles der eine Garantie darstellt) nach ihrem Underlying aufgelöst wird. Die Wertart Marktwert von allen Derivaten wird nicht in diesem Sinne aufgelöst. Somit werden auch Derivate, die keine Kreditderivate darstellen, niemals nach ihrem Underlying aufgelöst.
Bei der Auflösung eines Geschäftsfalles aufgrund von Underlyings wird der ursprüngliche Geschäftsfall im Regelfall durch seine Underlyings ersetzt. Ist der Garantie-Teil aller Underlyings jedoch geringer als der zu übertragende Wert des Geschäftsfalles, wird nur der Garantieteil an die zugrundeliegenden Einheiten übertragen, der verbleibende Wert wird weiterhin der ursprünglichen Einheit zugeordnet. Sollte ein Geschäftsfall mehrere Underlyings haben, dann werden diese aliquot nach ihrem gewichteten Garantie-Anteil aufgeteilt. Somit wird niemals mehr als der ursprüngliche Wert des Geschäftsfalles übertragen. Optional kann vom Melder auch eine komplexere Bestimmung der Gewichtung des Risikos implementiert werden (beispielsweise bei nth-to-default-baskets). Wesentlich ist jedoch, dass dies eine adequate Einschätzung des Risikotransfers darstellt und immer nicht mehr als der ursprüngliche Wert übertragen wird.

Wichtig: Bei Derivaten werden die Geschäftsfälle nur für die Garantie von begebene Kreditderivate nach ihrem Underlying aufgelöst. Um sicherzugehen, dass keine Sicherheiten, die sich auf den Ausstehender Nominalwert/Marktwert des Derivats beziehen, fälschlicherweise der Nominale des Derivats zugschrieben werden, wurde in der formellen Beschreibung des Algorithmus diese Auflösung von Kreditderivaten prioritär, noch vor der Sicherheitenzerlegung, implementiert. Näheres dazu unten "Kreditderivate - Besondere Geschäftsfälle".

Beispiel 3: Wertpapier mit Underlying (CLN)
Beispiel 3a: Credit Linked Note, Ausstehender Nominalwert = 1000, Underlying mit Nominale = 1000, der gesamte Ausstehende Nominalwertwird für die Zwecke des Letztrisikos der Einheit des Underlyings zugeordnet.
Beispiel 3b: Credit Linked Note, Ausstehender Nominalwert = 1000, Underlying mit Nominale = 800, Für die Zwecke des Letztrisikos wird ein Ausstehender Nominalwert von 800 der Einheit des Underlyings zugeordnet, 200 verbleiben bei der ursprünglichen Einheit.

Look-Through

Bei der Auflösung eines Geschäftsfalles in seine Bestandteile wird der ursprüngliche Geschäftsfall durch die zugrunde liegenden Geschäftsfälle ersetzt. Die Bestimmung der LR_Letztrisiko-Attribute erfolgt für jede Einheit pro zerlegten Teil des ursprünglichen Geschäftsfalls. Da die Werte der zugrunde liegenden Geschäftsfälle für alle Wertarten in Summe immer den Wert des ursprünglichen Geschäftsfalles ergeben müssen (siehe Modellierung des Look-through), wird der Geschäftsfall immer vollständig zerlegt.
Erfolgt eine Zerlegung in Sachkonten (beispielsweise bei Immobilienfonds), ist als LR02_Sektor_Code "9999 - nicht zurodenbar" zu befüllen, bei Sachkonten die Kassenbestände und Valuten darstellen (SK00_Sachkontokategorie_Code: BR1-BR3) wird das Letztrisiko je nach Währung (SK03_Waehrung_Code) jenem Land zugeordnet in dem sich die ausgebende Zentralbank befindet (z.B. EUR -> DE, USD -> US), als LR02_Sektor_Code ist in diesem Fall "1210 - Zentralbank" zu verwenden.

Aufgrund der vollständigen Zerlegung wird im Algorithmus der ursprüngliche Datensatz der LR_Letztrisiko-Entität immer gelöscht (da immer eine vollständige Zerlegung stattfindet) und pro Wertart für jeden zugrunde liegenden Geschäftsfall ein neuer Datensatz erstellt. Der Wert bestimmt sich immer auf Basis der zerlegten Geschäftsfälle.

Hauptanstalt-Zweiganstalt

Bei der Ermittlung des Letztrisikos werden Geschäftsfälle die mit Zweigstellen getätigt wurden betrachtet, als wären sie mit der zugehörigen Hauptanstalt getätigt, bzw. von dieser garantiert worden. Zu diesem Zweck werden alle Einheiten (sowohl der originären als auch der aufgelösten Geschäftsfälle) darauf überprüft ob sie in einer Hauptanstalt-Zweiganstalt-Beziehung stehen (AI_Zusammenfassungstyp_Code = "Hauptanstalt-Zweiganstalt Beziehung", bzw. EO41_Identnummer_Hauptanstalt). Liegt eine dahinter liegende Hauptanstalt vor, wird bei der Bestimmung der LR_Letztrisiko-Attribute die zugehörige Hauptanstalt anstatt der Zweiganstalten verwendet.

Im formalen Letztrisiko-Algorithmus wird diese Form des Risikotransfers nicht separat abgehandelt, sondern wird bereits bei jeder Betrachtung oder Auflösung der Einheit berücksichtigt, indem die Einheit überprüft wird sobald sie für einen Risikotransfer verantwortlich ist. Bei einer solchen Vorgehensweise ist es jedoch auch wesentlich, dass bei der Initialisierung der Geschäftsfälle auf diese Form des Risikotransfers Rücksicht genommen wird.

Besondere Geschäftsfälle:

Unwiderrufliche Kreditrahmen von Krediten

Unwiderrufliche Kreditrahmen sind auf insofern besonders zu behandeln, als dass bei unwiderruflichen Kreditrahmen, wie oben beschrieben, der Risikotransfer von Sicherheiten nur anzuwenden ist, wenn der ursprüngliche Geschäftsfall und eine ggf. zugehörige Zinsabgrenzung bereits vollständig durch die Sicherheiten besichert sind. Der Wert von Sicherheiten, der über diesen Wert des ursprünglichen Geschäftsfalles (Ausstehender Nominalwert + Zinsabgrenzung) hinausgeht führt dann erst zu einem Risikotransfer des unwiderruflichen Rahmens. Analog führt der Risikotransfer bei Fazilitäten außerbilanzieller Geschäfte (Fazilitäten zur Bereitstellung von Garantien etc.) zuerst zum bereits ausgenutzten Teil (Wertart Nominale) und erst anschließend zum ungenutzten Teil der Fazilität.


Derivate und Kreditderivate

Kreditderivate müssen im LR-Algorithmus speziell behandelt werden, da sie Marktwerte, Garantien und Underlyings vereinigen. Andere Derivate hingegen werden nicht gegenüber ihren Underlyings aufgelöst.

Folgendes ist bei Derivaten zu beachten:

  • Generell sind ausschließlich Marktwerte von Derivaten für das Letztrisiko relevant. Nur für begebene Kreditderivate wird auch die dadurch begebene Garantie erfasst. Dazu wird während der Initialisierung der LR-Entität bei Derivaten der Marktwert und für begebene Kreditderivate (GF40_Short_Position_Kennzeichen = WAHR) zusätzlich auch die Wertart Nominale selektiert, diese Wertart bildet den garantierten Teil des Kreditderivats.
  • Derivate werden nur nach ihrem Underlying aufgelöst, wenn es sich um die Garantie eines Kreditderivates handelt. In der Formalbeschreibung des Algorithmus wurde dies implementiert indem Derivate niemals nach ihrem Underlying aufgelöst werden, soweit es sich nicht um die Wertart Nominale handelt. Da diese Wertart nur für Kreditderivate initialisiert wird, ist damit sichergestellt, dass eine solche Auflösung nur Kreditderivate betrifft. Derivate, die keine begebenen Kreditderivate darstellen, werden damit üblicherweise der Gegenpartei zugeordnet.
  • Die Nominale eines Kreditderivats ist prioritär vor allen anderen Formen des Risikotransfers nach ihrem Underlying aufzulösen. Somit wird bei der Behandlung von Kreditderivaten quasi in einem ersten Schritt der Garantie-Teil des Derivats vom Marktwert getrennt. Nur so kann garantiert werden, dass beispielsweise Sicherheiten die sich auf den Marktwert eines Derivats beziehen auch dem Marktwert und nicht der Nominale zugeordnet werden (Siehe Beispiel 7 der Modellierungsbeispiele Letztrisiko).


Credit Linked Notes

CLN sind im Sinne des Länderrisikos nicht speziell zu behandeln. Üblicherweise würde der Ausstehende Nominalwert der CLN aufgrund des Underlyings auf die Einheit des eingebetteten Kreditderivats übertragen.  Ist die CLN besichert würde diese Sicherheit prioritär ggü. des Underlyings behandelt, etc. Jedoch sei erwähnt, dass CLN im Sinne des Letztrisikos nicht als Kreditderivate behandelt werden. Weiters sei erwähnt, dass bei der Modellierung vorgesehen ist, dass die Nominale des Underlyings einer CLN dem durch die CLN besicherten Werts im Falle eines Ausfallsereignis entspricht. Sollte nach dem Eintritt eines Kreditereignisses also weiterhin ein Teil des Kapitals einer CLN durch die Gegenpartei zurückzuzahlen sein, wäre dieser Teil nicht dem Kreditrisiko des Underlyings unterworfen und dementsprechend würde dieser Teil des Werts bei der ursprünglichen Einheit verbleiben.


Siehe auch Modellierung des Look-through

Kommt vor in/wird verwendet für

LR00_GF_ID

LR01_Land_Code

LR02_Sektor_Code

LR03_Einheitennummer_ID

LR04_Wertart_Code

LR06_Art_des_Risikotransfers_Code

Formale Beschreibung
//Konventionen zum Letztrisiko Algorithmus
//Damit der Algorithmus möglich übersichtlich dargestellt werden kann, werden folgende Konventionen verwendet:
//Vergleichoperatoren == wird abgekürzt durch ==, != wird abgekürzt durch !=
//Funktionen können auch Objekte übergeben werden, so kann hier manchen Funktionen das Objekt Einheit übergeben werden. (Dieses Attribut enthält dann alle Attribute des Objektes bzw. Entität und diese können mit Objekt.Attribut in den entsprechenden Algorithmen angesteuert werden. Wir einer Funktion ein Objekt übergeben, so wird das in der Beschreibung hervorgehoben.
//Entitäten können auch durch ihre Kürzel angesteuert werden, so kann z.B. die Entität GF_Geschaeftsfall auch durch GF angesteuert werden.
//Beginn Hauptfunktion
//Dieser Algorithmus geht sukzessive die LR_Letztrisiko Entität durch und überprüft ob die Einträge (Geschäftsfälle) noch weiter im Sinne des Letztrisikos aufgelöst werden können.
//Können die Einträge weiter aufgelöst werden, werden sie bei der nächsten Iteration abgehandelt. 
//Der Algorithmus ist beendet, sobald kein Geschäftsfall mehr weiter aufgelöst werden kann
FUNKTION XEN_Letztrisiko(AI_Mandant, AI_Stichtag_Datum)
INITIALISIERE_LR_Entitaet()
 //Start Iteration: Selektiere alle Geschäftsfälle der LR-Entität deren GF_ID nicht Null sind (diese Geschäftsfälle sind weiter auflösbar)
 LR_gf_aufzulösen = SELEKTIERE ALLE LR_LETZTRISIKO.LR00_GF_ID MIT LR00_GF_ID != NULL
WIEDERHOLE SOLANGE LR_gf_aufzulösen NICHT LEER
	ITERIERE i VON 1 bis Anzahl(LR_gf_aufzulösen) 
		gfk = SELEKTIERE GF00_Geschaeftsfallkategorie VON GF MIT AI_Geschaeftsfall_ID = LR_gf_aufzulösen(i)
  		WENN(gfk == "Derivat") DANN
   			nominale = SELEKTIERE Wert VON LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen(i) UND LR04_Wertart_Code == "Nominale" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert"  
			protection_seller = SELEKTIERE GFA174_Sicherungsgeber_Kennzeichen VON GF_Geschaeftsfall MIT AI_Geschaeftsfall_ID == LR_gf_aufzulösen(i)
			WENN (protection_seller == WAHR UND ISTLEER(nominale) == FALSCH)
				//in diesem Fall handelt es sich um den Garantie-Teil eines Kreditderivats
				//die Nominale des Derivats wird auf das Underlying aufgelöst. Der Marktwert des Derivats ist davon nicht betroffen.
				//Anschließend kann diese Kombination aus Derivat/Nominale nicht weiter vorkommen. Sicherheiten, etc. werden also immer der richtigen Einheit zugeordnet (UL oder ursprünglichen GF).
				UPDATE_UNDERLYING_LR(LR_gf_aufzulösen(i), "Nominale")
				SETZE LR00_GF_ID = NULL FÜR ALLE LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen(i) UND LR04_Wertart_Code == "Nominale"
			SONST

				//es handelt sich um den MW eines Derivats
				UPDATE_SICHERHEITEN_LR(LR_gf_aufzulösen(i))
				UPDATE_LOOKTHROUGH_LR(LR_gf_aufzulösen(i))
				SETZE LR00_GF_ID = NULL FÜR ALLE LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen(i) UND LR04_Wertart_Code != "Nominale"
			ENDE

		SONST
			//jeder andere Geschäftsfall, der kein Derivat darstellt

			UPDATE_SICHERHEITEN_LR(LR_gf_aufzulösen(i))
			UPDATE_UNDERLYING_LR(LR_gf_aufzulösen(i))
			UPDATE_LOOKTHROUGH_LR(LR_gf_aufzulösen(i))
			SETZE LR00_GF_ID = NULL FÜR ALLE LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen(i)
		ENDE
	ENDE ITERATION
	//Selektiere wieder alle Geschäftsfälle der LR-Entität deren GF_ID nicht Null sind (diese Geschäftsfälle sind weiter auflösbar)
	//Dies wird solange wiederholt bis kein Geschäftsfall mehr auflösbar ist
	LR_gf_aufzulösen = SELEKTIERE ALLE LR_LETZTRISIKO.LR00_GF_ID MIT LR00_GF_ID != NULL 
ENDE WIEDERHOLUNG
//Die Entität LR_Letztrisiko enthält nun Datensätze die nicht weiter aufgelöst werden können.
//Im nächsten Schritt muss diese Entitäte mittels der Geschäftsfall-IDs mit den Geschäftsfällen des SmartCubes gejoint werden.
FUNKTIONSENDE
//Ende Hauptfunktion

//Hilffunktionen
NEUER_LR_DATENSATZ(Datensatz)
//Fügt einen Datensatz zur Letztrisiko-Entität hinzu. Dabei wird für jeden eigefügten Datensatz, eine eindeutig identifizierbare AI_Letztrisiko_ID angelegt. 
FUNKTIONSENDE

AENDERE_DATENSATZS(AI_Letztrisiko_ID, Zu änderndes Feld1 = neuer Wert1, …, Zu änderndes Feld n = neuer Wert n)
//Ändert einen bestehenden Datensatz in der LR_Letztrisiko. Dabei ist das zu ändernde Feld anzugeben sowie der neue Wert.
FUNKTIONSENDE

FUNKTION AENDERE_DATENSATZ_VIA_LR_GFID(LR_GF_ID, Wertart, Zu änderndes Feld 1 = neuer Wert 1, …, Zu änderndes Feld n = neuer Wert n)
//Bezieht sich auf AENDERE_DATENSATZ, der zu ändernde Datensatz wird jedoch über LR00_GF_ID und Wertart identifiziert
 LR_id = SELEKTIERE AI_Letztrisiko_ID VON LR_LETZTRISIKO MIT LR00_GF_ID = LR_GF_ID UND LR04_Wertart_Code = Wertart
 AENDERE_DATENSATZ(LR_id, Zu änderndes Feld 1 = neuer Wert 1, …, Zu änderndes Feld n = neuer Wert n)
FUNKTIONSENDE

LOESCHE_DATENSATZ(AI_Letztrisiko_ID)
//Entfernt den Datensatz mit AI_Letztrisiko_ID aus der Entität LR_Letztrisiko.
FUNKTIONSENDE


FUNKTION LOESCHE_DATENSATZ_VIA_LR_GFID(LR_GF_ID, Wertart)
//Bezieht sich auf LOESCHE_DATENSATZ, der zu löschende Datensatz wird jedoch über LR00_GF_ID und Wertart identifiziert
 LR_id = SELEKTIERE AI_Letztrisiko_ID VON LR_LETZTRISIKO MIT LR00_GF_ID == LR_GF_ID UND LR04_Wertart_Code == Wertart
 LOESCHE_DATENSATZ(LR_id)
FUNKTIONSENDE
 
FUNKTION INITIALISIERE_LR_Entitaet()
//Initialisiert die Entität LR_Letztrisiko – Es werden alle relevanten Geschäftsfälle ausgewählt. Die Selektion findet über bestehende Meldekonzepte statt. Anschließend wird für jeden Geschäftsfall für jede relevante Wertart ein Datensatz in der LR-Entität angelegt. Dort 
SETZE LR_LETZTRISIKO = LEER
SETZE LR_GESCHAEFTSFAELLE = 
SELEKTIERE Meldekonzepte (K01_BF01 UNION K01_BF03 UNION K01_BF04 UNION K01_BF05) MIT AI_Wertart_Code == "Ausstehender Nominalwert" ODER AI_Wertart_Code == "Unwiderruflicher Kreditrahmen" ODER AI_Wertart_Code == "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)" ODER AI_Wertart_Code == "Zinsabgrenzung Soll sonstige (Kundensicht)" //Kredite 
UNION
SELEKTIERE Meldekonzepte (K01_BF06) MIT AI_Wertart_Code == "Buchwert" ODER AI_Wertart_Code == "Unwiderruflicher Kreditrahmen"// Anteilsrechte
UNION
SELEKTIERE Meldekonzepte  W01_WP MIT (AI_Wertart_Code == "Ausstehender Nominalwert" ODER AI_Wertart_Code == "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)" ODER AI_Wertart_Code == "Zinsabgrenzung Soll sonstige (Kundensicht)")  UND ((GFA171_Bilanzseite_IFRS_Code = "AKT") ODER (GFA109_Bilanzseite_local_GAAP_Code = "AKT") ODER (GF132_Bilanzposition_local_GAAP_Code ENTHAELT ("A1","A2","A3","A4","A5","A6","A7","A8") UND (WMA28_Wertpapierklassifikation_Code ENTHAELT ("Schuldverschreibungen", "Credit Linked Note", "Verbriefungstranchen"))  //Schuldverschreibugnen (nur aktivseitig)
UNION
SELEKTIERE Meldekonzepte  W01_WP MIT (AI_Wertart_Code == "Buchwert")  UND ((GFA171_Bilanzseite_IFRS_Code = "AKT") ODER (GFA109_Bilanzseite_local_GAAP_Code = "AKT") ODER (GF132_Bilanzposition_local_GAAP_Code ENTHAELT ("A1","A2","A3","A4","A5","A6","A7","A8") UND (WMA28_Wertpapierklassifikation_Code ENTHAELT NICHT ("Schuldverschreibungen", "Credit Linked Note", "Verbriefungstranchen"))  //verbriefte Anteilsrechte (nur aktivseitig)
UNION
SELEKTIERE Meldekonzepte  (K02_AF07 UNION M02_AF07) MIT (AI_Wertart_Code == "Marktwert" ODER AI_Wertart_Code == "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)" ODER AI_Wertart_Code == "Zinsabgrenzung Soll sonstige (Kundensicht)")  //Finanzderivate mit positivem oder negativem Marktwert 
UNION
SELEKTIERE Meldekonzepte  (K02AF07 UNION M02_AF07) MIT AI_Wertart_Code == "Nominale" UND ((GF.GF40_Short_Position_Kennzeichen == WAHR) UND ((GF.GF43_Underlying_Klasse_Code == "Credit Default" UND GF.GF42_Derivattyp_Code == "Swap") ODER (GF.GF43_Underlying_Klasse_Code == "Total Return" UND GF.GF42_Derivattyp_Code == "Swap"))) //Nominale für Kreditderivate
UNION
SELEKTIERE Meldekonzepte K03_AB01 MIT (AI_Wertart_Code == "Nominale" ODER AI_Wertart_Code == "Unwiderruflicher Kreditrahmen") //Ausserbilanzielle Geschaefte
// Nach der Initialisierung wird eine Aktualisierung durchgeführt: Im Fall, dass es sich bei einer Einheit um eine Zweigstelle handelt,  wird der entsprechende Datensatz (Einheitennummer, Land und Sektor des Letztrisikos) aktualisiert.
//Für jeden selektierten Geschäftsfall wird für jede Wertart ein LR_Entität Datensatz angelegt
ITERIERE i VON 1 bis Anzahl(LR_GESCHAEFTSFAELLE)
	LR_WERTARTEN = SELEKTIERE AI_Wertart_Code VON GFW_Geschaeftsfall_Wert VON LR_GESCHAEFTSFAELLE(i)
	ITERIERE j VON 1 bis Anzahl(LR_WERTARTEN)

		urspruengliche_einheit = AI_Einheitennummer_ID VON KR_Kundenrollen VON LR_GESCHAEFTSFAELLE(i) MIT (KR_Kundenrollen.AI_Rolle_Code == "Inhaber")

		ERSTELLE NEUEN LR_DATENSATZ UND SETZE:
		SETZE AI_LETZTRISIKO_ID = EINDEUTIGE_ID()
		SETZE LR00_GF_ID = AI_Geschaeftsfall_ID VON LR_GESCHAEFTSFAELLE(i)
		SETZE LR03_Einheitennummer_ID = UPDATE_HSZS(AI_Einheitennummer_ID VON KR_Kundenrollen VON LR_GESCHAEFTSFAELLE(i) MIT (KR_Kundenrollen.AI_Rolle_Code == "Inhaber"))
		SETZE LR01_Land_Code = ABLEITUNG_LETZTRISIKO_LAND(LR03_Einheitennummer_ID) //initialisiert das Sitzland
		SETZE LR02_Sektor_Code = ABLEITUNG_LETZTRISIKO_Sektor (LR03_Einheitennummer_ID) //initialisiere den Sektor
		SETZE LR04_Wertart_Code = LR_WERTARTEN(j) //Initialisier LR04_Wertart_Code mit den Selektierten Wertarten der Basis-Geschäftsfälle, es wird für jede vorhandenen AI_Wertart_Code ein eigener Datensatz mit eigener AI_Letztrisiko_ID angelegt
		WENN(LR03_Einheitennummer_ID ISTGLEICH urspruengliche_einheit) DANN
			SETZE LR06_Art_des_Risikotransfers_Code = "Kein Risikotransfer (KT)"
		SONST
			SETZE LR06_Art_des_Risikotransfers_Code = "Hauptanstalt-Zweiganstalt-Beziehung (HZ)"
		ENDE
		SETZE Wert = SELEKTIERE Wert VON GFW_Geschaeftsfall_Wert VON LR_GESCHAEFTSFAELLE(i) MIT AI_Wertart_Code == LR_WERTARTEN(j)
	ENDE ITERATION
ENDE ITERATION
//Alle nicht selektierten Geschäftsfälle/Geschäftsfall-Wertart Kombinationen haben kein LR-Land, LR-Sektor und grenzüberschreitende Forderung-Kennzeichen. All diese Attribute sind deswegen mit NR befüllt.
FUNKTIONSENDE
 
 
//Hilfsfunktion zur Bestimmung des Landes/Int-Code einer Einheit, der Algorithmus ist im Wesentlichen gleich mit XUB_Ableitung_Sitzland, bezieht sich jedoch auf die Übergebene Einheit, nicht den übergebenen Geschäftsfall
FUNKTION ABLEITUNG_LETZTRISIKO_LAND(einheit_id)
 einheit = SELEKTIERE EM_Einheit_MS MIT AI_Einheitennummer_ID == einheit_id
OeNB_ID = einheit.AI_OeNB_IdentNr 
WENN (ISTLEER(OeNB_ID) == FALSCH) DANN
	//betrachtete Einheit zum Geschäftsfall hat eine OeNB-Identnummer; Abfrage Internationale Organisationen  
	Int_Org = EO_Einheit_OS.EO40_Internationale_Organisation_OS_Code VON EO_Einheit_OS MIT (EO_Einheit_OS.AI_OeNB_IdentNr == OeNB_ID)  
	WENN (ISTLEER(Int_Org) == FALSCH) DANN
		//die betrachtete Einheit stellt eine Internationale Organisation dar, dh. wird der Code der Internationalen Organisation zurückgegeben
		RUECKGABE Int_Org  
	ENDE  
	WENN (IS TLEER(Int_Org) == WAHR) DANN
		//die betrachtete Einheit hat eine OeNB-Identnummer, stellt jedoch keine Internationale Organisation (lt. OeNB) dar, dh. wird das Sitzland lt. "OeNB-Sicht" zurückgegeben   
		LETZTRISIKO_LAND = EO_Einheit_OS.EO02_Sitzland_OS_Code VON EO_Einheit_OS MIT (EO_Einheit_OS.AI_OeNB_IdentNr == OeNB_ID)   
		RUECKGABE LETZTRISIKO_LAND
	ENDE
SONST
	//betrachtete Einheit zum Geschäftsfall hat keine OeNB-Identnummer, dh. wird das Sitzland lt. "Melder-Sicht" zurückgegeben  
	LETZTRISIKO_LAND = einheit.EM02_Sitzland_MS_Code  
	RUECKGABE LETZTRISIKO_LAND
ENDE
FUNKTIONSENDE

 
//Hilfsfunktion zur Bestimmung des Sektors, der Algorithmus ist im Wesentlichen gleich mit XUB_Ableitung_des_ESVG_Sektors, bezieht sich jedoch auf die Übergebene Einheit, nicht den übergebenene Geschäftsfall
FUNKTION ABLEITUNG_LETZTRISIKO_Sektor (einheit_id)
 einheit = SELEKTIERE EM_Einheit_MS MIT AI_Einheitennummer_ID == einheit_id
y = EO_Einheit_OS VON einheit
// Also die entsprechende OeNB Identnummer zur EM_Einheit_MS
WENN (ISTLEER(y) == WAHR) DANN
	//zur EM_Einheit_MS mit Kundenrolle Inhaber gibt es keine OeNB Identnummer
	RUECKGABE einheit.EM04_Sektor_ESVG_MS_Code
SONST
	//es existiert eine OeNB Identnummer zur entsprechenden Einheit 
	RUECKGABE y.EO04_Sektor_ESVG_OS_Code
ENDE
FUNKTIONSENDE

FUNKTION FIND_ORIGINAL_ID(AI_Geschaeftsfall_ID)
 //Diese Funktion findet für einen bereits ausgelösten Geschäftsfall die originäre Geschäftsfall ID.
 //Hierbei kann es auch zu einer Kettenbildung kommen: Wird ein (Dummy-) Geschäftsfall betrachtet, der bereits ein Resultat einer mehrstufigen Auflösung ist, so ist immer die
 //Gescharftsfall_ID des "Kopfes" zurückgegeben - also die ID jenes (originären) Geschäftsfalles, welcher am Anfang der Auflösung steht.
 //Dies ist für mehrfach aufgelöste Geschäftsfälle notwendig, bei denen der ursprüngliche Kopf nicht verloren gehen darf.
 RUECKGABE AI_Geschaeftsfall_ID
FUNKTIONSENDE

FUNKTION ABLEITUNG_Land_zu_Waehrung(waehrung) 
//Diese Funktion liefert das Land zu einer Währung zurück.
//So wird beispielsweise für USD -> US zurückgegeben.
//Im Fall dass mehreren Ländern dieselbe Währung zugeordnet wurden, wird das Land indem die ausgebende Zentralbank beheimatet ist als Land zurückgegeben (Bsp: EUR -> DE)
//Als Basis ist Mappingtabelle Land & Währung aus XEN_Ableitung_Internationaler_Forderungstyp_Code heranzuziehen
Land = SELEKTIERE ISO-Ländercode von ISO_Land_Waehrung_Mapping MIT ISO-Währungscode = waehrung
RUECKGABE LAND
FUNKTIONSENDE
 
FUNKTION UPDATE_HSZS_LR(einheit_id)
//Der Algorithmus gibt zur entsprechenden (Input)-Einheit, die Einheit der entsprechenden Hauptanstalt zurück, soweit diese existiert.
//Existiert keine Haupanstalt-Einheitennummer, so wird die (Input)-Einheit zurückgegeben. Die Bestimmung erfolgt soweit möglich nach OeNB-Sicht   
//Selektion der OeNB-Identnummer zur identifizierten Einheit
OeNB_ID = SELEKTIERE AI_OeNB_IdentNr VON EM_Einheit_MS MIT (EM_Einheit_MS.AI_Einheitennummer_ID == einheit_id)
WENN (ISTLEER(OeNB_ID)) DANN
	//zum Geschäftspartner exisitiert keine OeNB-Identnummer
	//Selektion jener Einheitenzusammenfassungen, welche die identifizierte Einheit enthalten
	Hauptanstalt = SELEKTIERE AI_Gruppen_Einheitennummer_ID VON EZ_Einheiten_Zusammenfassung_MS MIT (EZ_Einheiten_Zusammenfassung_MS.AI_Einheitennummer_ID == Einheit UND 	EZ_Einheiten_Zusammenfassung_MS.AI_Zusammenfassungstyp_Code == "Hauptanstalt-Zweiganstalt Beziehung")
	WENN (ISTLEER(Hauptanstalt)) DANN
		//zur identifizierten Einheit existiert keine Hauptanstalt, ergo muss es sich bei der betrachteten Einheit um eine Hauptanstalt handeln.
		RUECKGABE einheit_id
	SONST
		RUECKGABE Hauptanstalt
	ENDE
SONST
	//zum Geschäftspartner existiert eine OeNB-Identnummer
	Hauptanstalt_OeNB_ID = SELEKTIERE EO41_Identnummer_Hauptanstalt VON EO_Einheit_OS MIT (EO_Einheit_OS.AI_OeNB_IdentNr == OeNB_ID)
	WENN (ISTLEER(Hauptanstalt_OeNB_ID)) DANN
		//zur identifizierten Einheit existiert keine Hauptanstalt, ergo muss es sich bei der betrachteten Einheit um eine Hauptanstalt handeln.
		RUECKGABE einheit_id
	SONST
		RUECKGABE Hauptanstalt_OeNB_ID
	ENDE
ENDE
FUNKTIONSENDE

FUNKTION UPDATE_LOOKTHROUGH_LR(LR_gf_aufzulösen)
//durch die die LR_gf_id werden Datensätze in der LR-Entität nicht eindeutig identifiziert, erst aufgrund der Wertart (oder alternativ LR_id) können diese eindeutig zugeordnet werden.
//in der folgenden Funktion werden alle Wertarten iteriert und die Zerlegung bei allen Wertarten angewandt.
LR_id_aufzulösen = SELEKTIERE ALLE AI_Letztrisiko_ID VON LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen
//Schleife über alle Geschäftsfall-Wertart Kombinationen
ITERIERE i VON 1 bis Anzahl(LR_id_aufzulösen)
	Wertart = SELEKTIERE LR04_Wertart_Code VON LR_LETZTRISIKO MIT AI_Letztrisiko_ID == LR_id_aufzulösen(i)
	transfer_wert = SELEKTIERE Wert VON LR_LETZTRISIKO MIT MIT AI_Letztrisiko_ID == LR_id_aufzulösen(i)
 
	summe_zerlegungen_wert = 0
 	//Bei der Zerlegung werden nur aktivseitige GF oder SK selektiert
	gf_zerlegungen = SELEKTIERE ALLE GB_Geschaeftsfall_Sachkonto_Beziehung.AI_Geschaeftsfall_ID2 MIT (GB_Geschaeftsfall_Sachkonto_Beziehung.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND 	(GB_Geschaeftsfall_Sachkonto_Beziehung.GB01_Beziehungsart_Code == "Zerlegung") UND (((GFA171_Bilanzseite_IFRS_Code VON GF MIT GF_ID = AI_Geschaeftsfall_ID2) = "AKT") ODER (GFA109_Bilanzseite_local_GAAP_Code VON GF MIT GF_ID = AI_Geschaeftsfall_ID2) = "AKT") ODER((GF132_Bilanzposition_local_GAAP_Code VON GF MIT GF_ID = AI_Geschaeftsfall_ID2) ENTHAELT ("A1","A2","A3","A4","A5","A6","A7","A8"))
	sk_zerlegungen = SELEKTIERE ALLE GB_Geschaeftsfall_Sachkonto_Beziehung.AI_Sachkonto_ID MIT (GB_Geschaeftsfall_Sachkonto_Beziehung.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GB_Geschaeftsfall_Sachkonto_Beziehung.GB01_Beziehungsart_Code == "Zerlegung") ODER ((SK12_Bilanzposition_local_GAAP_Code VON SK MIT SK_ID = AI_Sachkonto_ID) ENTHAELT ("A1","A2","A3","A4","A5","A6","A7","A8"))

	WENN( gf_zerlegungen != LEER ODER sk_zerlegungen != LEER) DANN

		ITERIERE j VON 1 bis Anzahl(gf_zerlegungen)
    			summe_zerlegungen_wert = summe_zerlegungen_wert + Wert VON (GF MIT (AI_Geschaeftsfall_ID == gf_zerlegungen (j)) UND (AI_Wertart_Code == Wertart UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
  		ENDE ITERATION
  
  		ITERIERE j VON 1 bis Anzahl(sk_zerlegungen)

			summe_zerlegungen_wert = summe_zerlegungen_wert + SELEKTIERE Wert VON (SK MIT (AI_Sachkonto_ID == sk_zerlegungen(j)) UND (AI_Wertart_Code == Wertart UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
  		ENDE ITERATION
  		// Der Geschäftsfall mit der Identnummer LR_id_aufzulösen (i) kann in Anzahl(gf_zerlegungen) Geschäftsfälle zerlegt werden. Lösche den Geschäftsfall mit der ID LR_id_aufzulösen(i) aus 		LR_Letztrisiko und ersetzte den Datensatz durch  Anzahl(gf_zerlegungen) Datensatz/Datensätze. Anschließend erfolgt das selbe Prozedere für Sachkonten.
   		ITERIERE j VON 1 bis Anzahl(gf_zerlegungen)
			//die Beziehung referenziert nicht auf Sachkonto, sondern auf einen Geschäftsfall
			wert_gf = Wert VON (GF MIT (AI_Geschaeftsfall_ID == gf_zerlegungen (j)) UND (AI_Wertart_Code == Wertart UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
			lt_einheit = AI_Einheitennummer_ID VON KR_Kundenrollen VON (GF MIT AI_Geschaeftsfall_ID == gf_zerlegungen(j)) MIT (KR_Kundenrollen.AI_Rolle_Code == "Inhaber")    
			lt_einheit =  UPDATE_HSZS_LR(lt_einheit) //überprüft ob die Einheit eine Zweigstelle ist
			lt_sektor = ABLEITUNG_LETZTRISIKO_Sektor(lt_einheit)
			lt_land = ABLEITUNG_LETZTRISIKO_LAND(lt_einheit)
			
			NEUER_LR_DATENSATZ(AI_Geschaeftsfall_ID = FIND_ORIGINAL_ID(LR_gf_aufzulösen),LR00_GF_ID = lt_neue_id, LR01_Land_Code = lt_land, LR02_Sektor_Code = lt_sektor,
 			LR03_Einheitennummer_ID = lt_einheit, LR04_Wertart_Code = Wertart, LR06_Art_des_Risikotransfers_Code = "Lookthrough (LT)", Wert = transfer_wert *
			(wert_gf/summe_zerlegungen_wert))
			//Neuer Datensatz wird mit zerlegter AI_Geschaeftsfall_ID markiert, diese Datensätze könnten (eventuell) noch weiter aufgelöst werden.

		ENDE INTERATION

		//ITERATION FÜR SACHKONTEN
		ITERIERE j VON 1 bis Anzahl(sk_zerlegungen)
			wert_gf = Wert VON (SK MIT (AI_Sachkonto_ID == sk_zerlegungen (j)) UND (AI_Wertart_Code == Wertart UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
			lt_neue_id = NULL
			sk_kategorie = SELEKTIERE SK00_Sachkontokategorie_Code von SK_Sachkonto mit AI_Sachkonto_ID = sk_zerlegungen(j)
			//je nach Sachkontenkategorie erfolgt die Bestimmung des des Landes/Sektors unterschiedlich
			WENN (sk_kategorie == "BR1" ODER sk_kategorie == "BR2" ODER sk_kategorie == "BR3") DANN
				lt_waehrung = SELEKTIERE SK03_Waehrung_Code von SK_Sachkonto mit AI_Sachkonto_ID = sk_zerlegungen(j)
				lt_land = ABLEITUNG_Land_zu_Waehrung(lt_waehrung) //bestimme das Land zur Waehrung
				lt_sektor = "1210" //Zentralbanken
				lt_einheit = NULL
			NEUER_LR_DATENSATZ(AI_Geschaeftsfall_ID = FIND_ORIGINAL_ID(LR_gf_aufzulösen),LR00_GF_ID = lt_neue_id, LR01_Land_Code = lt_land, LR02_Sektor_Code = lt_sektor,
			LR03_Einheitennummer_ID = lt_einheit, LR04_Wertart_Code = Wertart, LR06_Art_des_Risikotransfers_Code = "Lookthrough (LT)", Wert = transfer_wert *
			(wert_gf/summe_zerlegungen_wert))

		ENDE ITERATION
  		//Lösche alten Datensatz aus der LR_Letztrisiko Entität, da dieser vollständig zerlegt wurde
   		LOESCHE_DATENSATZ(AI_Letztrisiko_ID = LR_id_aufzulösen(i), LR_Letztrisiko)
  	ENDE //Ende Bedingung gibt es GF oder SK Zerlegungen?
ENDE ITERATION //Iteration über zerlegbare GF-Wertart Kombinationen
FUNKTIONSENDE
 
FUNKTION UPDATE_UNDERLYING_LR(LR_gf_aufzulösen, Wertart)
//Soweit der Geschäftsfall der über LR_gf_aufzulösen identifiziert wird, Underlying-Geschäftsfälle hat, werden die Nominalwerte der Underlying-Geschäftsfälle als Risikotransfer auf den ursprünglichen Geschäftsfall gesehen.
//Übergeben wird der Funktion der ggf. aufzulösende Geschäftsfall und ggf. eine Wertart (kann auch leer sein)
//Wird auf eine Wertart eingeschränkt, dann wird nur diese Wertart auf das Underlying aufgelöst, erfolgt keine Einschränkung auf eine Wertart, wird die zur Verfügung stehende Wertart automatisch erkannt.
//Diese Unterscheidung zwischen automatischer/übergebener Wertart ist notwendig um bei begebenen Kreditderivaten nicht auch den Marktwert nach dem Underlying aufzulösen, sondern lediglich den als Nominale dargestellten Garantieteil des Kreditderivats. In anderen Fällen (z.B. CLN) wird die Wertart automatisch übernommen.
ul_zum_gf = SELEKTIERE ALLE GB.AI_Geschaeftsfall_ID2 MIT(GB.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GB.GB01_Beziehungsart_Code == "Underlying")
	WENN(ISTLEER(ul_zum_gf) == FALSCH) DANN    
  		//Der betrachtete Geschäftsfall hat Underlyings
  		WENN (ISTLEER(Wertart) ) DANN //wurde eine Wertart übergeben? 
   			//es wurde keine Wertart übergeben, deswegen wird die Wertart des GF selektiert, Zinsabgrenzungen sind hierbei auszuschließen
   			Wertart = SELEKTIERE LR04_Wertart_Code VON LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen UND LR04_Wertart_Code != "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)" UND LR04_Wertart_Code != "Zinsabgrenzung Soll sonstige (Kundensicht)"
  		 	LR_id_aufzulösen = SELEKTIERE AI_Letztrisiko_ID VON LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen UND LR04_Wertart_Code = Wertart
  		SONST
  			LR_id_aufzulösen = SELEKTIERE AI_Letztrisiko_ID VON LR_LETZTRISIKO MIT LR00_GF_ID == LR_gf_aufzulösen UND LR04_Wertart_Code == Wertart
 	 	ENDE
		wert_gf = SELEKTIERE Wert VON LR_LETZTRISIKO MIT AI_Letztrisiko_ID == LR_id_aufzulösen  //Wert des Geschäftsfalles
		transfer_zinsabgrenzung_a = 0
		transfer_zinsabgrenzung_s = 0
		zinsabgrenzung_a = 0
		zinsabgrenzung_s = 0
		WENN( Wertart == "Ausstehender Nominalwert") DANN
			//Gibt es eine Zinsabgrenzung aus Agio/Disagio die ebenfalls übertragen werden muss?
 			zinsabgrenzung_a = SELEKTIERE Wert von LR_LETZTRISIKO MIT LR00_GF_ID = LR_gf_aufzulösen und LR04_Wertart_Code == "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)"  
			WENN ( ISTLEER(zinsabgrenzung_a) ) DANN
  				//Es gibt keine Zinsabgrenzung
				zinsabgrenzung_a = 0
   			SONST
  				zinsabgrenzung_a_id = SELEKTIERE AI_Letztrisiko_ID von LR_LETZTRISIKO MIT LR00_GF_ID = LR_gf_aufzulösen und LR04_Wertart_Code == "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)"
			ENDE
			//Gibt es eine sonstige Zinsabgrenzung die ebenfalls übertragen werden muss?
 			zinsabgrenzung_s = SELEKTIERE Wert von LR_LETZTRISIKO MIT LR00_GF_ID = LR_gf_aufzulösen und LR04_Wertart_Code == "Zinsabgrenzung Soll sonstige (Kundensicht)"  
			WENN ( ISTLEER(zinsabgrenzung_s) ) DANN
  				//Es gibt keine Zinsabgrenzung
				zinsabgrenzung_s = 0
   			SONST
  				zinsabgrenzung_s_id = SELEKTIERE AI_Letztrisiko_ID von LR_LETZTRISIKO MIT LR00_GF_ID = LR_gf_aufzulösen und LR04_Wertart_Code == "Zinsabgrenzung Soll sonstige (Kundensicht)"
			ENDE
		ENDE
		zinsabgrenzung = zinsabgrenzung_a + zinsabgrenzung_s

  		summe_nominalwert_aller_underlyings = SUMME(Wert VON GFW_Geschaeftsfall_Wert VON ul_zum_gf MIT (AI_Wertart_Code == "Nominale"))//Summiere die Nominalen aller Underlyings zum Geschäftsfall
  
		WENN (summe_nominalwert_aller_underlyings < (wert_gf + zinsabgrenzung) ) DANN
          		//Im Falle, dass die Summe der Underlying Nominalwerte geringer sind als der Wert des GF (ONA+ZS)
			//bleibt der Ursprüngliche Datensatz erhalten, allerdings wird dessen relevanter Wert um Summe_Nominalwert_Underlyings reduziert
   			WENN (zinsabgrenzung == 0 ODER (summe_nominalwert_aller_underlyings < wert_gf) ) DANN
				transfer_wert = summe_nominalwert_aller_underlyings   
				AENDERE_DATENSATZ(AI_Letztrisiko_ID = LR_id_aufzulösen, Wert = (wert_gf - transfer_wert), LR00_GF_ID = NULL)  //Achtung: Es werden nur jene Datensätze mit der Wertart = Nominale geändert, dies bedeutet, dass der MW des selben Derivates NICHT davon betroffen sind.
					//Im Falle einer Zinsabgrenzung wäre diese beim Risikotransfer zu ignorieren, da die Summe der Underlyings geringer ist als der Wert des ursprünglichen Geschäftsfalles (ohne ZS). Die LR00 der ZS, muss dennoch auf Null gesetzt werden, damit sie nicht weiter aufgelöst wird
				WENN(zinsabgrenzung_a != 0) DANN
 					AENDERE_DATENSATZ(AI_Letztrisiko_ID = zinsabgrenzung_a_id, LR00_GF_ID = NULL)  
				ENDE
				WENN(zinsabgrenzung_s != 0) DANN
 					AENDERE_DATENSATZ(AI_Letztrisiko_ID = zinsabgrenzung_s_id, LR00_GF_ID = NULL)  
				ENDE
   			SONST
    			//der ursprüngliche Datensatz mit der Haupt-Wertart wird vollständig durch den Risikotransfer abgedeckt, jedoch ist die Zinsabgrenzung teilweise vom Risikotransfer betroffen.
            	LOESCHE_DATENSATZ(AI_Letztrisiko_ID = LR_id_aufzulösen)
    			transfer_wert = wert_gf

				transfer_zinsabgrenzung_a = (summe_nominalwert_aller_underlyings - wert_gf) * zinsabgrenzung_a / zinsabgrenzung 
				transfer_zinsabgrenzung_s = (summe_nominalwert_aller_underlyings - wert_gf) * zinsabgrenzung_s / zinsabgrenzung 

   				// der Fall, dass die effektive zinsabgrenzung größer ist als die zinsabgrenzung wurde ausgeschlossen, da summe_nominalwert_aller_underlyings – wert_gf < zinsabgrenzung (siehe WENN oben)
				AENDERE_DATENSATZ(AI_Letztrisiko_ID = zinsabgrenzung_a_id, Wert = (zinsabgrenzung_a - transfer_zinsabgrenzung_a), LR00_GF_ID = NULL)  
				AENDERE_DATENSATZ(AI_Letztrisiko_ID = zinsabgrenzung_s_id, Wert = (zinsabgrenzung_s - transfer_zinsabgrenzung_s), LR00_GF_ID = NULL)  

			ENDE
		SONST
          	//Der ursprüngliche Datensatz wird gelöscht, für jedes Underlying wird ein eigener Datensatz zum Nominalwert erzeugt
           	LOESCHE_DATENSATZ(AI_Letztrisiko_ID = LR_id_aufzulösen)
   			transfer_wert = wert_gf
   		WENN(zinsabgrenzung_a != 0) DANN //Zinsabgrenzung aus Agio/Disagio ebenfalls löschen
            	LOESCHE_DATENSATZ(AI_Letztrisiko_ID = zinsabgrenzung_a_id)
    			transfer_zinsabgrenzung_a = zinsabgrenzung_a
		ENDE
   		WENN(zinsabgrenzung_s != 0) DANN //Zinsabgrenzung sonstige ebenfalls löschen
            	LOESCHE_DATENSATZ(AI_Letztrisiko_ID = zinsabgrenzung_s_id)
    			transfer_zinsabgrenzung_s = zinsabgrenzung_s
   		ENDE
  	ENDE
	ITERIERE i VON 1,Anzahl(ul_zum_gf)//Iteration über alle Underlyings   
		ul_wert = Wert VON GFW MIT (AI_Geschaeftsfall_ID == ul_zum_gf(i)) UND (AI_Wertart_Code == "Nominale" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")aliquoter_ul_wert = transfer_wert * ul_wert / summe_nominalwert_aller_underlyings)
		aliquote_zinsabgrenzung_a = transfer_zinsabgrenzung_a * (ul_wert / summe_nominalwert_aller_underlyings)
		aliquote_zinsabgrenzung_s = transfer_zinsabgrenzung_s * (ul_wert / summe_nominalwert_aller_underlyings)
		ul_einheit = AI_Einheitennummer_ID VON KR_Kundenrollen VON ul_zum_gf(i) MIT (KR_Kundenrollen.AI_Rolle_Code == "Inhaber")
		ul_einheit =  UPDATE_HSZS_LR(ul_einheit)//überprüfe ob die Einheit eine Zweigstelle ist 
		ul_land = ABLEITUNG_LETZTRISIKO_LAND(lt_einheit)
		
		NEUER_LR_DATENSATZ(AI_Geschaeftsfall_ID = FIND_ORIGINAL_ID(ul_zum_gf(i)), LR00_GF_ID = ul_zum_gf(i), LR01_Land_Code = ul_land, LR02_Sektor_Code = ul_sektor,
		LR03_Einheitennummer_ID = ul_einheit, LR04_Wertart_Code = Wertart, LR06_Art_des_Risikotransfers_Code = "Underlying (UL)", Wert = aliquoter_ul_wert)
		WENN(aliquote_zinsabgrenzung_a != 0) DANN
			NEUER_LR_DATENSATZ(AI_Geschaeftsfall_ID = FIND_ORIGINAL_ID(ul_zum_gf(i)), LR00_GF_ID = ul_zum_gf(i), LR01_Land_Code = ul_land, LR02_Sektor_Code = ul_sektor,
			LR03_Einheitennummer_ID = ul_einheit, LR04_Wertart_Code = "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)", LR06_Art_des_Risikotransfers_Code = "Underlying (UL)",
			Wert = aliquote_zinsabgrenzung_a)
		ENDE

		WENN(aliquote_zinsabgrenzung_s != 0) DANN
			NEUER_LR_DATENSATZ(AI_Geschaeftsfall_ID = FIND_ORIGINAL_ID(ul_zum_gf(i)), LR00_GF_ID = ul_zum_gf(i), LR01_Land_Code = ul_land, LR02_Sektor_Code = ul_sektor,
			LR03_Einheitennummer_ID = ul_einheit, LR04_Wertart_Code = "Zinsabgrenzung Soll sonstige (Kundensicht)", LR06_Art_des_Risikotransfers_Code = "Underlying (UL)",
			Wert = aliquote_zinsabgrenzung_s)
		ENDE

	ENDE ITERATION

ENDE //Underlying Bedingung
FUNKTIONSENDE
 
FUNKTION UPDATE_SICHERHEITEN_LR(LR_gf_aufzulösen)
alle_sicherheitenzerlegungen = SELEKTIERE ALLE SZ VON GE VON GF MIT (GF.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (SZ.AI_Zerlegungsansatz_Code == "CoRep")
//Im Fall, dass der Geschäftsfall nicht besichert ist, kann die Funktion abgebrochen werden.
WENN(ISTLEER(alle_sicherheitenzerlegungen) == FALSCH) DANN //Der Geschäftsfall ist besichert
 	//Wert des Geschäftsfalles hängt von der betrachteten Geschäftsfallkategorie ab
	wpklass = SELEKTIERE WMA28_Wertpapierklassifikation_Code VON WM VON GF MIT (GF.AI_geschaeftsfall_ID == LR_gf_aufzulösen)
 	gfk = SELEKTIERE GF00_Geschaeftsfallkategorie_Code VON GF MIT (GF.AI_Geschaeftsfall_ID == LR_gf_aufzulösen)
  	wert_rahmen = Wert VON GFW MIT (GFW.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GFW.AI_Wertart_Code == "Unwiderruflicher Kreditrahmen" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
  
	wert_gf = SELEKTIERE Wert VON GFW MIT (GFW.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GFW.AI_Wertart_Code == "Ausstehender Nominalwert")
	wertart_gf = "Ausstehender Nominalwert"//Annahme: Es wird grundsätzlich davon ausgegangen, dass der Ausstehende Nominalwert besichert ist. 
	
	WENN (gfk == "Anteilsrechte nicht in Form von Wertpapieren" || wpklass ENTHAELT NICHT ("Schuldverschreibungen", "Credit Linked Note", "Verbriefungstranchen")) DANN
   		// Ausnahme, in der nicht der Ausstehende Nominalwert als Wert des Geschäftsfalles herangezogen wird
   		wert_gf = SELEKTIERE Wert VON GFW MIT (GFW.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GFW.AI_Wertart_Code == "Buchwert" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
   		wertart_gf = "Buchwert"
  	ENDE
  	WENN (gfk == "Außerbilanzielle Geschaefte gem. Anhang I CRR (exkl. Kreditderivate, Kreditzusagen)") DANN
   		// Ausnahme, in der nicht der Buchwert/Ausstehende Nominalwert als Wert des Geschäftsfalles herangezogen wird
   		wert_gf = SELEKTIERE Wert VON GFW MIT (GFW.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GFW.AI_Wertart_Code == "Nominale" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
   		wertart_gf = "Nominale"
  	ENDE
	WENN (gfk == "Derivate") DANN
		//Wichtig: Aufgrund der Struktur der Schleife in der Hauptfunktion können in diesem Teil bei Derivaten nur entweder die Wertarten Nominale oder Marktwert auftreten, nicht jedoch beide gleichzeitig (die Nominale wäre in diesem Fall schon dem Underlying zugeordnet worden)
		wertart_gf = SELEKTIERE LR04_Wertart_Code VON LR_LETZTRISIKO MIT (LR00_GF_ID == LR_gf_aufzulösen)
		wert_gf = SELEKTIERE Wert VON GFW MIT (GFW.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GFW.AI_Wertart_Code == wertart_gf UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
  	ENDE
 
  	wert_besicherung = 0
  	ITERIERE j VON 1,Anzahl(alle_sicherheitenzerlegungen)
		wert_besicherung = wert_besicherung + Wert VON SZW_Sicherheiten_Zerlegungs_Wert MIT (SZW_Sicherheiten_Zerlegungs_Wert.AI_Exposure_ID == alle_sicherheitenzerlegungen(j).AI_Exposure_ID UND SZW_Sicherheiten_Zerlegungs_Wert.AI_Sicherheiten_ID == alle_sicherheitenzerlegungen(j).AI_Sicherheiten_ID UND SZW_Sicherheiten_Zerlegungs_Wert.AI_Wertart_Code == "anrechenbarer Wert der Sicherheit")
  	ENDE ITERATION
  	wert_zinsforderung_a = Wert VON GFW MIT (GFW.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GFW.AI_Wertart_Code == "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
    wert_zinsforderung_s = Wert VON GFW MIT (GFW.AI_Geschaeftsfall_ID == LR_gf_aufzulösen) UND (GFW.AI_Wertart_Code == "Zinsabgrenzung Soll sonstige (Kundensicht)" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")

  	WENN (wert_besicherung >= wert_gf) DANN
   		//Vollbesichert: Wenn besicherter Betrag dem Wert des zugrundeliegenden Geschäftsfalles entspricht, lösche Datensatz aus LR_Letztrisiko, die Identifikation des Datensatzes erfolgt über seine AI_Letztrisiko_ID, welche diesen eindeutig identifiziert.
   		LOESCHE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, wertart_gf)
   		wert_gf_besichert = wert_gf //Teil des Geschäftsfalles, der besichert ist
		wert_uebersicherung =  wert_besicherung - wert_gf //überbesicherung geht automatisch in die Zinsforderungen/rahmen
  	SONST
		wert_gf_unbesichert = (wert_gf - wert_besicherung)//Jener Bruchteil des Wertes, welcher besichert ist 
		//Reduziere den Geschäftsfall um den besicherten Betrag. Dieser Datensatz entspricht den unbesicherten Anteil. Dieser Datensatz ist nun nicht weiter auslösbar.    
		AENDERE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, wertart_gf, Wert = wert_gf_unbesichert) 
		wert_gf_besichert = wert_besicherung //wert, der für den geschäftsfall besichert ist
		wert_uebersicherung = 0 //ueberbesicherung ist 0
  	ENDE //Vollbesichert Bedingung
	wert_effektive_zinsforderung = 0
  	//Zinsforderung
  	//Behandlung von Zinsforderungen – Diese sind noch vor dem Rahmen abzuhandeln
	WENN ((wert_zinsforderung_a + wert_zinsforderung_s) != 0 UND (NICHT(ISTLEER(wert_zinsforderung_a)) ODER NICHT(ISTLEER(wert_zinsforderung_s))) UND wert_uebersicherung > 0 )
		//es gibt eine Zinsforderung und eine Überbesicherung, die es zu behandeln gillt

   		WENN (wert_uebersicherung >=  wert_zinsforderung_a + wert_zinsforderung_s) DANN //auch die Zinsforderungen ist vollstaendig besichert, diese erfährt einen vollständigen Risikotransfer
    			LOESCHE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)")
    			LOESCHE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, "Zinsabgrenzung Soll sonstige (Kundensicht)")
				wert_effektive_zinsforderung_a = wert_zinsforderung_a
				wert_effektive_zinsforderung_s = wert_zinsforderung_s
    			wert_uebersicherung = wert_uebersicherung - wert_zinsforderung_a - wert_zinsforderung_s //korrigiere den Wert der Ueberbesicherung um den Wert der Zinsforderung
   		SONST WENN(uebersicherung > 0)
    			//Die Zinsforderung ist nur zum Teil besichert
    			// Fall : wert_uebersicherung < rahmen_geschaeftsfall
    			wert_nichtbes_zinsforderung_a = (wert_zinsforderung_a - wert_uebersicherung * wert_zinsforderung_a / (wert_zinsforderung_a + wert_zinsforderung_s))
    			wert_nichtbes_zinsforderung_s = (wert_zinsforderung_s - wert_uebersicherung * wert_zinsforderung_s / (wert_zinsforderung_a + wert_zinsforderung_s))
    			wert_effektive_zinsforderung_a = wert_uebersicherung * wert_zinsforderung_a / (wert_zinsforderung_a + wert_zinsforderung_s) //besicherte Zinsforderung
				wert_effektive_zinsforderung_s = wert_uebersicherung * wert_zinsforderung_s / (wert_zinsforderung_a + wert_zinsforderung_s) //besicherte Zinsforderung
    			//Aendere Datensatz - reduziere den nichtbesicherten Rahmen um den besicherten Anteil
    			AENDERE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)", Wert = wert_nichtbes_zinsforderung_a)//Reduziere den entsprechnden Zinsforderungs-Datensatz
    			AENDERE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, "Zinsabgrenzung Soll sonstige (Kundensicht)", Wert = wert_nichtbes_zinsforderung_s)//Reduziere den entsprechnden Zinsforderungs-Datensatz
			wert_uebersicherung = 0// Die Ueberbesicherung ist mit der Zinsforderung aufgebraucht
   		ENDE

	ENDE //Zinsforderung wurde abgehandelt
  
	wert_effektiver_rahmen = 0//Rahmen der einen LR erfährt 
	//Unwiderruflicher Kreditrahmen:
	//Behandlung des unwiderruflichen Kreditrahmens
	WENN (wert_rahmen != 0 UND ISTLEER(wert_rahmen) == FALSCH UND wert_uebersicherung > 0)
		//es gibt einen Rahmen und eine Überbesicherung, die es zu behandeln gillt
   
   		WENN (wert_uebersicherung >=  wert_rahmen) DANN //auch der Rahmen ist vollstaendig besichert, dieser erfährt einen vollständigen Risikotransfer
    			LOESCHE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, "Unwiderruflicher Kreditrahmen")         wert_effektiver_rahmen = wert_rahmen
   		SONST
    			//Der Rahmen ist nur zum Teil besichert
    			// Fall : wert_uebersicherung < rahmen_geschaeftsfall
    			wert_nichtbes_rahmen = (wert_rahmen-wert_uebersicherung)
    			wert_effektiver_rahmen = wert_uebersicherung//besicherter Rahmen
    			//Aendere Datensatz - reduziere den nichtbesicherten Rahmen um den besicherten Anteil
    			AENDERE_DATENSATZ_VIA_LR_GFID(LR_gf_aufzulösen, "Unwiderruflicher Kreditrahmen", Wert = wert_nichtbes_rahmen)//Reduziere den entsprechenden Datensatz
		ENDE

	ENDE //Ende Rahmen
  
	ITERIERE j VON 1,Anzahl(alle_sicherheitenzerlegungen) //Iteriere über alle alle_Sicherheitenzerlegungen
		sicherheit = ST VON alle_sicherheitenzerlegungen(j) //Anmerkung: Jeder konkreten Sicherheitenzerlegung ist genau eine Sicherheit zugeordnet
   		sicherheiten_wert = Wert VON SZW_Sicherheiten_Zerlegungs_Wert MIT (SZW_Sicherheiten_Zerlegungs_Wert.AI_Exposure_ID == alle_sicherheitenzerlegungen(j).AI_Exposure_ID UND 				SZW_Sicherheiten_Zerlegungs_Wert.AI_Sicherheiten_ID == alle_sicherheitenzerlegungen(j).AI_Sicherheiten_ID UND SZW_Sicherheiten_Zerlegungs_Wert.AI_Wertart_Code == "anrechenbarer Wert der 		Sicherheit" UND AI_Wertmesseinheit_Code == "Euro-Gegenwert")
   		wert_aliquote_sicherheit = wert_gf_besichert*(sicherheiten_wert/wert_besicherung)   gewicht = sicherheiten_wert/wert_besicherung
   		sicherheiten_einheit = AI_Einheitennummer_ID VON EM VON KR VON ST MIT (KR.AI_Rolle_Code == "Der Sicherheit zugeordnete Einheit")//Der Sicherheit zugeordnete Einheit
   		sicherheiten_einheit = UPDATE_HSZS_LR(sicherheiten_einheit)//überprüfe ob die Einheit eine Zweigstelle ist, wenn ja überschreibe einheit    
    	s_land = ABLEITUNG_LETZTRISIKO_LAND(sicherheiten_einheit)
		sicherheiten_kategorie = ST03_Sicherheitenkategorie_Code VON Sicherheit
		//Für die Sicherheitenkategorien Wohnimmobilie, Büros und sonstige Gewerberäume, Sonstige Sachsicherheiten und sonstige Sachsicherheit,  wird der Sektor auf „9999 – Nicht zuordenbar“ gesetzt sicherheiten_kategorie = ST03_Sicherheitenkategorie_Code VON sicherheit 
		WENN( sicherheiten_kategorie == "Wohnimmobilie (WI)" ODER sicherheiten_kategorie == "Büros und sonstige Gewerberäume (GB)" ODER sicherheiten_kategorie == "Sonstige Gewerbeimmobilien (SI)" ODER sicherheiten_kategorie == "sonstige Sachsicherheit (SS)" DANN 
 
			s_sektor = "Nicht Zuordenbar" //Erweiterte ESVG-Sektor Ausprägung: Code=9999
   		SONST   //esvg sektor der einheit
    			s_sektor = ABLEITUNG_LETZTRISIKO_Sektor(sicherheiten_einheit)
  		ENDE

		//Besicherung von Zinsforderungen
		WENN (wert_effektive_zinsforderung_a > 0) DANN
    			wert_aliquote_forderung_a = wert_effektive_zinsforderung_a*gewicht
    			NEUER_LR_DATENSATZ(LR00_GF_ID = NULL, LR01_Land_Code = s_land, LR02_Sektor_Code = s_sektor, LR03_Einheitennummer_ID = sicherheiten_einheit, LR04_Wertart_Code = "Zinsabgrenzung Soll aus Agio/Disagio (Kundensicht)", LR06_Art_des_Risikotransfers_Code = sicherheiten_kategorie, Wert = wert_aliquote_forderung_a)
		WENN (wert_effektive_zinsforderung_s > 0) DANN
    			wert_aliquote_forderung_s = wert_effektive_zinsforderung_s*gewicht
				NEUER_LR_DATENSATZ(LR00_GF_ID = NULL, LR01_Land_Code = s_land, LR02_Sektor_Code = s_sektor, LR03_Einheitennummer_ID = sicherheiten_einheit, LR04_Wertart_Code = "Zinsabgrenzung Soll sonstige (Kundensicht)", LR06_Art_des_Risikotransfers_Code = sicherheiten_kategorie, Wert = wert_aliquote_forderung_s)
   		ENDE

   		//Rahmenbesicherung
   		WENN (wert_effektiver_rahmen > 0) DANN //der Geschaeftsfall ist über den Buchwert/Ausstehenden Nominalwert besichert hinaus, die Differenz dient zur Besicherung des unwiderruflichen Rahmens
    			wert_aliquoter_rahmen = wert_effektiver_rahmen*gewicht
    			NEUER_LR_DATENSATZ(LR00_GF_ID = NULL, LR01_Land_Code = s_land, LR02_Sektor_Code = s_sektor, LR03_Einheitennummer_ID = sicherheiten_einheit, LR04_Wertart_Code = "Unwiderruflicher Kreditrahmen", LR06_Art_des_Risikotransfers_Code = sicherheiten_kategorie, Wert = wert_aliquoter_rahmen)
		ENDE
    
				NEUER_LR_DATENSATZ(LR00_GF_ID = NULL, LR01_Land_Code = s_land, LR02_Sektor_Code = s_sektor, LR03_Einheitennummer_ID = sicherheiten_einheit, LR04_Wertart_Code = wertart_gf, LR06_Art_des_Risikotransfers_Code = sicherheiten_kategorie, Wert = wert_aliquote_sicherheit)
	ENDE ITERATION 
   
ENDE //Sicherheitenbedingung
  
FUNKTIONSENDE
  
  • No labels