ใช้โมเดล ARMA-GARCH เพื่อจำลองราคาแลกเปลี่ยนเงินตราต่างประเทศ


10

ฉันได้ติดตั้งแบบจำลอง ARIMA (1,1,1) -GARCH (1,1) เข้ากับช่วงเวลาของราคาบันทึกอัตราแลกเปลี่ยน AUD / USD ที่สุ่มตัวอย่างเป็นระยะเวลาหนึ่งนาทีตลอดระยะเวลาหลายปีทำให้ฉันมากกว่าสองปี ล้านจุดข้อมูลที่จะประเมินรูปแบบ ชุดข้อมูลที่สามารถใช้ได้ที่นี่ เพื่อความชัดเจนนี่เป็นรูปแบบ ARMA-GARCH ที่ติดตั้งเพื่อส่งคืนบันทึกเนื่องจากการรวมราคาบันทึกครั้งแรก ซีรี่ส์เวลา AUD / USD ดั้งเดิมมีลักษณะดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นฉันพยายามจำลองอนุกรมเวลาตามโมเดลที่ติดตั้งให้ฉันดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันคาดหวังและต้องการอนุกรมเวลาที่จำลองมานั้นจะแตกต่างจากซีรี่ส์ดั้งเดิม แต่ฉันไม่ได้คาดหวังว่าจะมีความแตกต่างที่มีนัยสำคัญ โดยเนื้อแท้แล้วฉันต้องการให้ซีรีย์ที่จำลองขึ้นมีลักษณะหรือกว้างเหมือนต้นฉบับ

นี่คือรหัส R ที่ฉันใช้ประเมินโมเดลและจำลองซีรีย์:

library(rugarch)
rows <- nrow(data)
data <- (log(data[2:rows,])-log(data[1:(rows-1),]))
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "std")
fit <- ugarchfit(spec = spec, data = data, solver = "hybrid")
sim <- ugarchsim(fit, n.sim = rows)
prices <- exp(diffinv(fitted(sim)))
plot(seq(1, nrow(prices), 1), prices, type="l")

และนี่คือผลลัพธ์การประมาณค่า:

*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model  : ARFIMA(1,0,1)
Distribution    : std 

Optimal Parameters
------------------------------------
        Estimate  Std. Error     t value Pr(>|t|)
mu      0.000000    0.000000   -1.755016 0.079257
ar1    -0.009243    0.035624   -0.259456 0.795283
ma1    -0.010114    0.036277   -0.278786 0.780409
omega   0.000000    0.000000    0.011062 0.991174
alpha1  0.050000    0.000045 1099.877416 0.000000
beta1   0.900000    0.000207 4341.655345 0.000000
shape   4.000000    0.003722 1074.724738 0.000000

Robust Standard Errors:
        Estimate  Std. Error   t value Pr(>|t|)
mu      0.000000    0.000002 -0.048475 0.961338
ar1    -0.009243    0.493738 -0.018720 0.985064
ma1    -0.010114    0.498011 -0.020308 0.983798
omega   0.000000    0.000010  0.000004 0.999997
alpha1  0.050000    0.159015  0.314436 0.753190
beta1   0.900000    0.456020  1.973598 0.048427
shape   4.000000    2.460678  1.625568 0.104042

LogLikelihood : 16340000 

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


1
สวัสดี Jeff! คุณควรให้ข้อมูลของคุณ (หรืออย่างน้อยตัวอย่างตัวแทน) แก่ผู้ช่วยเหลือที่เป็นไปได้ นอกจากนี้โค้ดตัวอย่างของคุณจะไม่รวมแพ็คเกจที่คุณใช้ (โดยที่ugarchspec()และugarchsim()ฟังก์ชันอยู่) ตรวจสอบให้แน่ใจว่ารหัสของคุณสามารถทำซ้ำได้ทุกครั้งที่คุณถามคำถามที่นี่และจะ "ช่วยให้ผู้คนช่วยเหลือคุณ"
SavedByJESUS

ขอบคุณสำหรับคำแนะนำของคุณ @SedByJESUS ฉันได้อัปเดตโพสต์ของฉันเพื่อรวมไลบรารี R ที่ฉันใช้และชี้แจงรูปแบบข้อมูลของฉัน
Jeff

เหตุผลหลักที่ข้อมูลจำลองของคุณแตกต่างจากซีรี่ส์ดั้งเดิมนั้นเป็นเพราะรุ่นที่ติดตั้งแล้ว ARMA (1, 1, 1) GARCH (1, 1) ไม่ใช่โมเดลที่เหมาะสมสำหรับข้อมูลของคุณ คุณควรเริ่มต้นด้วยการปรับปรุงแบบจำลองของคุณก่อนจากนั้นการจำลองที่ตามมาของคุณจะคล้ายกับข้อมูลต้นฉบับของคุณ
SavedByJESUS

คำตอบ:


1

ฉันกำลังทำงานกับการคาดการณ์ข้อมูลอัตราแลกเปลี่ยนและเชื่อฉันทุกครั้งที่คุณใช้วิธีการพยากรณ์ทางสถิติไม่ว่าจะเป็น ARMA, ARIMA, GARCH, ARCH ฯลฯ พวกเขามักจะเสื่อมสภาพเมื่อคุณพยายามคาดการณ์ล่วงหน้าล่วงหน้า พวกเขาอาจหรือไม่อาจใช้งานได้สำหรับหนึ่งหรือสองช่วงต่อไป แต่ไม่มากไปกว่านั้น เนื่องจากข้อมูลที่คุณจัดการไม่มีความสัมพันธ์กันโดยอัตโนมัติไม่มีแนวโน้มและไม่มีฤดูกาล

คำถามของฉันกับคุณคุณได้ตรวจสอบACFและPACFหรือการทดสอบแนวโน้มฤดูกาลก่อนใช้ ARMA และ GARCH หรือไม่ หากไม่มีคุณสมบัติที่กล่าวถึงข้างต้นในการคาดการณ์ทางสถิติของข้อมูลจะไม่ทำงานเนื่องจากคุณละเมิดสมมติฐานพื้นฐานของโมเดลเหล่านี้


ขอบคุณสำหรับความคิดเห็นของคุณ @JAbr แต่ฉันไม่ได้คาดการณ์ แต่แอปพลิเคชันของฉันเป็นการจำลองเส้นทางราคาอย่างเข้มงวดซึ่งมีลักษณะทางสถิติเดียวกับข้อมูลที่สังเกต
Jeff

โอเค แต่ในวอร์ดอื่น ๆ ที่คุณคาดการณ์จริง ๆ แล้วใช้แบบจำลอง garch ไม่ได้แบบจำลองของคุณใช้ garch และ garch สร้างการสังเกตโดยการพยากรณ์
JAbr

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

ฉันพูดว่า "พวกเขาอาจใช้งานได้ในช่วงหนึ่งหรือสองช่วงเวลา" ไม่ดีของฉันฉันควรจะพูดว่าอาจหรือไม่
JAbr

0

คำแนะนำของฉันคือเพื่อให้แน่ใจว่าแบบจำลองที่คุณเลือกนั้นเหมาะสมกับข้อมูล

  • ตรวจสอบให้แน่ใจว่าไม่มีส่วนประกอบตามรอบหรือตามฤดูกาล
  • ดำเนินการทดสอบเพิ่มยิ่งขึ้น Dickey Fuller เพื่อทดสอบการมีอยู่ของรูทยูนิต หากมีหน่วยรูทอยู่ให้เก็บข้อมูลต่างกันจนกระทั่งการทดสอบเพิ่มยิ่งขึ้นของดิคกี้แสดงว่าไม่มีหน่วยรูต หรือสังเกตค่าสัมประสิทธิ์สหสัมพันธ์แบบอัตโนมัติพวกเขาควรจะลดลงหลังจากเวลา n บางครั้งสำหรับความคงที่
  • บางทีคุณอาจมีรูปแบบที่พอดีหรือคำสั่งที่ไม่ถูกต้อง? ค้นหาคำสั่งซื้อที่ถูกต้องโดยใช้ AIC และ BIC

เสื้อdistribution.model="std"

คุณพูดถูก ฉันจะแก้ไขคำตอบของฉัน
A-AR

ฉันไม่ได้กังวลเกี่ยวกับการปรับให้กระชับมากเกินไป - อันที่จริงแล้วสำหรับแอปพลิเคชันที่ฉันต้องการฉันต้องการให้พอดีกับโมเดลมากเกินไป ฉันได้ทดสอบความคงที่แม้ว่าจะไม่ใช่ฤดูกาลก็ตาม โดยไม่คำนึงถึงปัญหาเหล่านี้รุ่น GARCH ทำงานได้ไม่ถูกต้อง ดูเหมือนว่าซีรีย์ที่จำลองนั้นจะเป็นเนื้อเดียวกัน
เจฟฟ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.