//+------------------------------------------------------------------+ //| MathStatistics_Calculator.mqh | //| Engine for Financial Statistics (Beta, Alpha, Correlation). | //| Copyright 2026, xxxxxxxx | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, xxxxxxxx" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CMathStatisticsCalculator { public: CMathStatisticsCalculator() {}; ~CMathStatisticsCalculator() {}; //--- Calculate Beta (Sensitivity to Benchmark) // Beta = Covariance(Asset, Bench) / Variance(Bench) double CalculateBeta(const double &asset_returns[], const double &bench_returns[]) { int n = MathMin(ArraySize(asset_returns), ArraySize(bench_returns)); if(n < 2) return 0.0; // Need at least 2 points double mean_asset = Mean(asset_returns, n); double mean_bench = Mean(bench_returns, n); double cov = Covariance(asset_returns, mean_asset, bench_returns, mean_bench, n); double var = Variance(bench_returns, mean_bench, n); if(var == 0.0) return 0.0; return cov / var; } //--- Calculate Alpha (Excess Return) // Alpha = AssetReturn - (Beta * BenchReturn) // Usually calculated over a period based on cumulative return or average return // Here we calculate Period Alpha (Total Return logic) double CalculateAlpha(double asset_total_return, double bench_total_return, double beta) { return asset_total_return - (beta * bench_total_return); } //--- Helpers double Mean(const double &arr[], int n) { double sum = 0; for(int i=0; i