Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ประเมินความเสี่ยงในการลงทุน (Evaluation of Risk in Investments) ใน C++

โจทย์

ได้รับแผนลงทุน 2 แผน แต่ละแผนมีชุดของ (Outcome, Probability) ทางเราต้อง ประเมินความเสี่ยงและเลือกแผนที่ดียิ่งกว่า

สถิติที่ใช้

  • Mean (Expected Value): Σ(Outcome × Probability)
  • Standard Deviation (S.D.): √[Σ(Outcome - Mean)² × Probability]
  • Coefficient of Variation (CV): S.D. / Mean (ความเสี่ยงต่อผลตอบแทน)

แผนที่มี CV ต่ำกว่า ถือว่าดีกว่า (ความเสี่ยงต่ำกว่าเทียบกับผลตอบแทน)

โปรแกรมตัวอย่าง

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

typedef pair<float,float> Data;
typedef vector<Data> Vector;

float totalProdProbOutcome(const Vector& v) {
    float sum = 0;
    for (auto i : v) sum += i.first * i.second;
    return sum;
}

float totalProb(const Vector& v) {
    float sum = 0;
    for (auto i : v) sum += i.second;
    return sum;
}

float CalcMeanVal(const Vector& v) {
    return totalProdProbOutcome(v) / totalProb(v);
}

float calcStdDevi(const Vector& v) {
    float mean = CalcMeanVal(v);
    float sum = 0;
    for (auto i : v) sum += (i.first - mean) * (i.first - mean) * i.second;
    return sqrt(sum / totalProb(v));
}

int main() {
    Vector A = {{450,0.3}, {250,0.4}, {100,0.2}, {300,0.1}};
    Vector B = {{300,0.2}, {150,0.5}, {500,0.3}};
    float meanA = CalcMeanVal(A), meanB = CalcMeanVal(B);
    float SdA = calcStdDevi(A), SdB = calcStdDevi(B);
    if ((SdA / meanA) > (SdB / meanB))
        cout << "Investment A is Better investment.\n";
    else
        cout << "Investment B is better investment.\n";
    return 0;
}

ผลลัพธ์

Investment B is better investment.