# APPLICAZIONE DEL MODELLO CAPM

 Fase 1 Download dei dati

Dati settimanali del : - prezzo dell'azione Nestlè quotata a Zurigo ( 'NESN.SW'

                                     - indice S&P500 

                                    - Treasury Bills (Tasso privo di rischio)

Periodo in esame:  dal 01/01/2014 al 01/01/2024

Fonte -> Yahoo Finance

__________________________________________________________

Fase 2: Calcolo dei rendimenti settimanali

Si è proceduto calcolando i rendimenti dei prezzi di tutte le variabili. 



Dove: 

 R è il rendimento (settimanale) percentuale 

 Pt è il prezzo al tempo t 

 Pt-1 è il prezzo al tempo t-1

Ottengo, quindi, i valori che successivamente inserirò nel programma in C# per calcolare il rendimento atteso.

Ho ottenuto:

Tasso privo di rischio = 5.3%

Rendimento di mercato = 0.21%

__________________________________________________________

Fase 3: implementazione del modello di regressione per ricavare il valore di beta (return strumento = alpha+beta * return mercato)

OUTPUT




Dall'output qui riportato possiamo osservare quanto varia lo strumento per ogni variazione del mercato. Nel nostro caso alpha=0.07 e beta= 0.38. 

Un beta di 0.38 indica che l'attività finanziaria considerata è meno volatile rispetto al mercato nel suo complesso. In questo caso, il movimento dell'attività è approssimativamente il 38% di quello del mercato.

Un beta di 0.38 suggerisce che l'attività è relativamente stabile rispetto alle fluttuazioni del mercato. Se il mercato si muove al rialzo o al ribasso, ci si può aspettare che questa attività abbia movimenti meno estremi in termini percentuali.


Codice R :

library(readr)

nestle <- read_delim("nestle.csv", delim = ";", 

                     escape_double = FALSE, col_names = FALSE, 

                     trim_ws = TRUE)


sp500 <- read_delim("sp500.csv", delim = ";", 

                    escape_double = FALSE, col_names = FALSE, 

                    trim_ws = TRUE)



Riskfree <- read_delim("C:/Users/miche/Desktop/Univerisità/MAGISTRALE/STATISTICA APPLICATA/Riskfree.csv", 

                       delim = ";", escape_double = FALSE, trim_ws = TRUE)



fin<- data.frame(nestle$X1, nestle$X6, sp500$X6, Riskfree$`Adj Close`)

str(fin)

names(fin)<-c("Data", "Nestle","S&P500","riskfree")

rend_nest <- diff(fin$Nestle) / fin$Nestle[-length(fin$Nestle)]

rend_rfree <- diff(fin$riskfree) / fin$riskfree[-length(fin$riskfree)]

rend_sp500<- diff(fin$`S&P500`) / fin$`S&P500`[-length(fin$`S&P500`)]

mean(rend_nest)

mean(rend_sp500)

riskfree_T<- mean(rend_rfree)

model <- lm(rend_nest ~ rend_sp500)

summary(model) 

beta<- model$coefficients[2]

beta

x=(rend_sp500-rend_rfree)

mean(x)

y=riskfree_T+beta*x

CAPM= mean(y)

CAPM*100

plot(x, y, type = "l", lwd=1.2, xlab = "differenza tra i rendimenti", ylab = "Y modello CAPM")

abline(h=0, col=2, lwd=1.2)

__________________________________________________________

Fase 4: Calcolo del rendimento atteso con C#

applico la seguente formula :

Dove:

·      E(R) :  Rendimento atteso del titolo 𝑛

·       RF Tasso risk-freepuò essere ottenuto guardando i tassi di interesse dei titoli di stato a breve termine emessi da governi stabili.

·       bCoefficiente beta del titolo 𝑛, che misura la reattività del suo rendimento ai movimenti del mercato. 

·       Rm : Rendimento atteso del mercatopuò essere stimato utilizzando le aspettative di rendimento degli investitori o le proiezioni basate sull'andamento passato del mercato.



}

OUTPUT:


 

      Ottengo che il rendimento atteso è pari al 3.42% 



GRAFICO :






Codice C#:
using System;
using System.Windows.Forms;

namespace CalcoloCapm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                double riskFreeRate = double.Parse(textBox1.Text) / 100; // Tasso privo di rischio in percentuale
                double beta = double.Parse(textBox2.Text); // Coefficiente beta
                double marketReturn = double.Parse(textBox3.Text) / 100; // Rendimento del mercato in percentuale

                // Calcolo il rendimento atteso secondo il CAPM
                double marketRiskPremium = marketReturn - riskFreeRate;
                double expectedReturn = riskFreeRate + beta * marketRiskPremium;

                // Mostro il rendimento atteso nella label
                label1.Text = $"Rendimento atteso (CAPM): {expectedReturn * 100:F2}%";
            }
            catch (FormatException)
            {
                MessageBox.Show("Inserisci valori numerici validi per tutti i campi.", "Errore di formato", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Si è verificato un errore: {ex.Message}", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
            

        }
    }




Post più popolari