ราคาตัวเลือกติดลบสำหรับค่าอินพุตบางอย่างใน MATLAB?

ในระหว่างการทดสอบอัลกอริทึม ฉันคำนวณราคาออปชั่นสำหรับค่าอินพุตแบบสุ่มโดยใช้ฟังก์ชันการกำหนดราคามาตรฐาน blsprice ที่นำไปใช้ในกล่องเครื่องมือทางการเงินของ MATLAB

น่าแปลกที่( อย่างน้อยสำหรับฉัน ),
ฟังก์ชันดูเหมือนว่าจะส่งกลับราคาตัวเลือกที่เป็นลบสำหรับชุดค่าผสมบางค่าที่ป้อน

เป็นตัวอย่างให้ทำดังนี้:

> [Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277)

Call =-7.2942e-15
Put = 100.9502

ถ้าฉันเปลี่ยนเวลาหมดอายุเป็น 0.79 หรือ 0.81 ค่าจะไม่ติดลบอย่างที่ฉันคาดไว้

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


person anw    schedule 18.08.2015    source แหล่งที่มา
comment
คำถามนี้อาจเหมาะสมกว่าสำหรับ การเงินเชิงปริมาณ? อย่างไรก็ตาม เนื่องจากค่านั้นน้อยมาก ฉันจึงสงสัยว่ามันเป็นเพียง ข้อผิดพลาดจุดลอยตัว เนื่องจากการตัดทอน ณ จุดใดจุดหนึ่งในการคำนวณภายใน อาจพิจารณาปัดเศษให้มีความแม่นยำที่เหมาะสม เช่น ทศนิยม 4 ตำแหน่ง? จากนั้นราคา Call จะกลายเป็น 0   -  person Dan    schedule 18.08.2015
comment
อาจเป็นคำถามที่ดีที่จะถามฝ่ายสนับสนุนของ MathWorks โดยยื่นคำขอบริการ. อาจเป็นข้อบกพร่องหรืออาจไม่บังคับใช้เงื่อนไขขอบเขต คุณยังสามารถดูโค้ดที่สำคัญได้ (หากไม่ได้คอมไพล์หรือ pcodeed) เพื่อดูว่าเกิดอะไรขึ้น: พิมพ์ edit blsprice ในหน้าต่างคำสั่งของคุณ   -  person horchler    schedule 18.08.2015


คำตอบ (2)


ฉันไม่รู้ว่าคุณใช้ Financial Toolbox เวอร์ชันใด แต่สำหรับฉัน (TB 2007b) มันใช้งานได้ดี

เมื่อทำงาน:

[Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277)

ฉันได้รับสิ่งต่อไปนี้:

Call = 9.3930e-016
Put = 100.9502

ซึ่งเป็นเชิงบวกจริงๆ

person JejeBelfort    schedule 16.02.2017

มาช้าแต่ก็เคยเจอแบบนี้นะ ค่าลบเล็กน้อยสามารถนำมาประกอบกับข้อผิดพลาดในการปัดเศษตัวเลขและ/หรือข้อผิดพลาดในการตัดทอนภายในรูทีนที่ใช้ในการคำนวณการแจกแจงแบบปกติสะสม

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

วิธีที่ผมคิดเมื่อเคยเจอมาก่อนคือ ในด้านการเงิน ความแปรปรวนของผลตอบแทนหุ้นประจำปีโดยทั่วไปจะอยู่ที่ 30% ซึ่งหมายความว่าผลตอบแทนเฉลี่ยมักจะถูกสุ่มตัวอย่างโดยมีข้อผิดพลาดมาตรฐานประมาณ 30% / sqrt(N) ซึ่งมีค่าประมาณ +/- 1% โดยสมมติว่าข้อมูลมีอายุ 2 ปี (ดังนั้น N = 260 x 2 = 520 ข้อมูลใด ๆ ที่คุณมีปัญหาอื่น ๆ ของการสันนิษฐานว่าคงที่) ดังนั้นบนพื้นฐานนั้น คำตอบที่คุณได้รับข้างต้นอาจถูกตีความว่าเป็นศูนย์เนื่องจากค่าความคลาดเคลื่อนที่ยอมรับได้

นอกจากนี้ โดยทั่วไปแล้วเราจะทำงานเพื่อความแม่นยำของเพนนี / เซ็นต์ และอีกครั้งบนพื้นฐานนั้น คำตอบที่คุณมีอาจตีความได้ว่าเป็นศูนย์

แค่คิดว่าฉันจะให้ 2c หวังว่านี่จะมีประโยชน์ในบางวิธี หากคุณยังคงตรวจสอบคำตอบอยู่!

person Jimmy    schedule 01.02.2016
comment
ดีใจจริงๆ ที่คุณก้าวไปอีกขั้น + มุมมองที่สวยงามเกี่ยวกับจุดอ่อนของสมมติฐานของแบบจำลอง ( ความคงที่ ) และระดับการสังเกตที่จำเป็นเพื่อแสดงลักษณะของการกระจายกระบวนการแบบไม่สุ่มของ สารตกค้าง โมเดลฟินเทคเกือบทั้งหมดมีข้อบกพร่องในแง่นี้ โดยใช้ คณิตศาสตร์เปล่า ถูกตัดขาดจากความเป็นจริงของลักษณะที่ไม่ต่อเนื่องของโดเมนปัญหา (เว้นแต่จะใช้ค่าแยกจากล่างขึ้นบนเป็นหลัก (ควอนตัมก้าว) และ เครื่องมือคำนวณที่เคารพความไม่ต่อเนื่องของค่าหลักดังกล่าวอย่างเต็มที่และก้าวต่อไปภายใน (แม้ในการไล่ระดับสี ฯลฯ )) สนุกมาก! - person user3666197; 16.02.2017