BlackScholes

StockSharp.Algo.Derivatives

The model for calculating Greeks values by the Black-Scholes formula.

Implements: IBlackScholes

Constructors

BlackScholes
protected BlackScholes(IMarketDataProvider dataProvider, DateTime? expirationTime)
blackScholes = BlackScholes(dataProvider, expirationTime)

Base constructor for inherited models.

dataProvider
The market data provider.
expirationTime
Explicit option expiration moment. If null, ExpiryDate is used when available: with its time of day, or at the board's expiry time for a date alone.
BlackScholes
public BlackScholes(Security option, Security underlyingAsset, IMarketDataProvider dataProvider, DateTime? expirationTime)
blackScholes = BlackScholes(option, underlyingAsset, dataProvider, expirationTime)

Initializes a new instance of BlackScholes for a specific option with its underlying asset.

option
Options contract.
underlyingAsset
Underlying asset.
dataProvider
The market data provider.
expirationTime
Explicit option expiration moment. If null, ExpiryDate is used when available: with its time of day, or at the board's expiry time for a date alone.
BlackScholes
protected BlackScholes(Security underlyingAsset, IMarketDataProvider dataProvider, DateTime? expirationTime)
blackScholes = BlackScholes(underlyingAsset, dataProvider, expirationTime)

Initializes a new instance of the BlackScholes for an underlying asset only (non-option models).

underlyingAsset
Underlying asset.
dataProvider
The market data provider.
expirationTime
Explicit option expiration moment. If null, ExpiryDate is used when available: with its time of day, or at the board's expiry time for a date alone.

Properties

DataProvider
public virtual IMarketDataProvider DataProvider { get; }
value = blackScholes.DataProvider

The market data provider.

DefaultDeviation
public decimal? DefaultDeviation { get; }
value = blackScholes.DefaultDeviation

The standard deviation the option is quoted at: its implied volatility as a fraction. while no volatility is quoted, and then the model computes nothing for which the caller gives no deviation.

Dividend
public virtual decimal Dividend { get; set; }
value = blackScholes.Dividend
blackScholes.Dividend = value

The dividend amount on shares.

ExpirationTime
public virtual DateTime? ExpirationTime { get; set; }
value = blackScholes.ExpirationTime
blackScholes.ExpirationTime = value

Explicit expiration moment. If null, ExpiryDate is used when available: with its time of day, or at the board's expiry time for a date alone.

Option
public virtual Security Option { get; }
value = blackScholes.Option

Options contract.

OptionType
protected OptionTypes OptionType { get; }
value = blackScholes.OptionType

Option type.

RiskFree
public decimal RiskFree { get; set; }
value = blackScholes.RiskFree
blackScholes.RiskFree = value

The risk free interest rate.

RoundDecimals
public virtual int RoundDecimals { get; set; }
value = blackScholes.RoundDecimals
blackScholes.RoundDecimals = value

The number of decimal places at calculated values. The default is -1, which means no values rounding.

UnderlyingAsset
public virtual Security UnderlyingAsset { get; set; }
value = blackScholes.UnderlyingAsset
blackScholes.UnderlyingAsset = value

Underlying asset.

Methods

CalcDelta
protected virtual decimal CalcDelta(decimal deviation, decimal assetPrice, double timeToExp)
result = blackScholes.CalcDelta(deviation, assetPrice, timeToExp)

To calculate the option delta from resolved inputs, before rounding.

deviation
Standard deviation.
assetPrice
Underlying asset price.
timeToExp
The option period before the expiration.

Returns: Option delta.

CalcGamma
protected virtual decimal CalcGamma(decimal deviation, decimal assetPrice, double timeToExp)
result = blackScholes.CalcGamma(deviation, assetPrice, timeToExp)

To calculate the option gamma from resolved inputs, before rounding.

deviation
Standard deviation.
assetPrice
Underlying asset price.
timeToExp
The option period before the expiration.

Returns: Option gamma.

CalcPremium
protected virtual decimal CalcPremium(decimal deviation, decimal assetPrice, double timeToExp)
result = blackScholes.CalcPremium(deviation, assetPrice, timeToExp)

To calculate the option premium from the model inputs already resolved by Decimal}).

deviation
Standard deviation.
assetPrice
Underlying asset price.
timeToExp
The option period before the expiration.

Returns: The option premium.

CalcRho
protected virtual decimal CalcRho(decimal deviation, decimal assetPrice, double timeToExp)
result = blackScholes.CalcRho(deviation, assetPrice, timeToExp)

To calculate the option rho from resolved inputs, before rounding.

deviation
Standard deviation.
assetPrice
Underlying asset price.
timeToExp
The option period before the expiration.

Returns: Option rho.

CalcTheta
protected virtual decimal CalcTheta(decimal deviation, decimal assetPrice, double timeToExp)
result = blackScholes.CalcTheta(deviation, assetPrice, timeToExp)

To calculate the option theta from resolved inputs, before rounding.

deviation
Standard deviation.
assetPrice
Underlying asset price.
timeToExp
The option period before the expiration.

Returns: Option theta.

CalcVega
protected virtual decimal CalcVega(decimal deviation, decimal assetPrice, double timeToExp)
result = blackScholes.CalcVega(deviation, assetPrice, timeToExp)

To calculate the option vega from resolved inputs, before rounding.

deviation
Standard deviation.
assetPrice
Underlying asset price.
timeToExp
The option period before the expiration.

Returns: Option vega.

D1
protected virtual double D1(decimal deviation, decimal assetPrice, double timeToExp)
result = blackScholes.D1(deviation, assetPrice, timeToExp)

To calculate the d1 parameter of the option fulfilment probability estimating.

deviation
Standard deviation.
assetPrice
Underlying asset price.
timeToExp
The option period before the expiration.

Returns: The d1 parameter.

Delta
public virtual decimal? Delta(DateTime currentTime, decimal? deviation, decimal? assetPrice)
result = blackScholes.Delta(currentTime, deviation, assetPrice)

To calculate the option delta.

currentTime
The current time.
deviation
Standard deviation.
assetPrice
Underlying asset price.

Returns: The option delta. If the value is equal to , then the value calculation currently is impossible.

Gamma
public virtual decimal? Gamma(DateTime currentTime, decimal? deviation, decimal? assetPrice)
result = blackScholes.Gamma(currentTime, deviation, assetPrice)

To calculate the option gamma.

currentTime
The current time.
deviation
Standard deviation.
assetPrice
Underlying asset price.

Returns: The option gamma. If the value is equal to , then the value calculation currently is impossible.

GetAssetPrice
public decimal? GetAssetPrice(decimal? assetPrice)
result = blackScholes.GetAssetPrice(assetPrice)

To get the price of the underlying asset.

assetPrice
The price of the underlying asset if it is specified.

Returns: The price of the underlying asset. If the value is equal to , then the value calculation currently is impossible.

GetExpirationTimeLine
public virtual double? GetExpirationTimeLine(DateTime currentTime)
result = blackScholes.GetExpirationTimeLine(currentTime)

The time before expiration calculation.

currentTime
The current time.

Returns: The time remaining until expiration. If the value is equal to , then the value calculation currently is impossible.

GetInputs
protected ValueTuple<decimal, decimal, double>? GetInputs(DateTime currentTime, decimal? deviation, decimal? assetPrice)
result = blackScholes.GetInputs(currentTime, deviation, assetPrice)

What every value of the model is computed from: the deviation the caller gives or the one quoted, the asset price the caller gives or the last trade, and the time left to expiry.

currentTime
The current time.
deviation
The standard deviation, or for the quoted one.
assetPrice
The price of the underlying asset, or for its last trade.

Returns: The inputs, or when one of them is not known.

ImpliedVolatility
public virtual decimal? ImpliedVolatility(DateTime currentTime, decimal premium, decimal? assetPrice)
result = blackScholes.ImpliedVolatility(currentTime, premium, assetPrice)

To calculate the implied volatility.

currentTime
The current time.
premium
The option premium.
assetPrice
Underlying asset price.

Returns: The implied volatility. If the value is equal to , then the value calculation currently is impossible.

IsExpired
internal bool IsExpired(DateTime currentTime)
result = blackScholes.IsExpired(currentTime)

Whether the option has expired by the given moment, as the model takes its expiry.

currentTime
The current time.

Returns: when the expiry is known and is not later than .

Payoff
internal decimal? Payoff(decimal? assetPrice)
result = blackScholes.Payoff(assetPrice)

What the option pays at its expiry, before rounding: its intrinsic value at the price of the underlying asset.

assetPrice
The price of the underlying asset if it is specified.

Returns: The payoff. If the value is equal to , then the price of the underlying asset is unknown.

PayoffDelta
internal decimal? PayoffDelta(decimal? assetPrice)
result = blackScholes.PayoffDelta(assetPrice)

The slope of what the option pays at its expiry: the asset it delivers, one for one while it is in the money.

assetPrice
The price of the underlying asset if it is specified.

Returns: The delta of the payoff. If the value is equal to , then the price of the underlying asset is unknown.

Premium
public virtual decimal? Premium(DateTime currentTime, decimal? deviation, decimal? assetPrice)
result = blackScholes.Premium(currentTime, deviation, assetPrice)

To calculate the option premium.

currentTime
The current time.
deviation
Standard deviation.
assetPrice
Underlying asset price.

Returns: The option premium. If the value is equal to , then the value calculation currently is impossible.

Rho
public virtual decimal? Rho(DateTime currentTime, decimal? deviation, decimal? assetPrice)
result = blackScholes.Rho(currentTime, deviation, assetPrice)

To calculate the option rho.

currentTime
The current time.
deviation
Standard deviation.
assetPrice
Underlying asset price.

Returns: The option rho. If the value is equal to , then the value calculation currently is impossible.

Theta
public virtual decimal? Theta(DateTime currentTime, decimal? deviation, decimal? assetPrice)
result = blackScholes.Theta(currentTime, deviation, assetPrice)

To calculate the option theta.

currentTime
The current time.
deviation
Standard deviation.
assetPrice
Underlying asset price.

Returns: The option theta. If the value is equal to , then the value calculation currently is impossible.

TryRound
protected decimal? TryRound(decimal? value)
result = blackScholes.TryRound(value)

To round to RoundDecimals.

value
The initial value.

Returns: The rounded value.

Vega
public virtual decimal? Vega(DateTime currentTime, decimal? deviation, decimal? assetPrice)
result = blackScholes.Vega(currentTime, deviation, assetPrice)

To calculate the option vega.

currentTime
The current time.
deviation
Standard deviation.
assetPrice
Underlying asset price.

Returns: The option vega. If the value is equal to , then the value calculation currently is impossible.