R 中的 Stock Returns 比较
Stock Returns comparsion in R
我在 R 中有两个 return 系列。我想比较这些系列中的每个观察值。问题是,如果我用负号比较两个观察值,它给出的结果是最小值大于最大值。例如,如果我有 -0.5 和 -1.2 作为特定月份的 returns。它会将 -0.5 称为更大的值。在数学上这是正确的。但在财务方面,如果一只股票交付 -0.5%,另一只股票交付 -1.2%,而 -1.2% 的股票产生更大的损失,则应选择该股票。建议如何解决这个问题。我尝试复制代码。请检查下面的代码
library(Lock5Data)
library(lubridate)
library(tbl2xts)
options(scipen = 999)
SandP500$Date<-mdy(SandP500$Date)
SandP500<-tbl_xts(SandP500)
SandP500<-SandP500[,4]
SandP500$logret_1<-diff(log(SandP500),lag=1)
SandP500_data<-SandP500[,1]
SandP500_log36ret<-diff(log(SandP500_data),lag=36)
SandP500_fulldata<-cbind(SandP500,SandP500_log36ret)
names(SandP500_fulldata)<-c("close","log1","lag36")
SandP500_fulldata<-SandP500_fulldata[-1:-36,]
ifelse(SandP500_fulldata$lag36>SandP500_fulldata$log1,"normal","abnormal")["2014-08-12"]
## Check observation on
SandP500_fulldata["2014-08-12"]
您可以尝试使用 abs()
。例如,
ifelse(SandP500_fulldata$lag36<0 & SandP500_fulldata$log1<0,
(ifelse((abs(SandP500_fulldata$lag36))>(abs(SandP500_fulldata$log1)),"normal","abnormal")),
(ifelse((SandP500_fulldata$lag36)>(SandP500_fulldata$log1),"normal","abnormal")))
给予,
lag36
2014-08-12 "normal"
这里对嵌套的解释很清楚ifelse
:
.
我在 R 中有两个 return 系列。我想比较这些系列中的每个观察值。问题是,如果我用负号比较两个观察值,它给出的结果是最小值大于最大值。例如,如果我有 -0.5 和 -1.2 作为特定月份的 returns。它会将 -0.5 称为更大的值。在数学上这是正确的。但在财务方面,如果一只股票交付 -0.5%,另一只股票交付 -1.2%,而 -1.2% 的股票产生更大的损失,则应选择该股票。建议如何解决这个问题。我尝试复制代码。请检查下面的代码
library(Lock5Data)
library(lubridate)
library(tbl2xts)
options(scipen = 999)
SandP500$Date<-mdy(SandP500$Date)
SandP500<-tbl_xts(SandP500)
SandP500<-SandP500[,4]
SandP500$logret_1<-diff(log(SandP500),lag=1)
SandP500_data<-SandP500[,1]
SandP500_log36ret<-diff(log(SandP500_data),lag=36)
SandP500_fulldata<-cbind(SandP500,SandP500_log36ret)
names(SandP500_fulldata)<-c("close","log1","lag36")
SandP500_fulldata<-SandP500_fulldata[-1:-36,]
ifelse(SandP500_fulldata$lag36>SandP500_fulldata$log1,"normal","abnormal")["2014-08-12"]
## Check observation on
SandP500_fulldata["2014-08-12"]
您可以尝试使用 abs()
。例如,
ifelse(SandP500_fulldata$lag36<0 & SandP500_fulldata$log1<0,
(ifelse((abs(SandP500_fulldata$lag36))>(abs(SandP500_fulldata$log1)),"normal","abnormal")),
(ifelse((SandP500_fulldata$lag36)>(SandP500_fulldata$log1),"normal","abnormal")))
给予,
lag36
2014-08-12 "normal"
这里对嵌套的解释很清楚ifelse
:
.