Harga opsi negatif untuk nilai input tertentu di MATLAB?

Dalam pengujian algoritma saya menghitung harga opsi untuk nilai input acak menggunakan fungsi penetapan harga standar blsprice yang diterapkan di Financial Toolbox MATLAB.

Yang mengejutkan(setidaknya bagi saya),
fungsi tersebut tampaknya mengembalikan harga opsi negatif untuk kombinasi nilai input tertentu.

Sebagai contoh ambil yang berikut ini:

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

Call =-7.2942e-15
Put = 100.9502

Jika saya mengubah waktu kedaluwarsa menjadi 0.79 atau 0.81, nilainya menjadi non-negatif seperti yang saya harapkan.

Adakah di antara Anda yang pernah mengalami hal serupa dan dapat memberikan penjelasan singkat mengapa hal itu terjadi?


person anw    schedule 18.08.2015    source sumber
comment
Pertanyaan ini mungkin lebih tepat untuk Keuangan Kuantitatif? Namun, karena nilainya sangat kecil, saya curiga itu hanyalah kesalahan floating point karena pemotongan di beberapa titik dalam perhitungan internal. Mungkin pertimbangkan untuk membulatkan ke presisi yang sesuai, misalnya 4 koma desimal? Maka harga Call menjadi 0.   -  person Dan    schedule 18.08.2015
comment
Mungkin ada baiknya juga untuk menanyakan dukungan MathWorks dengan mengajukan permintaan layanan. Ini mungkin bug atau mereka mungkin tidak menerapkan kondisi batas. Anda mungkin juga dapat melihat kode yang mendasarinya (jika tidak dikompilasi atau pcodeed) untuk melihat apa yang terjadi: ketik edit blsprice di Jendela Perintah Anda.   -  person horchler    schedule 18.08.2015


Jawaban (2)


Saya tidak tahu versi Financial Toolbox mana yang Anda gunakan tetapi bagi saya (TB 2007b) versi tersebut berfungsi dengan baik.

Saat berjalan:

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

Saya mendapatkan yang berikut ini:

Call = 9.3930e-016
Put = 100.9502

Yang memang positif

person JejeBelfort    schedule 16.02.2017

Agak terlambat tetapi saya pernah menemukan hal seperti ini sebelumnya. Nilai negatif yang kecil dapat dikaitkan dengan kesalahan pembulatan numerik dan/atau kesalahan pemotongan dalam rutinitas yang digunakan untuk menghitung distribusi normal kumulatif.

Seperti yang Anda ketahui, komputer tidak sempurna dan kesalahan numerik kecil selalu terjadi dalam semua perhitungan, dalam pandangan saya, oleh karena itu, pertanyaan yang harus ditanyakan adalah - berapa keakuratan parameter masukan yang digunakan dan oleh karena itu berapa toleransi kesalahan untuk keluaran.

Cara saya memikirkannya ketika saya menemukannya sebelumnya adalah, di bidang keuangan, varians pengembalian harga saham tahunan biasanya berada di urutan 30% yang berarti pengembalian rata-rata biasanya diambil sampelnya dengan kesalahan standar sekitar 30% / sqrt(N) yang kira-kira sebesar +/- 1% dengan asumsi data bernilai 2 tahun (jadi N = 260 x 2 = 520, semakin banyak data yang Anda miliki, masalah asumsi stasioneritas lainnya). Oleh karena itu atas dasar itu jawaban yang Anda dapatkan di atas bisa saja diartikan nol mengingat toleransi kesalahannya.

Kami juga biasanya bekerja dengan akurasi sen / sen dan sekali lagi atas dasar itu jawaban yang Anda miliki dapat ditafsirkan sebagai nol.

Saya pikir saya akan memberikan 2c saya semoga ini bermanfaat dalam beberapa hal jika Anda masih memeriksa jawabannya!

person Jimmy    schedule 01.02.2016
comment
Sungguh senang Anda mengambil langkah, + pandangan indah tentang kelemahan asumsi model (stasioneritas) dan skala observasi yang diperlukan untuk menunjukkan karakter distribusi proses residual yang tidak acak. Hampir semua model fintech memiliki kelemahan dalam hal ini - menggunakan matematika telanjang, terputus dari realitas sifat diskrit dari domain masalah (kecuali jika menggunakan nilai-nilai diskrit dari bawah ke atas (berlangkah kuantum) dan alat komputasi, yang sepenuhnya menghormati diskontinuitas nilai utama tersebut dan terus melangkah secara internal (bahkan dalam gradien, dll.)). Sangat menyenangkan! - person user3666197; 16.02.2017