Seeking Levy parameters

Get data

# Install necessary packages if not already installed

# install.packages("quantmod")
# install.packages("RQuantLib")
library(quantmod)


# Load necessary packages

library(data.table)
library(RQuantLib)

# Fetch the Nifty 50 index data
nifty_data <- getSymbols("^NSEI", src = "yahoo", from = "1980-01-01", auto.assign = TRUE)
Warning: ^NSEI contains missing values. Some functions will not work if objects
contain missing values in the middle of the series. Consider using na.omit(),
na.approx(), na.fill(), etc to remove or replace them.
# Convert the data to a data.table
nifty_data <- data.table(
date = index(NSEI),
open = as.numeric(Op(NSEI)),
high = as.numeric(Hi(NSEI)),
low = as.numeric(Lo(NSEI)),
close = as.numeric(Cl(NSEI)),
volume = as.numeric(Vo(NSEI)),
adjusted = as.numeric(Ad(NSEI))
)

# Extract the last closing price directly from nifty_data
# Get the latest closing price
closing_price <- nifty_data[.N, close]
closing_price
[1] 25966.4
# Select the relevant columns and calculate returns
dt <- nifty_data[, .(date, adjusted, returns = adjusted / shift(adjusted, 1) - 1)]


# Calculate mean return and annualized standard deviation
result <- dt[, .(
  annualized_mean_return = 252 * mean(returns, na.rm = TRUE) * 100,
  annualized_sd = sqrt(252) * sd(returns, na.rm = TRUE) * 100
)]
show(result)
   annualized_mean_return annualized_sd
                    <num>         <num>
1:                11.4349      20.69943
closing_price
[1] 25966.4

Find 𝛼,𝛽,𝛾,𝛿

library(data.table)
library(stabledist)
# install.packages("fitdistrplus")
library(fitdistrplus)


fit <- fBasics::stableFit(dt$returns, "stable")

# Access the estimated parameters
alpha <- fit@fit$estimate["alpha"]
beta <- fit@fit$estimate["beta"]
gamma <- fit@fit$estimate["gamma"]
delta <- fit@fit$estimate["delta"]

# Print the estimated parameters
cat("Alpha:", alpha, "\n")
Alpha: 1.502 
cat("Beta:", beta, "\n")
Beta: -0.06 
cat("Gamma:", gamma, "\n")
Gamma: 0.006052724 
cat("Delta:", delta, "\n")
Delta: 0.0007193177 

Calculate central tendency

nifty <-as.data.table(nifty_data)
# Calculating daily returns
nifty_return <- nifty[, daily_return := (adjusted / shift(adjusted, 1)) - 1]
nifty_return1<-nifty_return[is.na(daily_return), daily_return := 0]
return_only<-nifty_return1[, .(adjusted, daily_return)]
sd_daily_return<-return_only[, sd(daily_return)]
sd_nifty<-sd_daily_return*sqrt(252)
print(sd_nifty)
[1] 0.2055452
average_daily_return<-nifty_return1[, mean(daily_return)]
annual_return <- (1 + average_daily_return) ^ 252 - 1
print(annual_return)
[1] 0.1193261
median_daily_return<-nifty_return1[, median(daily_return)]
median_return <- (1 + median_daily_return) ^ 252 - 1
print(median_return)
[1] 0.1230372
Back to top