VanillaOption Class Reference
Financial instruments

Vanilla option (no discrete dividends, no barriers) on a single asset. More...

`#include <ql/instruments/vanillaoption.hpp>`

Inheritance diagram for VanillaOption:
[legend]

## Public Member Functions

| VanillaOption (const ext::shared_ptr< StrikedTypePayoff > &, const ext::shared_ptr< Exercise > &)
Volatility | impliedVolatility (Real price, const ext::shared_ptr< GeneralizedBlackScholesProcess > &process, Real accuracy=1.0e-4, Size maxEvaluations=100, Volatility minVol=1.0e-7, Volatility maxVol=4.0) const
Public Member Functions inherited from OneAssetOption
| OneAssetOption (const ext::shared_ptr< Payoff > &, const ext::shared_ptr< Exercise > &)
bool | isExpired () const
| returns whether the instrument might have value greater than zero.
Real | delta () const
Real | deltaForward () const
Real | elasticity () const
Real | gamma () const
Real | theta () const
Real | thetaPerDay () const
Real | vega () const
Real | rho () const
Real | dividendRho () const
Real | strikeSensitivity () const
Real | itmCashProbability () const
void | fetchResults (const PricingEngine::results *) const
Public Member Functions inherited from Option
| Option (const ext::shared_ptr< Payoff > &payoff, const ext::shared_ptr< Exercise > &exercise)
void | setupArguments (PricingEngine::arguments *) const
ext::shared_ptr< Payoff > | payoff ()
ext::shared_ptr< Exercise > | exercise ()
Public Member Functions inherited from Instrument
Real | NPV () const
| returns the net present value of the instrument.
Real | errorEstimate () const
| returns the error estimate on the NPV when available.
const Date & | valuationDate () const
| returns the date the net present value refers to.
template<typename T >
T | result (const std::string &tag) const
| returns any additional result returned by the pricing engine.
const std::map< std::string, boost::any > & | additionalResults () const
| returns all additional result returned by the pricing engine.
void | setPricingEngine (const ext::shared_ptr< PricingEngine > &)
| set the pricing engine to be used. More...
Public Member Functions inherited from LazyObject
void | update ()
void | recalculate ()
void | freeze ()
void | unfreeze ()
void | alwaysForwardNotifications ()
Public Member Functions inherited from Observable
| Observable (const Observable &)
Observable & | operator= (const Observable &)
void | notifyObservers ()
Public Member Functions inherited from Observer
| Observer (const Observer &)
Observer & | operator= (const Observer &)
std::pair< iterator, bool > | registerWith (const ext::shared_ptr< Observable > &)
void | registerWithObservables (const ext::shared_ptr< Observer > &)
Size | unregisterWith (const ext::shared_ptr< Observable > &)
void | unregisterWithAll ()
virtual void | deepUpdate ()

## Additional Inherited Members

Public Types inherited from Option
enum | Type { Put = -1, Call = 1 }
Public Types inherited from Observer
typedef boost::unordered_set< ext::shared_ptr< Observable > > | set_type
typedef set_type::iterator | iterator
Protected Member Functions inherited from OneAssetOption
void | setupExpired () const
Protected Member Functions inherited from Instrument
void | calculate () const
virtual void | performCalculations () const
Protected Member Functions inherited from LazyObject
Protected Attributes inherited from OneAssetOption
Real | delta_
Real | deltaForward_
Real | elasticity_
Real | gamma_
Real | theta_
Real | thetaPerDay_
Real | vega_
Real | rho_
Real | dividendRho_
Real | strikeSensitivity_
Real | itmCashProbability_
Protected Attributes inherited from Option
ext::shared_ptr< Payoff > | payoff_
ext::shared_ptr< Exercise > | exercise_
Protected Attributes inherited from Instrument
Real | NPV_
Real | errorEstimate_
Date | valuationDate_
std::map< std::string, boost::any > | additionalResults_
ext::shared_ptr< PricingEngine > | engine_
Protected Attributes inherited from LazyObject
bool | calculated_
bool | frozen_
bool | alwaysForward_
Related Functions inherited from Option
std::ostream & | operator<< (std::ostream &, Option::Type)

## Detailed Description

Vanilla option (no discrete dividends, no barriers) on a single asset.

Examples
  EquityOption.cpp.

## Member Function Documentation

## impliedVolatility()

Volatility impliedVolatility | ( | Real | price,
|  | const ext::shared_ptr< GeneralizedBlackScholesProcess > & | process,
|  | Real | accuracy = `1.0e-4`,
|  | Size | maxEvaluations = `100`,
|  | Volatility | minVol = `1.0e-7`,
|  | Volatility | maxVol = `4.0`
| ) |  | const

Warning:
  currently, this method returns the Black-Scholes implied volatility using analytic formulas for European options and a finite-difference method for American and Bermudan options. It will give unconsistent results if the pricing was performed with any other methods (such as jump-diffusion models.)

Warning:
  options with a gamma that changes sign (e.g., binary options) have values that are not monotonic in the volatility. In these cases, the calculation can fail and the result (if any) is almost meaningless. Another possible source of failure is to have a target value that is not attainable with any volatility, e.g., a target value lower than the intrinsic value in the case of American options.