Struct PyScenario
pub struct PyScenario {
pub(crate) inner: Scenario,
}Expand description
A named perturbation of the market, in the units its quotes are made in.
A shift is the move of the selected input’s quote: a continuously compounded zero rate for a discount, projection, repo or security-spread curve, a hazard for a credit curve. Legs apply in order, so two legs on one input compose.
Fields§
§inner: ScenarioImplementations§
§impl PyScenario
impl PyScenario
§impl PyScenario
impl PyScenario
pub(crate) fn __repr__(&self) -> String
pub(crate) fn shift(
&self,
selector: &str,
amount: f64,
shift_type: Option<Named<ShiftType>>,
) -> PyResult<Self>
pub(crate) fn shift( &self, selector: &str, amount: f64, shift_type: Option<Named<ShiftType>>, ) -> PyResult<Self>
This scenario with amount added to every quote selector admits —
an axis name ("rate", "credit"), a curve ("projection(USD-SOFR)"),
a surface, an FX smile’s shape ("fx_rr(EUR/USD)", "fx_bf(EUR/USD)",
moved in vol points), or a CMS spread correlation
("cms_spread_correlation(EUR-EURIBOR-6M-IRS-10Y/EUR-EURIBOR-6M-IRS-2Y)",
moved absolutely). shift_type ("relative" or "absolute") asks
for the other move
where an input has one — a vol in vol points; unset, each input keeps
its own convention.
pub(crate) fn slope(
&self,
selector: &str,
level: f64,
per_year: f64,
pivot_years: f64,
shift_type: Option<Named<ShiftType>>,
) -> PyResult<Self>
pub(crate) fn slope( &self, selector: &str, level: f64, per_year: f64, pivot_years: f64, shift_type: Option<Named<ShiftType>>, ) -> PyResult<Self>
This scenario with a slope leg: level + per_year·(τ − pivot_years),
τ in years from the curve’s own reference date — or, for a vol or a
CMS spread correlation term structure, the node’s expiry in years
Act/365F (a flat correlation mark takes a parallel shift only).
pub(crate) fn bucket(
&self,
selector: &str,
start: NaiveDate,
end: NaiveDate,
amount: f64,
shift_type: Option<Named<ShiftType>>,
) -> PyResult<Self>
pub(crate) fn bucket( &self, selector: &str, start: NaiveDate, end: NaiveDate, amount: f64, shift_type: Option<Named<ShiftType>>, ) -> PyResult<Self>
This scenario with a bucket leg: amount at the pillars — or, for a
vol or a CMS spread correlation term structure, the expiries — between
start and end, and nothing outside them.
pub(crate) fn tent(
&self,
selector: &str,
peak: NaiveDate,
amount: f64,
left: Option<NaiveDate>,
right: Option<NaiveDate>,
shift_type: Option<Named<ShiftType>>,
) -> PyResult<Self>
pub(crate) fn tent( &self, selector: &str, peak: NaiveDate, amount: f64, left: Option<NaiveDate>, right: Option<NaiveDate>, shift_type: Option<Named<ShiftType>>, ) -> PyResult<Self>
This scenario with a tent leg: amount at peak, falling linearly to
nothing at left and at right; a missing corner holds amount flat
on its side. One bucket of a triangular sensitivity ladder.
pub(crate) fn holding_outrights(&self) -> Self
pub(crate) fn holding_outrights(&self) -> Self
This scenario moving FX-implied curves’ spots with every FX leg and holding their outrights, so an FX shock’s P&L is the one the AD FX delta predicts. By default the implied curves’ rates are held instead.
Trait Implementations§
§impl Clone for PyScenario
impl Clone for PyScenario
§fn clone(&self) -> PyScenario
fn clone(&self) -> PyScenario
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl DerefToPyAny for PyScenario
§impl IntoPy<Py<PyAny>> for PyScenario
impl IntoPy<Py<PyAny>> for PyScenario
§impl PyClass for PyScenario
impl PyClass for PyScenario
§impl PyClassImpl for PyScenario
impl PyClassImpl for PyScenario
§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
§type ThreadChecker = SendablePyClass<PyScenario>
type ThreadChecker = SendablePyClass<PyScenario>
§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::ImmutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::ImmutableChild
§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
§impl PyClassNewTextSignature<PyScenario> for PyClassImplCollector<PyScenario>
impl PyClassNewTextSignature<PyScenario> for PyClassImplCollector<PyScenario>
fn new_text_signature(self) -> Option<&'static str>
§impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a PyScenario
impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a PyScenario
§impl PyMethods<PyScenario> for PyClassImplCollector<PyScenario>
impl PyMethods<PyScenario> for PyClassImplCollector<PyScenario>
fn py_methods(self) -> &'static PyClassItems
§impl PyTypeInfo for PyScenario
impl PyTypeInfo for PyScenario
§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.