เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การคำนวณ VaR และ ES สำหรับการแจกแจงปกติ

ฟังก์ชันมาตรฐาน qnorm() ใช้คำนวณควอนไทล์ของการแจกแจงปกติจากความน่าจะเป็น p ค่าเฉลี่ย และส่วนเบี่ยงเบนมาตรฐาน จึงสามารถนำมาคำนวณ value-at-risk (VaR) ได้ ส่วนฟังก์ชัน ESnorm() จากแพ็กเกจ QRM ใช้คำนวณ expected shortfall (ES) สำหรับการแจกแจงปกติจากความน่าจะเป็น p พารามิเตอร์ตำแหน่ง mu และพารามิเตอร์สเกล sd:

qnorm(p, mean = 0, sd = 1)
ESnorm(p, mu = 0, sd = 1)

ค่า p ที่นิยมใช้ ได้แก่ 0.95 และ 0.99 ซึ่งสอดคล้องกับระดับความเชื่อมั่น 95% และ 99% ตามลำดับ

ในแบบฝึกหัดนี้ จะคำนวณและแสดงผล VaR และ ES สำหรับการแจกแจงปกติ \(N(\mu, \sigma^2)\) ที่มีค่าเฉลี่ย \(\mu\) และส่วนเบี่ยงเบนมาตรฐาน \(\sigma\) พร้อมกันนี้จะได้ใช้ฟังก์ชันใหม่สำหรับการสร้างลำดับค่าและการเพิ่มเส้นตรงลงในกราฟ อ่านรายละเอียดอาร์กิวเมนต์ได้โดยพิมพ์ ?seq และ ?abline ในคอนโซล

ตัวแปร mu และ sigma เก็บค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานโดยประมาณของผลตอบแทนดัชนี Dow Jones ในช่วงปี 2008-2009 ซึ่งอยู่ใน djx โดยทั้งสามออบเจกต์นี้พร้อมใช้งานใน workspace แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Quantitative Risk Management in R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดค่าใน seq() เพื่อสร้างลำดับค่า x จำนวน 100 ค่า ตั้งแต่ \(-4\sigma\) ถึง \(4\sigma\) แล้วกำหนดให้กับ xvals
  • กำหนดค่าใน dnorm() เพื่อคำนวณความหนาแน่นของการแจกแจง \(N(\mu, \sigma^2)\) ที่ xvals แล้วกำหนดให้กับ ndens
  • พล็อต ndens เทียบกับ xvals โดยใช้ type = "l"
  • ใช้ qnorm() และ ESnorm() คำนวณ VaR 99% และ ES 99% ของการแจกแจง แล้วกำหนดให้กับ VaR99 และ ES99 ตามลำดับ
  • กำหนดค่าใน abline() เพื่อสร้างเส้นแนวตั้งสำหรับ VaR99 และ ES99 ในสีแดงและสีเขียว ตามลำดับ

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Make a sequence of 100 x-values going from -4*sigma to 4*sigma
___ <- seq(from = -4*sigma, to = 4*sigma, length.out = ___)

# Compute the density of a N(mu, sigma^2) distribution at xvals
___ <- dnorm(___, mean = ___, sd = ___)

# Plot ndens against xvals


# Compute the 99% VaR and 99% ES of a N(mu, sigma^2) distribution
___ <- qnorm(___, mean = ___, sd = ___)
___ <- ESnorm(___, mu = ___, sd = ___)

# Draw vertical lines at VaR99 and ES99 in red and green
abline(v = ___, col = "red")
abline(v = ___, col = "green")
แก้ไขและรันโค้ด