Matheaufgabe: Risikoanpassung

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Matheaufgabe: Risikoanpassung

Beitrag von Kurzer »

Gestern fragte mich jemand etwas was zunächst wie eine einfache Aufgabe aussah, aber offenbar ist das ganze doch nicht so trivial. Zumindest für mich nicht, denn ich grüble noch immer über eine allgemein anwendbare Lösung nach.

Das ganze kommt aus dem Bereich Glücksspiel und soll eine einfache Risikoberechnung sein.
Wie haben mit Geld zu tun und mit einem Risikofaktor der von der Höhe des Geldbetrags abhängt.

Die Definition besagt:
Bei einer Verdreifachung des eingesetzten Geldbetrags darf sich der Risikofaktor nur verdoppeln.

Folgende Startwerte sind gegeben:
Bei Geld = 500,- Euro ist der Risikofaktor = 0.0100

Die 500 Euro sind damit auch der kleinste Einsatz, da der Risikofaktor nicht kleiner als 0.01 werden kann.

Machen wir also mal ein Beispiel bei dem der Geldbetrag immer verdreifacht wird und das Risiko verdoppelt:

Code: Alles auswählen

Geld  : 500  | 1500  | 4500  | 13500  | 40500
Risiko: 0.01 | 0.02  | 0.04  | 0.08   | 0.16
Die Fragestellung war jetzt wie man für einen x-beliebigen Geldbetrag das zugehörige Risiko brechnen kann.

Ich bin da jetzt nur auf eine Berechnung gekommen die nur innerhalb des Bereichs einer Verdreifachung funktioniert, weil dafür die Rahmenwerte vorhanden sind.

Also ich könnte mit der unten genannten Berechnung das Risiko für alle Beträge zwischen 500,- und 1499,- berechnen. Wollte ich aber z.B. das Risiko für 15690,- Euro berechnen, dann müsste ich wieder in die obige Tabelle gucken, um die Rahmenwerte abzulesen (13500 | 40500 und 0.08 | 0.16).

Da muss es doch irgend eine Formel geben mit der man das ohne diese Rahmenwerte berechnen kann, oder? Würde man das Ganze in ein Koordinatenkreuz übertragen, dann wäre es wohl eine Exponentialfunktion.

Hier noch meine Berechnung für beispielsweise 700,- Euro:

Code: Alles auswählen

EnableExplicit

Define.d Geld, GeldRahmenUnten, GeldRahmenOben, GeldDifferenz, GeldRahmenBereich
Define.d RisikoRahmenUnten, RisikoDifferenzProEuro, Risiko

; Geld  : 500  | 1500  | 4500  | 13500  | 40500
; Risiko: 0.01 | 0.02  | 0.04  | 0.08   | 0.16

Geld = 700 									; Für diesen Betrag berechnen wir das passende Risiko
GeldRahmenUnten = 500				; Wert aus der Tabelle
GeldRahmenOben = 1500				; Wert aus der Tabelle
RisikoRahmenUnten = 0.01		; Wert aus der Tabelle

GeldRahmenBereich = GeldRahmenOben - GeldRahmenUnten
GeldDifferenz = Geld - GeldRahmenUnten
RisikoDifferenzProEuro = RisikoRahmenUnten / GeldRahmenBereich
Risiko = RisikoRahmenUnten + GeldDifferenz * RisikoDifferenzProEuro

Debug "Das Risiko für EUR " + StrD(Geld, 2) + " beträgt: " + StrD(Risiko, 4)

EDIT:

Ich habe nun eine Schleife vorangestellt, die die Geld- und Risikorahmenwerte berechnet.
Das geht zwar ganz gut, aber trotzdem würde mich interessieren, ob man das ganze ganz ohne Schleife mathematisch lösen kann.

Hier nun die aktuelle Version:

Code: Alles auswählen

EnableExplicit

Define.d Geld, GeldRahmenUnten, GeldRahmenOben, GeldDifferenz, GeldRahmenBereich
Define.d RisikoRahmenUnten, RisikoDifferenzProEuro, Risiko
Define.i i

; Geld  : 500  | 1500  | 4500  | 13500  | 40500
; Risiko: 0.01 | 0.02  | 0.04  | 0.08   | 0.16

Geld = 700									; Für diesen Betrag berechnen wir das passende Risiko
GeldRahmenUnten = 500				; Wert aus der Tabelle
GeldRahmenOben = 1500				; Wert aus der Tabelle
RisikoRahmenUnten = 0.01		; Wert aus der Tabelle

For i = GeldRahmenUnten To Geld
	If i = 3 * GeldRahmenUnten
		GeldRahmenUnten * 3
		GeldRahmenOben = 3 * GeldRahmenUnten
		RisikoRahmenUnten * 2
	EndIf
Next i

GeldRahmenBereich = GeldRahmenOben - GeldRahmenUnten
GeldDifferenz = Geld - GeldRahmenUnten
RisikoDifferenzProEuro = RisikoRahmenUnten / GeldRahmenBereich
Risiko = RisikoRahmenUnten + GeldDifferenz * RisikoDifferenzProEuro

Debug "Das Risiko für EUR " + StrD(Geld, 2) + " beträgt: " + StrD(Risiko, 4)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Matheaufgabe: Risikoanpassung

Beitrag von NicTheQuick »

Wenn das Risiko sich verdreifacht, wenn das Geld sich verdoppelt, dann kann man das simpel so ausrechnen. Du hast wahrscheinlich den Logarithmus gesucht.

Code: Alles auswählen

EnableExplicit

Define.d Geld, Risiko

Geld = 4500
Risiko = Pow(2, Log(Geld / 500.0) / Log(3)) * 0.01
Debug "Das Risiko für EUR " + StrD(Geld, 2) + " beträgt: " + StrD(Risiko, 4)
Bild
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Matheaufgabe: Risikoanpassung

Beitrag von Kurzer »

Danke Nic.

Ja, den Logarithmus habe ich dann offenbar gesucht. :allright: Erschreckend einfach, wenn man Deine Lösung sieht. :lol:

Hmm, die Berechnung des umgekehrten Wegs scheint etwas anders zu laufen, denn das hier funktioniert nicht, es kommt zu wenig heraus:

Code: Alles auswählen

EnableExplicit

Define.d Geld, Risiko

Geld = 1500
Risiko = Pow(2, Log(Geld / 500.0) / Log(3)) * 0.01
Debug "Das Risiko für EUR " + StrD(Geld, 2) + " beträgt: " + StrD(Risiko, 4)

Risiko = 0.02
Geld = Pow(2, Log(Risiko / 0.01) / Log(3)) * 500
Debug "Der Betrag für das Risiko von " + StrD(Risiko, 4) + " beträgt: " + StrD(Geld, 2)
; Sollte eigentlich 1500 sein, sind aber nur 774,28 EUR
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Matheaufgabe: Risikoanpassung

Beitrag von NicTheQuick »

Die 2 und die 3 musst du auch vertauschen. Das ist die Sache mit dem Verdoppeln und Verdreifachen.
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Matheaufgabe: Risikoanpassung

Beitrag von Nino »

Kurzer hat geschrieben:Hmm, die Berechnung des umgekehrten Wegs scheint etwas anders zu laufen, denn das hier funktioniert nicht, es kommt zu wenig heraus:
Das ist auch nicht die Umkehrung. :-)

Die geht so:

Code: Alles auswählen

EnableExplicit

Define Geld.d, Risiko.d

Risiko = 0.01
While Risiko <= 0.16
   Geld = Pow(3, Log(Risiko / 0.01) / Log(2)) * 500.0
   Debug StrD(Risiko, 4) + " => " + StrD(Geld, 1)
   Risiko + 0.01
Wend
//edit: NicTheQuick war schneller.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Matheaufgabe: Risikoanpassung

Beitrag von Kurzer »

Vielen Dank euch beiden. :allright:
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Antworten