Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đánh giá rủi ro đầu tư trong C++


Cho hai mảng biểu diễn 2 kế hoạch đầu tư. Nhiệm vụ: đánh giá rủi ro đầu tư chọn kế hoạch tốt hơn.

Mỗi đầu tư có tập kết quả và xác suất. Dùng thống kê:

  • Giá trị kỳ vọng (Mean): Tổng (kết quả * xác suất).
  • Độ lệch chuẩn (Standard Deviation): Đo lường rủi ro.

Chỉ số: Độ lệch chuẩn / Giá trị kỳ vọng. Chỉ số nhỏ hơn => đầu tư tốt hơn (ít rủi ro trên đơn vị lợi nhuận).

Chương trình minh họa

Ví dụ

#include <iostream>
#include <vector>
#include <algorithm>
#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.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);
    float meanB = CalcMeanVal(B);
    float SdA = calcStdDevi(A);
    float 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;
}

Kết quả

Investment B is better investment.