2015-03-25 2 views
2

Quand je lance le code ci-dessous, ma fonction pour CAPM.beta.bull fonctionne correctement, mais renvoie une erreur pour les deux CAPM.beta.bear et TimingRatioavec CAPM.beta.bear et TimingRatio dans PerformanceAnalytics

library(PerformanceAnalytics) 
library(quantmod) 

getSymbols("AAPL", from="2012-01-01", to="2015-01-01") 
getSymbols("SPY", from="2012-01-01", to="2015-01-01") 


stockbull = function(call){ 
CAPM.beta.bull(Ad(call), Ad(SPY) , Rf=0) 
} 

stockbear = function(call){ 
CAPM.beta.bear(Ad(call), Ad(SPY), Rf=0) 
} 

stocktiming = function(call){ 
TimingRatio(Ad(call), Ad(SPY) , Rf=0) 
} 

Je cours R 3.1.3 et voici mon erreur résultante, toute aide serait très appréciée.

> stockbull(AAPL) 
[1] 0.3041228 
> stockbear(AAPL) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 
> stocktiming(AAPL) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    0 (non-NA) cases 

Répondre

1

La plupart des fonctions PerformanceAnalytics utiliser les rendements des actions, pas des prix de sorte que vous devez d'abord les retours de calcul, puis passez à ces fonctions. Par exemple, votre fonction stockbull peut devenir

stockbull = function(call){ 
    Ra <- Return.calculate(Ad(call)) 
    Rb <- Return.calculate(Ad(SPY)) 
    CAPM.beta.bull(Ra, Rb , Rf=0) 
} 

avec des modifications très similaires pour les autres fonctions. Avec ces modifications, les fonctions CAPM.beta renvoient des valeurs proches de 1. qui sont des résultats raisonnables.