'********************************************************************************** '************************Information ratio***************************************** '********************************************************************************** Function ratio_info(ptf As Range, bench As Range) Dim nb As Integer Dim i As Integer Dim rdt_ptf(), rdt_bench(), rdt_ecart(), ecart() As Single Dim rdtmoy_ptf, rdtmoy_bench, sigma, rdtmoy_ecart As Single rdtmoy_ptf = 0 rdtmoy_bench = 0 rdtmoy_ecart = 0 nb = ptf.Rows.Count 'Nombre de lignes dans le portefeuille ReDim rdt_ptf(nb - 1) ReDim rdt_bench(nb - 1) ReDim rdt_ecart(nb - 1) ReDim ecart(nb) 'Matrix calculating the returns of the portfolio and the benchmark For i = 1 To nb - 1 rdt_ptf(i) = (ptf(i + 1) - ptf(i)) / ptf(i) rdtmoy_ptf = rdt_ptf(i) + rdtmoy_ptf Next i rdtmoy_ptf = rdtmoy_ptf / (nb - 1) For i = 1 To nb - 1 rdt_bench(i) = (bench(i + 1) - bench(i)) / bench(i) rdtmoy_bench = rdt_bench(i) + rdtmoy_bench Next i rdtmoy_bench = rdtmoy_bench / (nb - 1) 'Calcul de l'icart For i = 1 To nb ecart(i) = ptf(i) - bench(i) Next i 'Spread return Calculus For i = 1 To nb - 1 rdt_ecart(i) = (ecart(i + 1) - ecart(i)) / ecart(i) rdtmoy_ecart = rdtmoy_ecart + rdt_ecart(i) Next i rdtmoy_ecart = rdtmoy_ecart / (nb - 1) 'Spread volatility calculus sigma = 0 For i = 1 To nb - 1 sigma = ((rdt_ecart(i) - rdtmoy_ecart) ^ 2) + sigma Next i sigma = sigma / ((nb - 1) ^ 2) 'Calcul du ratio d'information ratio_info = (rdtmoy_ptf - rdtmoy_bench) / sigma End Function