Load the data;

yahoo_data <- read.csv(file.choose(), header = T, sep = ",")
head(yahoo_data)
##       Date    Open    High     Low   Close Adj.Close       Volume
## 1 1/1/2010 1116.56 1150.45 1071.59 1073.87   1073.87  90947580000
## 2 2/1/2010 1073.89 1112.42 1044.50 1104.49   1104.49  84561340000
## 3 3/1/2010 1105.36 1180.69 1105.36 1169.43   1169.43 103684000000
## 4 4/1/2010 1171.23 1219.80 1170.69 1186.69   1186.69 116742000000
## 5 5/1/2010 1188.58 1205.13 1040.78 1089.41   1089.41 127663000000
## 6 6/1/2010 1087.30 1131.23 1028.33 1030.71   1030.71 110107000000
data <- yahoo_data$Close

Calculate the log returns;

logReturn = diff(log(data))
head(logReturn)
## [1]  0.02811474  0.05713282  0.01465137 -0.08553157 -0.05538845  0.06651580

Plot the log returns;

plot(logReturn, type = "l", lwd = 2.5, xlab = "Time", ylab = "Log Returns", col = 1, main = "Log Returns for Yahoo Data")

Estimate parameters from the log returns;

Return <- function(mu, sigma){
  R = dnorm(logReturn, mu, sigma, log = TRUE)
  -sum(R)
}
library(bbmle)
## Warning: package 'bbmle' was built under R version 3.6.3
fit_norm <- mle2(Return, start = list(mu = 0, sigma = 1), data=list(size=108))
## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(logReturn, mu, sigma, log = TRUE): NaNs produced
summary(fit_norm)
## Maximum likelihood estimation
## 
## Call:
## mle2(minuslogl = Return, start = list(mu = 0, sigma = 1), data = list(size = 108))
## 
## Coefficients:
##        Estimate Std. Error z value   Pr(z)    
## mu    0.0079227  0.0034278  2.3113 0.02082 *  
## sigma 0.0354574  0.0024242 14.6267 < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## -2 log L: -411.0039

Refrences