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 boost::shared_ptr< StrikedTypePayoff > &, const boost::shared_ptr< Exercise > &)
Volatility | impliedVolatility (Real price, const boost::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 boost::shared_ptr< Payoff > &, const boost::shared_ptr< Exercise > &)
void | fetchResults (const PricingEngine::results *) const
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
Public Member Functions inherited from Option
| Option (const boost::shared_ptr< Payoff > &payoff, const boost::shared_ptr< Exercise > &exercise)
void | setupArguments (PricingEngine::arguments *) const
boost::shared_ptr< Payoff > | payoff ()
boost::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 boost::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 ()
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< std::set< boost::shared_ptr< Observable > >::iterator, bool > | registerWith (const boost::shared_ptr< Observable > &)
void | registerWithObservables (const boost::shared_ptr< Observer > &)
Size | unregisterWith (const boost::shared_ptr< Observable > &)
void | unregisterWithAll ()

## Additional Inherited Members

Public Types inherited from Option
enum | Type { Put = -1, Call = 1 }
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
boost::shared_ptr< Payoff > | payoff_
boost::shared_ptr< Exercise > | exercise_
Protected Attributes inherited from Instrument
boost::shared_ptr< PricingEngine > | engine_
Real | NPV_
Real | errorEstimate_
Date | valuationDate_
std::map< std::string, boost::any > | additionalResults_
Protected Attributes inherited from LazyObject
bool | calculated_
bool | frozen_
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

Volatility impliedVolatility | ( | Real | price,
|  | const boost::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.