R : i primi 30 minuti (dall’installazione al primo Trading-System) (1 Viewer)

DEFENDER88

Nuovo forumer
Ragazzi oltre al mio lavoro che devo ancora terminare, vi propongo altri due lavori in particolare:
1) Nell'ambito dello studio sui titoli derivati, si costruiscono 5 opzioni e si calcolino i VOLATILITY SMILES. in particolare si richiede di produrre stime e grafici, eventualmente ricorrendo al pacchetto QUANTMOD, fOptions, QUANTLIB, PERFORMANCEANALYTICS.
2) Nell'ambito dello studio su titoli derivati, si costruiscono 5 tipi di strategie operativesu opzioni tipo ladder spread. In particolare, si richiede di produrre stime e grafici, eventualmente ricorrendo ai pacchetti quantmod,fOptions,QuantLib, PerformanceAnalytics.
Queste sono le traccie che ci ha dato la Professoressa.
Come si possono impostare con R
 

Cren

Forumer storico
Ragazzi oltre al mio lavoro che devo ancora terminare, vi propongo altri due lavori in particolare:
1) Nell'ambito dello studio sui titoli derivati, si costruiscono 5 opzioni e si calcolino i VOLATILITY SMILES. in particolare si richiede di produrre stime e grafici, eventualmente ricorrendo al pacchetto QUANTMOD, fOptions, QUANTLIB, PERFORMANCEANALYTICS.
2) Nell'ambito dello studio su titoli derivati, si costruiscono 5 tipi di strategie operativesu opzioni tipo ladder spread. In particolare, si richiede di produrre stime e grafici, eventualmente ricorrendo ai pacchetti quantmod,fOptions,QuantLib, PerformanceAnalytics.
Queste sono le traccie che ci ha dato la Professoressa.
Come si possono impostare con R
La tua prof.ssa comincia a starmi un po' sui coglioni, eh :D

Prima di lanciarsi in R è bene aver chiaro cosa si vuole fare e soprattutto come lo si vuole fare.

Cominciamo:

1. hai due possibilità: o ti inventi una forma parametrica per lo smile e poi prezzi le opzioni, oppure prendi una catena di prezzi reali dal mercato ed estrai la volatilità implicita... dopodiché ricostruisci per via parametrica lo smile con un polinomio di II grado. Dimmi tu;

2. qua immagino che tu debba rappresentare semplicemente il profilo di P&L in funzione di tempo, volatilità implicita e prezzo del sottostante per una strategia come quella. Capisco bene?​
 

DEFENDER88

Nuovo forumer
Cren per quanto riguarda il mio lavoro, quello dei 20 titoli, non lo so portare avanti.
io sono arrivato a :
ho caricato i 20 titoli, poi per ogni titolo ho fatto cosi:
> A<-as.matrix(DIS, subset='last 4 months')
> pA<-A[,4] # prezzi di chiusura
> rA<-dailyReturn(pA, type='log') #calcola i rendimenti giornalieri
poi ho unito questi rendimenti in una matrice
RR<-cbind(rA,rB,rC,rD,rE,rF,rG,rH,rI)
chart.RiskReturnScatter(RR, Rf = .20) # il tasso risk free è fissato a 0.20
e me li rappresento sul piano media varianza;( sul grafico però mancano alcuni titoli )

ORA?
 

Cren

Forumer storico
che significa P&L, crdo che sia la seconda; Cren dimmi la più semplice.........
Prendi i prezzi dal mercato, il sito dell'Eurex dovrebbe andare bene.

Guarda qua, ad esempio, quanti dati che hai:


"P&L" significa "Profit & Loss".
Cren per quanto riguarda il mio lavoro, quello dei 20 titoli, non lo so portare avanti.
io sono arrivato a :
ho caricato i 20 titoli, poi per ogni titolo ho fatto cosi:
> A<-as.matrix(DIS, subset='last 4 months')
> pA<-A[,4] # prezzi di chiusura
> rA<-dailyReturn(pA, type='log') #calcola i rendimenti giornalieri
poi ho unito questi rendimenti in una matrice
RR<-cbind(rA,rB,rC,rD,rE,rF,rG,rH,rI)
chart.RiskReturnScatter(RR, Rf = .20) # il tasso risk free è fissato a 0.20
e me li rappresento sul piano media varianza;( sul grafico però mancano alcuni titoli )

ORA?
Il mio codice ti faceva schifo? :D

Comunque ora dipende cosa devi e cosa vuoi fare: la rappresentazione sul grafico l'hai fatta, non si parlava di un portafoglio a minima varianza globale?
 
Ultima modifica:

DEFENDER88

Nuovo forumer
No il tuo codice non mi faceva schifo, però avendo una esempio già fatto fino a questo punto; sono arrivato a rappresentare i titoli sul grafico . Ora come faccio a:
"costruiscano i portafogli a varianza minima ottenuti riducendo progressivamente il paniere di titoli presenti in portafoglio."
In particolare, si richiede di produrre stime e grafici, nonché indicatori della bontà di adattamento (analisi dei residui, ecc.), eventualmente ricorrendo al pacchetto quantmod o altri affini della piattaforma R CRAN.
MI POTRESI continuare con il linguaggio R ? perche non lo so impostare sto CAPM
 

DEFENDER88

Nuovo forumer
Prendi i prezzi dal mercato, il sito dell'Eurex dovrebbe andare bene.

Guarda qua, ad esempio, quanti dati che hai:
DAX® Options (ODAX)
"P&L" significa "Profit & Loss".
Per quanto riguarda questo passaggio, a quale traccia ti stai riferendo? la prima o la seconda?
 

Cren

Forumer storico
No il tuo codice non mi faceva schifo, però avendo una esempio già fatto fino a questo punto; sono arrivato a rappresentare i titoli sul grafico . Ora come faccio a:
"costruiscano i portafogli a varianza minima ottenuti riducendo progressivamente il paniere di titoli presenti in portafoglio."
In particolare, si richiede di produrre stime e grafici, nonché indicatori della bontà di adattamento (analisi dei residui, ecc.), eventualmente ricorrendo al pacchetto quantmod o altri affini della piattaforma R CRAN.
MI POTRESI continuare con il linguaggio R ? perche non lo so impostare sto CAPM
Con calma, sono due cose diverse.

Cominciamo da bontà di adattamento e analisi dei residui del CAPM con PerformanceAnalytics: dimmi cosa non ti è chiaro del codice e, quando ti è tutto chiaro, adattalo al tuo caso con i tuoi dati.

# +---------------------------------
# | Sommario
# |
# | 1. Parametri globali
# | 2. Installazione delle librerie
# | 3. Caricamento delle librerie
# | 4. Scaricamento dei dati
# | 5. Preparazione dei dati
# | 6. Rendimenti aritmetici
# | 7. Stima dell'Alpha CAPM
# | 8. Stima del Beta CAPM
# | 9. Grafico modello di regressione lineare
# | 10. Indicatori di bontà di adattamento
# +---------------------------------

# +---------------------------------
# | 1. Parametri globali
# +---------------------------------

op <- par(no.readonly = TRUE)
Sys.setenv(TZ = 'UTC')

# +---------------------------------
# | 2. Installazione delle librerie
# +---------------------------------

install.packages('lattice')
install.packages('PerformanceAnalytics')
install.packages('quantmod')

# +---------------------------------
# | 3. Caricamento delle librerie
# +---------------------------------

require(lattice)
require(PerformanceAnalytics)
require(quantmod)

# +---------------------------------
# | 4. Scaricamento dei dati
# +---------------------------------

env <- new.env()

# In questo esempio usiamo solo un indice e cinque titoli per comodità:
# - FTSE MIB
# - FIAT
# - ENI
# - ENEL
# - Telecom Italia
# - UniCredit

Symbols <- c('FTSEMIB.MI', 'F.MI', 'ENI.MI', 'ENEL.MI', 'TIT.MI', 'UCG.MI')
getSymbols(Symbols = Symbols, env = env, src = 'yahoo', from = '1950-01-01')

# +---------------------------------
# | 5. Preparazione dei dati
# +---------------------------------

args <- eapply(env = env, FUN = function(x){Cl(x)})[Symbols]
X <- na.omit(do.call(what = merge, args = args))
xyplot(X)

# +---------------------------------
# | 6. Rendimenti aritmetici
# +---------------------------------

Data <- apply(X = X, MARGIN = 2, FUN = function(x){Delt(x)})
Data[1,] <- 0
Data <- xts(Data, index(X))

# +---------------------------------
# | 7. Stima dell'Alpha CAPM
# +---------------------------------

Rf <- .2 / (100 * 365) # tasso risk free = 0.20% su base annua (365 giorni)
CAPM.alpha(Ra = Data[,-1], Rb = Data[,1], Rf = Rf)

# +---------------------------------
# | 8. Stima del Beta CAPM
# +---------------------------------

CAPM.beta(Ra = Data[,-1], Rb = Data[,1], Rf = Rf)

# +---------------------------------
# | 9. Grafico modello di regressione lineare
# +---------------------------------

chart.Regression(Ra = Data[,-1], Rb = Data[,1], Rf = Rf, main = '', fit = 'linear', legend.loc = 'bottomright')

# +---------------------------------
# | 10. Indicatori di bontà di adattamento
# +---------------------------------

for(j in 2:ncol(Data))
{
lmSummary <- summary(lm(Data[,j] ~ Data[,1]))
print(paste(colnames(Data[,j]), 'to', colnames(Data[,1]), 'Adjusted R Squared =', round(lmSummary$adj.r.squared, 3)))​
}

Si usa solo PerformanceAnalytics e R base, quindi la tua prof.ssa sarà contenta.
 

Allegati

  • Rplot.png
    Rplot.png
    19,5 KB · Visite: 271

DEFENDER88

Nuovo forumer
allora io ho messo i titoli sul piano Media varianza, ora come devo continuare? io sono arrivato fino al punto 6( nel tuo esempio) vero?
se uso il tuo esempio, mi potresti spiegare tutti i comandi cosa fanno? Perchè se me li chiede all'esame orale .....
 

Cren

Forumer storico
se uso il tuo esempio, mi potresti spiegare tutti i comandi cosa fanno? Perchè se me li chiede all'esame orale .....
Scusa, ma ti sarai accorto che digitando ad esempio

?CAPM.alpha

(che è la funzione che ho usato io nel codice) in R ti si apre tutta la spiegazione dettagliata di cosa fa la funzione.

Ecco, allora leggi riga per riga il mio codice e ogni volta che trovi un comando che non conosci lo lanci in R preceduto dal "?" e leggi tutte le spiegazioni a corredo.
 

Users who are viewing this thread

Alto