Ab Version 7.8.3.0 von MC FLO werden Simulationen fakultativ im Arbeitsplatzspeicher des Rechners durchgeführt ("Memory Calculation") und sind so ca. 100x schneller als unter Berücksichtigung der Verknüpfungen von Microsoft Excel. Mit der Memory Calculation sind die Berechnungen sogar schneller als mit Python oder R. Bereits mit Öffnen der Arbeitsmappe wird das Modell geladen und steht sofort für weitere Modellierungsschritte bereit.
Unterstützt werden alle die von MC FLO unterstützten diskreten und stetigen Verteilungen, als auch begrenzte Verteilungen.
Die Eingabe erfolgt mit "=_simula_"Verteilung"_MC(Parameter der Verteilung, Optional Anzahl Zufallszahlen). Ausgabe ist ein Spaltenvektor mit n Zufallszahlen der ausgewählten Verteilung.
Beispiel: =simula_Uniform_MC(1;20;2000) erstellt ein Vektor mit 20'000 Zufallszahlen von gleichverteilten Zahlen zwischen 1 und 20. Wird die optionale Anzahl der Zufallszahlen nicht angegeben, wird automatisch ein Vektor von 30'00 Zufallszahlen ausgegeben. Beachten Sie, dass maximal 1'048'576 Zufallszahlen erzeugt und im Arbeitsblatt ausgegeben werden können, andernfalls wird eine Fehlermeldung zurückgegeben.
Über die zusätzlich verfügbare Funktion "=_simula_calculation_MC(Vector1, Vector2, MMOperation) können Sie Operation auf zwei Vektoren anwenden.
Die möglichen Parameter von MMOperation sind:
"+" : Addiert zeilenweise die jeweiligen Werte der beiden Vektoren
"-": Subtrahiert zeilenweise die jeweiligen Werte der beiden Vektoren
"*": Multipliziert zeilenweise die jeweiligen Werte der beiden Vektoren
"/": Dividiert zeilenweise die jeweiligen Werte der beiden Vektoren, Quotient ist Vector2
"*/+": Multipliziert zeilenweise die jeweiligen Werte der beiden Vektoren und addiert das Ergebnis davon zu Vector1
"*/-": Multipliziert zeilenweise die jeweiligen Werte der beiden Vektoren und subtrahiert das Ergebnis davon von Vector1
"//+": Dividiert zeilenweise die jeweiligen Werte der beiden Vektoren und addiert das Ergebnis davon zu Vector1
"//-": Dividiert zeilenweise die jeweiligen Werte der beiden Vektoren und subtrahiert das Ergebnis davon von Vector1
"Max": Prüft zeilenweise und nimmt jeweils den grössten Wert
"Min": Prüft zeilenweise und nimmt jeweils den kleinsten Wert
"com": Führt eine Faltungsoperation (compounding) der beiden Vektoren durch, wobei "Vector1" die möglichen Werte (Schadenshöhe etc.) und "Vector2" die mögliche Anzahl Ereignisse (Anzahl Schadensfälle etc.) widerspiegeln.
"csme": Kombiniert mehrere Verteilungen zu einer gemeinsamen Verteilung ("combine subject matter experts"). Details können dem Beispiel "Subject_Matter_Experts_MC.xlsx" entnommen werden.
"inc": Erhöht die jeweils um 1 den nächsten Eintrag. Vektor1 entspricht Anzahl, Vektor2 entspricht Beginn - 1. Beispiel: =_simula_calculation_MC(10;0;"inc") erstellt einen Vektor mit 10 Einträgen, beginnend mit 1, also 1,2,3...10.
"const": Erstellt einen Vektor mit einer Konstante, _simula_calculation_MC(10;100;"inc") erstellt einen Vektor mit 10 Einträgen, jeder Eintrag hat den Wert 100.
Für die Operatoren "+" und "*" können statt einem nx1 Vektor1 auch eine nxm Matrix als Vektor 1 übergeben werden. In diesem Fall werden die Werte zeilenweise addiert (bei "+") oder zeilenweise multipliziert (bei "*"). Beispiel _simula_calculation_MC(A2#:T2#; A2#; "+") addiert die zeilenweise die Einträge aus den Spalten A bis T des dynamischen Arrays und gibt die Summe als Resultat der entsprechenden Zeile zurück.
Sie können neben einem Vector auch eine Konstante angeben. MC FLO setzt dann diese Zahl auf den anderen Vector an. _simula_calculation_MC(A2#:10;"+") addiert zu den einzelnen Einträgen des Vektors ab Zeile A2 die Konstante 10. Details können Sie dem Beispiel "Planning_MC.xlsx" entnommen werden.
Beispiel: "=_simula_calculation_MC(_simula_LogNormal_MC(0;10;0.62);_simula_Poisson_MC(5);"com")" führt eine Faltung einer Lognormalverteilung über eine poissonverteilte Häufigkeit durch. Details können dem Beispiel "Compound_Function.xlsx" entnommen werden.
Sie können das Resultat wiederrum als Eingabewert in nativen Microsoft Excel Formeln verwenden, also etwa zur Bildung des Erwartungswert oder die Perzentil Funktion. Details können dem Beispiel "Compound_Function.xlsx" entnommen werden.
Info: Die meisten Operationen, wie Addition oder Subtraktion, können Sie auch mit Microsoft Excel Funktionen durchführen.
Über die Funktion "=_simula_correlation_MC(Vector1, Vector2, CorrCoef, CorrType, Optional DoSort)" können Sie zwei Vektoren mit dem Korrelationskoeffizient "CorrCoef" und dem Korrelationsmuster "CorrType" korrelieren. Ausgabe ist ein nx2 Matrix mit den korrelierten Wertepaaren, wobei n der Anzahl Zufallszahlen entspricht. Falls DoSort = WAHR (1) wird das Ergebnis zusätzlich zur Reihenfolge der Zahlen aus Vektor1 sortiert. Details können dem Beispiel "Compound_Function.xlsx", "Planning_MC.xlsx" und "LatestEstimate_MC.xlsx" entnommen werden.
Die Funktion "=_simula_Bounded_MC(Vector1, LowerBound, UpperBound, Optional Number) beschränkt die mit Vector1 übergebenen Zahlen auf die Grenzen von LowerBound und UpperBound. Beispiel: =simula_Normal_MC(0;2;2000);-1;1) generiert 20000 normalverteilte Zufallsvariablen mit Erwartungswert 0 und Standardabweichung 2, wobei nur Resultate berücksichtigt werden, welche innerhalb der Grenzen von -1 und 1 liegen.
Neben den hier dargestellten, spezifisch für die Memory Calculation zusätzlich erstellten Formeln, gibt es verschiedene MC FLO Formeln, welche für die Memory Calculation Engine ebenfalls zur Verfügung stehen. Mit fMC_BayesClassifier_MC können Sie eine Klassifikation vornehmen, fMC_BootStrapVectorMLRegression_MC erstellt eine lineare, multiple Regression. Alle Formeln, welche mit "_MC" enden, sind für die Memory Calculation Engine optimiert und verfügbar. Rufen Sie eine MC FLO Formel auf (siehe Referenz) und versuchen Sie "_MC" anzuhängen.
Info: Für die Memory Calculation Engine sind keine Eingangs - oder Ausgangsvariablen im klassischen Sinne zu definieren. Sie nehmen stattdessen Referenzen aus den bestehenden Microsoft-Excel Arbeitsmappen als Übergabewerte auf.
Info: Beachten Sie, dass MC FLO für die Memory Calculation "Dynamische Arrays" von Microsoft Excel verwendet. Die "Dynamische Arrays" stehen erst ab Excel 2016 zur Verfügung. Beachten Sie die von Microsoft publizierten Hilfedateien zu diesem Thema.
Memory Calculation unterstützt nicht alle Funktionen von MC FLO. Zudem wird immer eine vollständige Neuberechnung durchgeführt. Um eine Neuberechnung zu umgehen, besteht die Möglichkeit, dass die Vektoren als Zahl und nicht mehr als Funktion in der Arbeitsmappe hinterlegt werden. Sie können dann die einmal kommunizierten Zahlen (etwa den Zielwert) immer wieder reproduzieren.
Zur Erhöhung der Auditfähigkeit empfehlen wir die klassische Herangehensweise zur Durchführung von Monte-Carlo Simulationen, wie im Handbuch beschrieben, anzuwenden.