در بازار اختیار معامله یاد بگیر که ضرر نکنی ...سود خودش راهشو پیدا میکنه و وارد میشه
0

کد VBA بلک شولز

کد VBA بلک شولز

کد VBA بلک شولز : مدل بلک-شولز که به مدل بلک شولز مرتون (BSM) نیز معروف است، یکی از مفاهیم مهم در نظریه مالی مدرن است. این معادله ریاضی ارزش نظری مشتقات را بر اساس سایر ابزارهای سرمایه گذاری با در نظر گرفتن تأثیر زمان و سایر عوامل ریسک تخمین می زند. در سال ۱۹۷۳ توسعه یافت و هنوز به عنوان یکی از بهترین روش ها برای قیمت گذاری قرارداد اختیار معامله در نظر گرفته می شود.

مدل بلک شولز، با نام مستعار مدل بلک شولز مرتون (BSM)، یک معادله دیفرانسیل است که به طور گسترده برای قیمت گذاری قراردادهای اختیار معامله استفاده می شود.

مدل بلک شولز به پنج متغیر ورودی نیاز دارد: قیمت اعمال اختیار، قیمت فعلی سهام، زمان تا انقضا، نرخ بدون ریسک و نوسانات.

اگرچه معمولاً دقیق است، اما مدل بلک شولز مفروضات خاصی را ایجاد می کند که می تواند منجر به پیش بینی هایی شود که از نتایج دنیای واقعی متفاوت باشد.

مدل استاندارد BSM فقط برای قیمت گذاری آپشن های اروپایی استفاده می شود، زیرا در نظر نمی گیرد که گزینه های آمریکایی می توانند قبل از تاریخ انقضا اعمال شوند

فرضیات بلک شولز

هیچ سود سهامی در طول عمر اختیار معامله پرداخت نمی شود.

بازارها تصادفی هستند (یعنی حرکات بازار قابل پیش بینی نیست).

هیچ هزینه معامله ای در خرید اختیار وجود ندارد.

نرخ بدون ریسک و نوسانات دارایی پایه مشخص و ثابت است.

بازده دارایی پایه معمولاً توزیع می شود.

این اختیار اروپایی است و فقط در انقضا قابل استفاده است.

:Guide

Stock : قیمت سهم پایه

 Exercise : قیمت اعمال

Time : زمان باقی مانده تا سررسید

Interest : سود بانکی یا انتظار بازدهی

Divyield : سود تقسیمی

Sigma : نوسان پذیری

Function dOne(stock, exercise, Time, _
interest, divyield, sigma)
    dOne = (Log(stock / exercise) + _
    (interest - divyield) * Time) / _
    (sigma * Sqr(Time)) + 0.5 * sigma * _
    Sqr(Time)
End Function

Function dTwo(stock, exercise, Time, _
interest, divyield, sigma)
    dTwo = dOne(stock, exercise, Time, _
    interest, divyield, sigma) - sigma * _
    Sqr(Time)
End Function

Function BSMertonCall(stock, exercise, Time, _
interest, divyield, sigma)
    BSMertonCall = stock * Exp(-divyield * _
    Time) * Application.NormSDist _
    (dOne(stock, exercise, Time, _
    interest, divyield, sigma)) - exercise * _
    Exp(-Time * interest) * Application.NormSDist _
    (dTwo(stock, exercise, Time, interest, _
    divyield, sigma))
End Function

'Put pricing function uses put-call
'parity theorem
Function BSMertonPut(stock, exercise, Time, _
interest, divyield, sigma)
    BSMertonPut = BSMertonCall(stock, exercise, _
    Time, interest, divyield, sigma) + _
    exercise * Exp(-interest * Time) - _
    stock * Exp(-divyield * Time)
End Function

'The standard normal probability density,
'this is N'(x)
Function normaldf(X)
    normaldf = Exp(-X ^ 2 / 2) / _
    (Sqr(2 * Application.Pi()))
End Function

Function DeltaCall(stock, exercise, Time, _
interest, divyield, sigma)
    DeltaCall = Exp(-divyield * Time) * _
    Application.NormSDist(dOne(stock, exercise, _
    Time, interest, divyield, sigma))
End Function

Function DeltaPut(stock, exercise, Time, _
interest, divyield, sigma)
    DeltaPut = -Exp(-divyield * Time) * _
    Application.NormSDist(-dOne(stock, _
    exercise, Time, interest, divyield, _
    sigma))
End Function

Function OptionGamma(stock, exercise, Time, _
interest, divyield, sigma)
    temp = dOne(stock, exercise, Time, _
    interest, divyield, sigma)
    OptionGamma = Exp(-divyield * Time) * _
    Application.Norm_S_Dist(temp, 0) / _
    (stock * sigma * Sqr(Time))
End Function

Function Vega(stock, exercise, Time, _
interest, divyield, sigma)
    Vega = stock * Sqr(Time) * _
    normaldf(dOne(stock, exercise, _
    Time, interest, divyield, sigma)) _
    * Exp(-divyield * Time)
End Function
Function ThetaCall(stock, exercise, Time, interest, divyield, sigma)

    ThetaCall = -stock * normaldf _
    (dOne(stock, exercise, Time, _
    interest, divyield, sigma)) * _
    sigma * Exp(-divyield * Time) / _
    (۲ * Sqr(Time)) + divyield * stock * _
    Application.NormSDist(dOne(stock, _
    exercise, Time, interest, _
    divyield, sigma)) * Exp(-divyield * Time) _
    - interest * exercise * Exp(-interest * _
    Time) * Application.NormSDist _
    (dTwo(stock, exercise, Time, _
    interest, divyield, sigma))

   
End Function

Function ThetaPut(stock, exercise, Time, _
interest, divyield, sigma)
    ThetaPut = -stock * normaldf _
    (dOne(stock, exercise, _
    Time, interest, divyield, sigma)) * _
    sigma * Exp(-divyield * Time) / _
    (۲ * Sqr(Time)) - divyield * stock _
    * Application.NormSDist(-dOne(stock, _
    exercise, Time, interest, divyield, _
    sigma)) * Exp(-divyield * Time) _
    + interest * exercise * Exp _
    (-interest * Time) * Application.NormSDist _
    (-dTwo(stock, exercise, Time, _
    interest, divyield, sigma))
End Function

Function RhoCall(stock, exercise, Time, _
interest, divyield, sigma)
    RhoCall = exercise * Time * _
    Exp(-interest * Time) * _
    Application.NormSDist(dTwo _
    (stock, exercise, Time, interest, _
    divyield, sigma))
End Function

Function RhoPut(stock, exercise, Time, _
interest, divyield, sigma)
    RhoPut = -exercise * Time * _
    Exp(-interest * Time) * _
    Application.NormSDist(-dTwo _
    (stock, exercise, Time, interest, _
    divyield, sigma))
End Function



 

 

 

 

5/5 - (6 امتیاز)
دیدگاه کاربران
  • admin 6 بهمن 1401

    Visitor Rating: 5 Stars

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *