summaryrefslogtreecommitdiffstats
path: root/Master/Modellbildung_und_Simulation/Aufgabenblatt2/Aufgabe2und3/src/Parametrisation.h
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Master/Modellbildung_und_Simulation/Aufgabenblatt2/Aufgabe2und3/src/Parametrisation.h
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Modellbildung_und_Simulation/Aufgabenblatt2/Aufgabe2und3/src/Parametrisation.h')
-rw-r--r--Master/Modellbildung_und_Simulation/Aufgabenblatt2/Aufgabe2und3/src/Parametrisation.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/Master/Modellbildung_und_Simulation/Aufgabenblatt2/Aufgabe2und3/src/Parametrisation.h b/Master/Modellbildung_und_Simulation/Aufgabenblatt2/Aufgabe2und3/src/Parametrisation.h
new file mode 100644
index 0000000..337442e
--- /dev/null
+++ b/Master/Modellbildung_und_Simulation/Aufgabenblatt2/Aufgabe2und3/src/Parametrisation.h
@@ -0,0 +1,160 @@
+/*
+ * Parametrisation.h
+ *
+ * Created on: 13.05.2011
+ * Author: sven
+ */
+
+#ifndef PARAMETRISATION_H_
+#define PARAMETRISATION_H_
+
+#include <vector>
+#include <map>
+#include <string>
+
+enum enCompany
+{
+ nenDaimler = 0,
+ nenDeuBa,
+ nenFMC,
+ nenRWE,
+ nenSolarWorld,
+
+ // must be last entry
+ nenEndOfCompanies
+};
+
+enum enHoldingTime
+{
+ nenOneDay = 1,
+ nenTenDays = 10
+};
+
+struct Stock
+{
+ double mValue;
+ double mValueRelChangeOne;
+ double mValueRelChangeTen;
+ Stock()
+ :mValue(-99999999.9),mValueRelChangeOne(-99999999.9),mValueRelChangeTen(-99999999.9)
+ {}
+ void calcRelChange(const Stock& prev, const enHoldingTime& holdingTime)
+ {
+ switch (holdingTime)
+ {
+ case nenOneDay:
+ mValueRelChangeOne = ((mValue - prev.mValue) / prev.mValue) * 100.0;
+ break;
+ case nenTenDays:
+ mValueRelChangeTen = ((mValue - prev.mValue) / prev.mValue) * 100.0;
+ break;
+ default:
+ break;
+ }
+
+ }
+};
+
+struct StockPrices
+{
+ StockPrices()
+ :mStock(nenEndOfCompanies) {}
+ std::string mDate;
+ unsigned mDayIdx;
+ std::vector<Stock> mStock;
+ void calcRelChanges(const StockPrices& prevDay, const enHoldingTime& holdingTime)
+ {
+ for (unsigned c = static_cast<unsigned>(nenDaimler) ; c < static_cast<unsigned>(nenEndOfCompanies); c++) {
+ mStock.at(c).calcRelChange(prevDay.mStock.at(c), holdingTime);
+ }
+ }
+};
+
+
+struct ArithAverages{
+ double mArithAverOneDay;
+ double mArithAverTenDays;
+ ArithAverages()
+ :mArithAverOneDay(0.0),mArithAverTenDays(0.0) {}
+};
+
+
+typedef std::vector< std::vector<double> > CovarianceMatrix;
+typedef CovarianceMatrix CorrelationMatrix;
+
+
+class Parametrisation {
+public:
+ Parametrisation();
+ virtual ~Parametrisation();
+ void readCsvFile();
+ void calcRelChanges(const enHoldingTime& holdingTime);
+ void calcArithAverageVectors();
+ void calcCovarianceMatrices();
+ void calcCorrelationMatrices();
+
+ double getLastValue(const enCompany& comp) const
+ {
+ return mLastYearData.back().mStock.at(comp).mValue;
+ }
+
+ const CovarianceMatrix& getCovarianceMatrix(const enHoldingTime& holdingTime) const
+ {
+ switch (holdingTime)
+ {
+ case nenOneDay:
+ //return mCorrelationMatrixOneDay;
+ return mCovarinaceMatrixOneDay;
+ case nenTenDays:
+ //return mCorrelationMatrixTenDays;
+ return mCovarinaceMatrixTenDays;
+ default:
+ throw 17 ;
+ }
+ }
+ void getArithAverages(std::vector<double>& mu, const enHoldingTime holdingTime) const
+ {
+ unsigned c;
+ switch(holdingTime)
+ {
+ case nenOneDay:
+ for (c = nenDaimler; c < nenEndOfCompanies; c++)
+ {
+ mu.at(c) = mArithAverageVectors.at(c).mArithAverOneDay;
+ }
+ return;
+ case nenTenDays:
+ for (c = nenDaimler; c < nenEndOfCompanies; c++)
+ {
+ mu.at(c) = mArithAverageVectors.at(c).mArithAverTenDays;
+ }
+ return;
+ default:
+ throw 17;
+ }
+ }
+ const std::vector<StockPrices>& getStockPrices() const
+ {
+ return mLastYearData;
+ }
+private:
+ const static char* msInputFilename;
+ std::vector< StockPrices > mLastYearData;
+ std::vector<ArithAverages> mArithAverageVectors;
+ std::vector<double> mStandardDeviationsOneDay;
+ std::vector<double> mStandardDeviationsTenDays;
+ CovarianceMatrix mCovarinaceMatrixOneDay;
+ CovarianceMatrix mCovarinaceMatrixTenDays;
+ CorrelationMatrix mCorrelationMatrixOneDay;
+ CorrelationMatrix mCorrelationMatrixTenDays;
+
+ void tokenize(const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters = ";");
+ double toDouble(const std::string& str);
+ void dumpValues();
+ void dumpRelChanges(const enHoldingTime& holdingTime);
+ void dumpArithAverageVectors();
+ void dumpCovarianceMatrices();
+ void dumpCorrelationMatrices();
+};
+
+#endif /* PARAMETRISATION_H_ */