كيفية حساب قيمة الخيارات القصيرة استدعاء مع صيغة سوداء Scholes؟
-
28-09-2019 - |
سؤال
أحاول حساب ربح/خسارة مكالمة قصيرة في أوقات مختلفة في المستقبل ، لكنه لا يخرج بشكل صحيح. بالمقارنة مع وقت انتهاء الصلاحية ، فإن تلك التي تاركها مع مرور الوقت لديها ربح أقل فوق سعر الإضراب ، ولكن في مرحلة ما من الإضراب ، لا يفقدون القيمة بسرعة مثل خط T = 0. فيما يلي الصيغة في الرمز الكاذب ، ما الخطأ الذي أفعله؟
profit(stockprice) = -1 * (black_scholes_price_of_call(stockPrice,optionStrike,daysTillExpiration) - premium);
رمز MATLAB الحقيقي:
function [ x ] = sell_call( current,strike,price,days)
if (days > 0)
Sigma = .25;
Rates = 0.05;
Settle = today;
Maturity = today + days;
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates',...
Maturity, 'Rates', Rates, 'Compounding', -1);
StockSpec = stockspec(Sigma, current);
x = -1 * (optstockbybls(RateSpec, StockSpec, Settle, Maturity, 'call', strike) - price);
else
x = min(price,strike-current-price);
end
نهاية
شكرا ، CP
المحلول 2
لقد وجدت المشكلة ، كان الأمر يتعلق بحجة المعدلات. عندما تمر في سعر الفائدة ، فإنه يؤثر على تسعير الخيار.
نصائح أخرى
صيغتك ليست صحيحة. لا أعرف لماذا تحتاج إلى هذا القيادة -1 كمضاعف له ، لأنه عندما أقوم بتوزيعها "الصيغة" بسيطة:
profit(stockprice) = premium - black_scholes_price_of_call(stockPrice,optionStrike,daysTillExpiration);
بسيط جدا. وهذا يعني أن المشكلة مدفونة في هذه الوظيفة لسعر المكالمة ، أليس كذلك؟
عندما أقارن صيغتك بما أراه على أنه التعريف على ويكيبيديا ، لا أرى مراسلات على الإطلاق. رمز MATLAB الخاص بك لا يساعد ، أيضا. احرص على الوظائف وانظر إلى أين أخطأت.
هل كتبت هؤلاء؟ كيف اختبرتها قبل تجميعها في هذه الوظيفة الأكبر. اختبر الكتل الأصغر قبل تجميعها في الشيء الأكبر.
ما هو خط الأساس الذي تختبره؟ ما الموقف المعروف الذي تقارنه حسابك؟ هناك الكثير من الآلات الحاسبة BS المتاحة. ربما يمكنك استخدام واحد من هؤلاء.
أفترض أنه خطأ في التعليمات البرمجية بدلاً من Matlab. أو كنت قد أسيء فهم معنى المعلمات التي تمر بها. انظر إلى أغراضك بعناية أكبر ، وأعد قراءة الوثائق لهذه الوظيفة ، واحصل على مجموعة جيدة من الحالات الأساسية.