Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ clean:
find quantlib -name \*.c -exec rm {} +
find quantlib -name \*.h -exec rm {} +
-rm quantlib/termstructures/yields/{piecewise_yield_curve,discount_curve,forward_curve,zero_curve}.{pxd,pyx}
-rm quantlib/handle.{pxd,pyx}
rm -rf build
rm -rf dist

Expand Down
2 changes: 1 addition & 1 deletion quantlib/_cashflow.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ from quantlib.types cimport Real
from libcpp cimport bool
from libcpp.vector cimport vector

from quantlib.handle cimport shared_ptr, optional
from quantlib.ext cimport shared_ptr, optional
from quantlib.time._date cimport Date

cdef extern from 'ql/event.hpp' namespace 'QuantLib' nogil:
Expand Down
17 changes: 17 additions & 0 deletions quantlib/_handle.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from libcpp cimport bool
from .ext cimport shared_ptr

cdef extern from 'ql/handle.hpp' namespace 'QuantLib' nogil:
cdef cppclass Handle[T]:
Handle()
Handle(Handle&)
Handle(shared_ptr[T]&)
Handle(shared_ptr[T]&, bool registerAsObserver)
shared_ptr[T]& currentLink()
bool empty()

cdef cppclass RelinkableHandle[T](Handle):
RelinkableHandle()
RelinkableHandle(shared_ptr[T]&, bool registerAsObserver)
void linkTo(shared_ptr[T]&, bool registerAsObserver)
void reset()
2 changes: 1 addition & 1 deletion quantlib/_instrument.pxd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from quantlib.types cimport Real

from quantlib.handle cimport shared_ptr
from .ext cimport shared_ptr
from quantlib.pricingengines._pricing_engine cimport PricingEngine
from quantlib.time._date cimport Date
from libcpp.string cimport string
Expand Down
2 changes: 1 addition & 1 deletion quantlib/_observable.pxd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .handle cimport shared_ptr
from .ext cimport shared_ptr
from .types cimport Size

cdef extern from 'ql/patterns/observable.hpp' namespace 'QuantLib' nogil:
Expand Down
2 changes: 1 addition & 1 deletion quantlib/_option.pxd
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from ._instrument cimport Instrument
from ._exercise cimport Exercise
from ._payoffs cimport Payoff
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr


cdef extern from 'ql/option.hpp' namespace 'QuantLib' nogil:
Expand Down
3 changes: 1 addition & 2 deletions quantlib/_settings.pxd
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport optional, shared_ptr
from quantlib._observable cimport Observable
from quantlib.time._date cimport Date
from libcpp cimport bool
from .handle cimport optional

cdef extern from "ql/settings.hpp" namespace "QuantLib" nogil:
cdef cppclass Settings:
Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflow.pxd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cimport quantlib._cashflow as _cf

from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from libcpp.vector cimport vector

cdef class CashFlow:
Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflow.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ from libcpp.vector cimport vector
from libcpp cimport bool
from cpython.datetime cimport date, import_datetime
from cython.operator cimport dereference as deref, preincrement as preinc
from quantlib.handle cimport shared_ptr, optional
from quantlib.ext cimport shared_ptr, optional

import_datetime()

Expand Down
4 changes: 2 additions & 2 deletions quantlib/cashflows/_cap_floored_coupon.pxd
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
include '../types.pxi'
from libcpp cimport bool
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from quantlib.indexes._ibor_index cimport IborIndex
from quantlib.indexes._swap_index cimport SwapIndex
from quantlib.time._date cimport Date
from quantlib.time._daycounter cimport DayCounter
from ._floating_rate_coupon cimport FloatingRateCoupon
from ._coupon_pricer cimport FloatingRateCouponPricer

cdef extern from 'ql/cashflows/capflooredcoupon.hpp' namespace 'QuantLib':
cdef extern from 'ql/cashflows/capflooredcoupon.hpp' namespace 'QuantLib' nogil:
# Capped and/or floored floating-rate coupon
# The payoff $P$ of a capped floating-rate coupon is:
# \[ P = N \times T \times \min(a L + b, C). \]
Expand Down
4 changes: 2 additions & 2 deletions quantlib/cashflows/_cms_coupon.pxd
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
include '../types.pxi'

from libcpp cimport bool
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from quantlib.time._date cimport Date
from quantlib.time._daycounter cimport DayCounter
from quantlib.indexes._swap_index cimport SwapIndex
from ._floating_rate_coupon cimport FloatingRateCoupon

cdef extern from 'ql/cashflows/cmscoupon.hpp' namespace 'QuantLib':
cdef extern from 'ql/cashflows/cmscoupon.hpp' namespace 'QuantLib' nogil:
cdef cppclass CmsCoupon(FloatingRateCoupon):
CmsCoupon(const Date& paymentDate,
Real nominal,
Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflows/_conundrum_pricer.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ cdef extern from 'ql/cashflows/conundrumpricer.hpp' namespace 'QuantLib::GFuncti
ParallelShifts
NonParallelShifts

cdef extern from 'ql/cashflows/conundrumpricer.hpp' namespace 'QuantLib':
cdef extern from 'ql/cashflows/conundrumpricer.hpp' namespace 'QuantLib' nogil:
cdef cppclass HaganPricer(CmsCouponPricer):
pass

Expand Down
14 changes: 7 additions & 7 deletions quantlib/cashflows/_coupon_pricer.pxd
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from libcpp cimport bool
from quantlib.types cimport Rate, Real

from quantlib.handle cimport shared_ptr, Handle
from quantlib.ext cimport shared_ptr, optional
from quantlib.handle cimport Handle
from quantlib.termstructures.volatility.optionlet._optionlet_volatility_structure cimport OptionletVolatilityStructure
from quantlib.termstructures.volatility.swaption._swaption_vol_structure cimport SwaptionVolatilityStructure
from quantlib._cashflow cimport Leg
Expand All @@ -10,7 +12,6 @@ from quantlib._quote cimport Quote
cdef extern from 'ql/cashflows/couponpricer.hpp' namespace 'QuantLib' nogil:

cdef cppclass FloatingRateCouponPricer:
FloatingRateCouponPricer() except +
Real swapletPrice() except +
Rate swapletRate() except +
Real capletPrice(Rate effectiveCap) except +
Expand All @@ -20,21 +21,20 @@ cdef extern from 'ql/cashflows/couponpricer.hpp' namespace 'QuantLib' nogil:
void initialize(const FloatingRateCoupon& coupon)

cdef cppclass IborCouponPricer(FloatingRateCouponPricer):
IborCouponPricer() except +
IborCouponPricer(
const Handle[OptionletVolatilityStructure]& v) except +
const Handle[OptionletVolatilityStructure]& v,
optional[bool] useIndexedCoupon) except +

cdef cppclass BlackIborCouponPricer(IborCouponPricer):
BlackIborCouponPricer() except +
BlackIborCouponPricer(
Handle[OptionletVolatilityStructure]& v,
TimingAdjustment timing_adjustment,
const Handle[Quote] correlation) except +
const Handle[Quote] correlation,
optional[bool] useIndexedCoupon) except +

void setCouponPricer(Leg& leg, shared_ptr[FloatingRateCouponPricer]& pricer) except +

cdef cppclass CmsCouponPricer(FloatingRateCouponPricer):
CmsCouponPricer()
CmsCouponPricer(const Handle[SwaptionVolatilityStructure]& v) except +
Handle[SwaptionVolatilityStructure] swaptionVolatility()
void setSwaptionVolatility(const Handle[SwaptionVolatilityStructure]& v)
Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflows/_dividend.pxd
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from libcpp.vector cimport vector
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from quantlib.types cimport Real
from quantlib.time._date cimport Date

Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflows/_floating_rate_coupon.pxd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from quantlib.types cimport Natural, Rate, Real, Spread
from libcpp cimport bool
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from quantlib.time._date cimport Date
from quantlib.time._daycounter cimport DayCounter
from quantlib._cashflow cimport CashFlow
Expand Down
4 changes: 2 additions & 2 deletions quantlib/cashflows/_ibor_coupon.pxd
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
include '../types.pxi'

from libcpp cimport bool
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from quantlib.time._date cimport Date
from quantlib.time._daycounter cimport DayCounter
from quantlib._cashflow cimport CashFlow
from quantlib._interest_rate cimport InterestRate
from quantlib.cashflows._floating_rate_coupon cimport FloatingRateCoupon
from quantlib.indexes._ibor_index cimport IborIndex

cdef extern from 'ql/cashflows/iborcoupon.hpp' namespace 'QuantLib':
cdef extern from 'ql/cashflows/iborcoupon.hpp' namespace 'QuantLib' nogil:
cdef cppclass IborCoupon(FloatingRateCoupon):
IborCoupon(const Date& paymentDate,
Real nominal,
Expand Down
5 changes: 3 additions & 2 deletions quantlib/cashflows/_inflation_coupon_pricer.pxd
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from quantlib.handle cimport shared_ptr, Handle
from quantlib.handle cimport Handle
from quantlib.ext cimport shared_ptr
from quantlib.termstructures._yield_term_structure cimport YieldTermStructure
from quantlib._cashflow cimport Leg
cdef extern from 'ql/cashflows/inflationcouponpricer.hpp' namespace 'QuantLib':
cdef extern from 'ql/cashflows/inflationcouponpricer.hpp' namespace 'QuantLib' nogil:
cdef cppclass InflationCouponPricer:
pass

Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflows/_overnight_indexed_coupon.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ from quantlib.types cimport Integer, Natural, Rate, Real, Spread, Time

from libcpp cimport bool
from libcpp.vector cimport vector
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from quantlib.time._date cimport Date
from quantlib.time._daycounter cimport DayCounter
from quantlib.time._schedule cimport Schedule
Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflows/cap_floored_coupon.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ include '../types.pxi'
from libcpp cimport bool
from cython.operator cimport dereference as deref
from quantlib.utilities.null cimport Null
from quantlib.handle cimport shared_ptr, static_pointer_cast
from quantlib.ext cimport shared_ptr, static_pointer_cast
from quantlib.cashflows.coupon_pricer cimport FloatingRateCouponPricer
from quantlib.indexes.ibor_index cimport IborIndex
from quantlib.indexes.swap_index cimport SwapIndex
Expand Down
4 changes: 2 additions & 2 deletions quantlib/cashflows/cms_coupon.pyx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
include '../types.pxi'
from quantlib.types cimport Natural, Real
from libcpp cimport bool
from cython.operator cimport dereference as deref
from quantlib.handle cimport shared_ptr, static_pointer_cast
from quantlib.ext cimport shared_ptr, static_pointer_cast
from quantlib.time.date cimport Date
from quantlib.time.daycounter cimport DayCounter
from quantlib.indexes.swap_index cimport SwapIndex
Expand Down
42 changes: 21 additions & 21 deletions quantlib/cashflows/conundrum_pricer.pyx
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
include '../types.pxi'

from quantlib.types cimport Rate, Real
from . cimport _conundrum_pricer as _conp
from . cimport _coupon_pricer as _cp
cimport quantlib.termstructures.volatility.swaption._swaption_vol_structure as _svs
from quantlib.termstructures.volatility.swaption.swaption_vol_structure \
cimport SwaptionVolatilityStructure
from quantlib.handle cimport Handle, shared_ptr, static_pointer_cast
from quantlib.handle cimport HandleSwaptionVolatilityStructure
from quantlib.quote cimport Quote

cpdef enum YieldCurveModel:
Expand All @@ -16,27 +11,32 @@ cpdef enum YieldCurveModel:


cdef class NumericHaganPricer(CmsCouponPricer):
def __init__(self, swaption_vol not None,
def __init__(self, HandleSwaptionVolatilityStructure swaption_vol not None,
YieldCurveModel yieldcurve_model,
Quote mean_reversion not None,
Rate lower_limit=0.,
Rate upper_limit=1.,
Real precision=1e-6):

self._thisptr = shared_ptr[_cp.FloatingRateCouponPricer](new _conp.NumericHaganPricer(
SwaptionVolatilityStructure.swaption_vol_handle(swaption_vol),
yieldcurve_model,
mean_reversion.handle(),
lower_limit,
upper_limit,
precision
))
self._thisptr.reset(
new _conp.NumericHaganPricer(
swaption_vol.handle(),
yieldcurve_model,
mean_reversion.handle(),
lower_limit,
upper_limit,
precision
)
)

cdef class AnalyticHaganPricer(CmsCouponPricer):
def __init__(self, swaption_vol not None,
def __init__(self, HandleSwaptionVolatilityStructure swaption_vol not None,
YieldCurveModel yieldcurve_model,
Quote mean_reversion not None):
self._thisptr = shared_ptr[_cp.FloatingRateCouponPricer](new _conp.AnalyticHaganPricer(
SwaptionVolatilityStructure.swaption_vol_handle(swaption_vol),
yieldcurve_model,
mean_reversion.handle()))
self._thisptr.reset(
new _conp.AnalyticHaganPricer(
swaption_vol.handle(),
yieldcurve_model,
mean_reversion.handle()
)
)
2 changes: 1 addition & 1 deletion quantlib/cashflows/coupon.pyx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from cython.operator cimport dereference as deref
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from quantlib.time.date cimport Date, date_from_qldate
cimport quantlib.time._date as _date
from quantlib.time.daycounter cimport DayCounter
Expand Down
2 changes: 1 addition & 1 deletion quantlib/cashflows/coupon_pricer.pxd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from quantlib.handle cimport shared_ptr
from quantlib.ext cimport shared_ptr
from . cimport _coupon_pricer as _cp

cdef class FloatingRateCouponPricer:
Expand Down
42 changes: 21 additions & 21 deletions quantlib/cashflows/coupon_pricer.pyx
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
from libcpp cimport bool
from quantlib.types cimport Rate
from cython.operator cimport dereference as deref
from quantlib.cashflow cimport Leg
from quantlib.termstructures.volatility.optionlet.optionlet_volatility_structure cimport OptionletVolatilityStructure
cimport quantlib.termstructures.volatility.optionlet._optionlet_volatility_structure as _ovs
from quantlib.termstructures.volatility.swaption.swaption_vol_structure \
cimport SwaptionVolatilityStructure
from quantlib.termstructures._vol_term_structure cimport VolatilityTermStructure
cimport quantlib.termstructures.volatility.swaption._swaption_vol_structure as _svs
from quantlib.handle cimport Handle, static_pointer_cast
from quantlib.ext cimport static_pointer_cast, optional
from quantlib.handle cimport Handle, HandleSwaptionVolatilityStructure, HandleOptionletVolatilityStructure
from quantlib.time.calendar cimport Calendar
from quantlib.time.date cimport Date
from quantlib.time.daycounter cimport DayCounter
Expand Down Expand Up @@ -53,16 +50,19 @@ cpdef enum TimingAdjustment:
cdef class BlackIborCouponPricer(IborCouponPricer):

def __init__(self,
OptionletVolatilityStructure ovs=OptionletVolatilityStructure(),
HandleOptionletVolatilityStructure ovs=HandleOptionletVolatilityStructure(),
TimingAdjustment timing_adjustment=Black76,
Quote correlation=SimpleQuote(1.)):
cdef Handle[_ovs.OptionletVolatilityStructure] ovs_handle = \
Handle[_ovs.OptionletVolatilityStructure](ovs._thisptr)
self._thisptr = shared_ptr[_cp.FloatingRateCouponPricer](
Quote correlation=SimpleQuote(1.),
use_indexed_coupon=None):
cdef optional[bool] indexed_coupon
if use_indexed_coupon is not None:
indexed_coupon = <bool>use_indexed_coupon
self._thisptr.reset(
new _cp.BlackIborCouponPricer(
ovs_handle,
ovs.handle(),
timing_adjustment,
correlation.handle()
correlation.handle(),
indexed_coupon,
)
)

Expand All @@ -80,14 +80,14 @@ cdef class CmsCouponPricer(FloatingRateCouponPricer):

@property
def swaption_volatility(self):
cdef Handle[_svs.SwaptionVolatilityStructure] vol_handle = \
(<_cp.CmsCouponPricer*>self._thisptr.get()).swaptionVolatility()
cdef SwaptionVolatilityStructure instance = (SwaptionVolatilityStructure.
__new__(SwaptionVolatilityStructure))
if not vol_handle.empty():
instance._thisptr = vol_handle.currentLink()
cdef HandleSwaptionVolatilityStructure instance = (
HandleSwaptionVolatilityStructure.__new__(HandleSwaptionVolatilityStructure)
)
instance._handle = new Handle[_svs.SwaptionVolatilityStructure](
(<_cp.CmsCouponPricer*>self._thisptr.get()).swaptionVolatility()
)
return instance

@swaption_volatility.setter
def swaption_volatility(self, v not None):
(<_cp.CmsCouponPricer*>self._thisptr.get()).setSwaptionVolatility(SwaptionVolatilityStructure.swaption_vol_handle(v))
def swaption_volatility(self, HandleSwaptionVolatilityStructure v not None):
(<_cp.CmsCouponPricer*>self._thisptr.get()).setSwaptionVolatility(v.handle())
7 changes: 3 additions & 4 deletions quantlib/cashflows/cpi_coupon_pricer.pyx
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
from quantlib.handle cimport shared_ptr
from ._inflation_coupon_pricer cimport InflationCouponPricer as QlInflationCouponPricer
from quantlib.termstructures.yield_term_structure cimport HandleYieldTermStructure
from quantlib.handle cimport HandleYieldTermStructure

cdef class CPICouponPricer(InflationCouponPricer):
def __init__(self, HandleYieldTermStructure nominal_ts):
self._thisptr = shared_ptr[QlInflationCouponPricer](
new _cpi.CPICouponPricer(nominal_ts.handle)
self._thisptr.reset(
new _cpi.CPICouponPricer(nominal_ts.handle())
)
Loading
Loading