Skip to content

Commit 7cd2139

Browse files
authored
Merge pull request #6 from jackgillett101/master
Update pricing_engines.rst
2 parents 88f518f + 380fd9a commit 7cd2139

File tree

1 file changed

+89
-4
lines changed

1 file changed

+89
-4
lines changed

docs/pricing_engines.rst

Lines changed: 89 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,66 @@ MCEuropeanEngine
361361
362362
steps = 2
363363
rng = "pseudorandom" # could use "lowdiscrepancy"
364-
num_paths = 100000
364+
numPaths = 100000
365365
366-
engine = ql.MCEuropeanEngine(process, rng, steps, requiredSamples=num_paths)
366+
engine = ql.MCEuropeanEngine(process, rng, steps, requiredSamples=numPaths)
367+
368+
369+
AnalyticDiscreteGeometricAveragePriceAsianEngine
370+
************************************************
371+
372+
.. function:: ql.AnalyticDiscreteGeometricAveragePriceAsianEngine(GeneralizedBlackScholesProcess)
373+
374+
.. code-block:: python
375+
376+
today = ql.Date().todaysDate()
377+
riskFreeTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.05, ql.Actual365Fixed()))
378+
dividendTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.01, ql.Actual365Fixed()))
379+
volatility = ql.BlackVolTermStructureHandle(ql.BlackConstantVol(today, ql.NullCalendar(), 0.1, ql.Actual365Fixed()))
380+
initialValue = ql.QuoteHandle(ql.SimpleQuote(100))
381+
process = ql.BlackScholesMertonProcess(initialValue, riskFreeTS, dividendTS, volatility)
382+
383+
engine = ql.AnalyticDiscreteGeometricAveragePriceAsianEngine(process)
384+
385+
386+
MCDiscreteGeometricAPEngine
387+
***************************
388+
389+
.. function:: ql.MCDiscreteGeometricAPEngine(GeneralizedBlackScholesProcess, traits, brownianBridge=False, antitheticVariate=False, requiredSamples=None, requiredTolerance=None, maxSamples=None, seed=0)
390+
391+
.. code-block:: python
392+
393+
today = ql.Date().todaysDate()
394+
riskFreeTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.05, ql.Actual365Fixed()))
395+
dividendTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.01, ql.Actual365Fixed()))
396+
volatility = ql.BlackVolTermStructureHandle(ql.BlackConstantVol(today, ql.NullCalendar(), 0.1, ql.Actual365Fixed()))
397+
initialValue = ql.QuoteHandle(ql.SimpleQuote(100))
398+
process = ql.BlackScholesMertonProcess(initialValue, riskFreeTS, dividendTS, volatility)
399+
400+
traits = 'pr'
401+
numPaths = 100000
402+
403+
engine = ql.MCDiscreteGeometricAPEngine(process, traits, requiredSamples=numPaths)
404+
405+
406+
MCDiscreteArithmeticAPEngine
407+
****************************
408+
409+
.. function:: ql.MCDiscreteArithmeticAPEngine(GeneralizedBlackScholesProcess, traits, brownianBridge=False, antitheticVariate=False, controlVariate=False, requiredSamples=None, requiredTolerance=None, maxSamples=None, seed=0)
410+
411+
.. code-block:: python
412+
413+
today = ql.Date().todaysDate()
414+
riskFreeTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.05, ql.Actual365Fixed()))
415+
dividendTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.01, ql.Actual365Fixed()))
416+
volatility = ql.BlackVolTermStructureHandle(ql.BlackConstantVol(today, ql.NullCalendar(), 0.1, ql.Actual365Fixed()))
417+
initialValue = ql.QuoteHandle(ql.SimpleQuote(100))
418+
process = ql.BlackScholesMertonProcess(initialValue, riskFreeTS, dividendTS, volatility)
419+
420+
traits = 'pr'
421+
numPaths = 100000
422+
423+
engine = ql.MCDiscreteArithmeticAPEngine(process, traits, requiredSamples=numPaths)
367424
368425
369426
AnalyticHestonEngine
@@ -412,7 +469,35 @@ MCEuropeanHestonEngine
412469
413470
steps = 2
414471
rng = "pseudorandom" # could use "lowdiscrepancy"
415-
num_paths = 100000
472+
numPaths = 100000
473+
474+
engine = ql.MCEuropeanHestonEngine(hestonProcess, rng, steps, requiredSamples=numPaths)
475+
476+
477+
FdHestonVanillaEngine
478+
*********************
479+
480+
.. function:: ql.FdHestonVanillaEngine(HestonModel, tGrid=100, xGrid=100, vGrid=50, dampingSteps=0, FdmSchemeDesc==FdmSchemeDesc::Hundsdorfer(), leverageFct=LocalVolTermStructure())
481+
482+
.. code-block:: python
483+
484+
today = ql.Date().todaysDate()
485+
riskFreeTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.05, ql.Actual365Fixed()))
486+
dividendTS = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.01, ql.Actual365Fixed()))
487+
488+
initialValue = ql.QuoteHandle(ql.SimpleQuote(100))
489+
v0 = 0.005
490+
kappa = 0.8
491+
theta = 0.008
492+
rho = 0.2
493+
sigma = 0.1
494+
495+
hestonProcess = ql.HestonProcess(riskFreeTS, dividendTS, initialValue, v0, kappa, theta, sigma, rho)
496+
hestonModel = ql.HestonModel(hestonProcess)
497+
498+
tGrid, xGrid, vGrid = 100, 100, 50
499+
dampingSteps = 0
500+
fdScheme = ql.FdmSchemeDesc.ModifiedCraigSneyd()
416501
417-
engine = ql.MCEuropeanHestonEngine(hestonProcess, rng, steps, requiredSamples=num_paths)
502+
engine = ql.FdHestonVanillaEngine(hestonModel, tGrid, xGrid, vGrid, dampingSteps, fdScheme)
418503

0 commit comments

Comments
 (0)