สร้างค่าหลายตัวแปรสุ่มจากข้อมูลเชิงประจักษ์


10

ฉันกำลังทำงานกับฟังก์ชั่น Monte Carlo สำหรับการประเมินมูลค่าสินทรัพย์หลายรายการที่มีผลตอบแทนที่สัมพันธ์กันบางส่วน ขณะนี้ฉันเพิ่งสร้างเมทริกซ์ความแปรปรวนร่วมและฟีดไปยังrmvnorm()ฟังก์ชันใน R (สร้างค่าสุ่มที่สัมพันธ์กัน)

อย่างไรก็ตามเมื่อพิจารณาการกระจายของผลตอบแทนของสินทรัพย์จะไม่ได้รับการกระจายตามปกติ

นี่เป็นคำถามสองส่วนจริง ๆ :
1) ฉันจะประมาณ PDF หรือ CDF บางประเภทได้อย่างไรเมื่อฉันมีข้อมูลโลกแห่งความจริงโดยไม่ต้องมีการแจกแจง

2) ฉันจะสร้างค่าที่สัมพันธ์กันเช่น rmvnorm ได้อย่างไร แต่สำหรับการแจกแจงที่ไม่รู้จัก (และไม่ปกติ) นี้?

ขอบคุณ!


การแจกแจงนั้นไม่เหมาะสมกับการแจกแจงใด ๆ ฉันคิดว่ามันจะเป็นอันตรายมากที่จะใช้พารามิเตอร์และจากนั้นใช้สำหรับการประเมิน monte carlo

ไม่มี bootstrap หรือวิธี "empirical monte carlo" ที่ฉันสามารถดูได้หรือไม่?

คำตอบ:


2

(1) มันเป็น CDF ที่คุณจะต้องสร้างชุดเวลาจำลองของคุณ ในการสร้างมันขึ้นมาก่อนใช้ฮิสโตแกรมการเปลี่ยนแปลงราคา / คืนสินค้าของคุณ ใช้จำนวนรวมของประชากร bin ที่เริ่มต้นด้วยถังขยะที่มีประชากรซ้ายสุดของคุณ ทำให้ฟังก์ชั่นใหม่ของคุณเป็นปกติโดยการหารด้วยจำนวนถังขยะทั้งหมด สิ่งที่คุณเหลืออยู่คือ CDF นี่คือบางรหัส numpy ที่ทำหลอกลวง:

# Make a histogram of price changes

counts,bin_edges = np.histogram(deltas,numbins,normed=False) # numpy histogram

# Make a CDF of the price changes

n_counts,bin_edges2 = np.histogram(deltas,numbins,normed=True)
cdf = np.cumsum(n_counts)  # cdf not normalized, despite above
scale = 1.0/cdf[-1]
ncdf = scale * cdf

(2) ในการสร้างตัวเลือกที่สัมพันธ์กันให้ใช้ตัวเชื่อม ดูคำตอบสำหรับคำถามก่อนหน้านี้ของฉันเกี่ยวกับการสร้างอนุกรมเวลาที่มีความสัมพันธ์กัน


4

เกี่ยวกับคำถามแรกคุณอาจลองทำการสุ่มข้อมูลใหม่อีกครั้ง จะมีปัญหาในกรณีที่ข้อมูลของคุณมีความสัมพันธ์กันเมื่อเวลาผ่านไป (แทนที่จะเป็นสหสัมพันธ์ที่เกิดขึ้นพร้อมกัน) ซึ่งในกรณีนี้คุณจะต้องมีอะไรบางอย่างเช่น bootstrap บล็อก แต่สำหรับการส่งคืนข้อมูล bootstrap ธรรมดาอาจจะใช้ได้

ฉันเดาว่าคำตอบสำหรับคำถามที่สองนั้นขึ้นอยู่กับการกระจายเป้าหมายเป็นอย่างมาก


3

คำตอบสำหรับคำถามแรกคือคุณสร้างแบบจำลอง ในกรณีของคุณหมายถึงการเลือกการแจกแจงและการประมาณค่าพารามิเตอร์

เมื่อคุณมีการแจกแจงคุณสามารถสุ่มตัวอย่างจากมันโดยใช้อัลกอริทึม Gibbs หรือ Metropolis

ในหมายเหตุด้านข้างคุณต้องการตัวอย่างจากการกระจายนี้หรือไม่ โดยปกติแล้วความสนใจจะอยู่ในลักษณะของการกระจาย คุณสามารถประมาณค่าได้โดยใช้การกระจายเชิงประจักษ์ผ่าน bootstrap หรือสร้างแบบจำลองสำหรับคุณลักษณะนี้อีกครั้ง


ฉันสนใจที่จะสุ่มตัวอย่างผลตอบแทนที่เป็นไปได้สำหรับเนื้อหาที่กำหนด เนื่องจากการกระจายไม่ปกติและสินทรัพย์มีความสัมพันธ์กันตามกาลเวลาซึ่งสร้างความท้าทายในการเลือกการกระจาย ฉันกำลังสำรวจวิธีการ monte carlo เพื่อเพิ่มประสิทธิภาพพอร์ตโฟลิโอ
โนอาห์

1
@Nah คุณคิดว่าแบบจำลองความผันผวนหลายแบบเช่น GARCH หรือไม่?
mpiktas

ฉันดูที่รุ่น GARCH แล้ว อย่างไรก็ตาม GARCH จะไม่แก้ปัญหานี้ ฉันกำลังดูการสร้างตัวอย่างสุ่มที่มีความสัมพันธ์จากอนุกรมเวลาหลายชุด สุ่มตัวอย่างตัวอย่างของตัวแปรบรรทัดฐานแบบหลายตัวแปรแบบสุ่ม แต่พวกเขาต้องการข้อสันนิษฐานว่าผลตอบแทนจะกระจายตามปกติและในกรณีนี้พวกเขาจะไม่
โนอาห์

1
@Nah, GARCH หลายตัวแปรเกี่ยวกับอะไร? แต่ละชุดเป็น GARCH ด้วยนวัตกรรมจากหลายตัวแปรปกติกับเมทริกซ์ความแปรปรวนร่วมที่ไม่ใช่แนวทแยง จากนั้นผลตอบแทนจะไม่มีการแจกแจงแบบปกติ แต่จะมีความสัมพันธ์กัน
mpiktas

3

ฉันอยู่กับ @mpiktas เพราะฉันคิดว่าคุณต้องมีนางแบบด้วย

ฉันคิดว่าวิธีมาตรฐานที่นี่คือการประมาณค่า copula เพื่อจับโครงสร้างการพึ่งพาระหว่างสินทรัพย์ที่แตกต่างกันและการใช้งานเช่นการแจกแจงการแจกแจงแบบเบ้ปกติ - หรือ - ทีแบบกระจายสำหรับสินทรัพย์ที่แตกต่างกัน นั่นทำให้คุณมีโมเดลรุ่นทั่วไป (ทั่วไปมากกว่าที่สมมติว่าการแจกแจงหลายตัวแปร) ที่ค่อนข้างเป็นมาตรฐานสำหรับประเภทงานของคุณ (เช่นฉันคิดว่า Basel II กำหนดให้สถาบันการเงินใช้วิธีการประมวลผลร่วมเพื่อประเมิน VaR ของพวกเขา) . มีcopulaแพ็คเกจสำหรับอาร์


1

คำตอบที่เป็นไปได้สำหรับส่วนแรกของคำถามโดยใช้ R ... โดยใช้ecdf()ฟังก์ชั่น

# simulate some data...
N <- 1000
fdata <- c( rnorm(N %/% 2, mean=14), rnorm(N %/% 2, mean=35))

# here's the Empirical CDF of that data...
E1 <- ecdf(fdata)
plot(E1)

# now simulate 1000 numbers from this ECDF...
ns <- 1000
ans <- as.numeric(quantile(E1, runif(ns)))
hist(ans,pro=T,nclass=113,col='wheat2')

1
สิ่งนี้ใช้กับข้อมูลที่ไม่เปลี่ยนแปลงเท่านั้น
Stéphane Laurent
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.