pub enum AllocationMethod {
Euler,
Covariance,
Proportional,
Marginal,
Shapley,
}Expand description
How PredictiveDistribution::capital splits the portfolio’s risk
measure ρ(S), S = Σ X_j, between components X_j.
Variants§
Euler
Euler (co-measure) allocation, ∂ρ(S + h X_j)/∂h at h = 0: the
component’s own draws weighted by the distortion weights of the
total’s ranks. For TVaR these are the CoTVaRs,
E[X_j | S in its top 1 − p]. The only method that is
consistent with marginal changes to the portfolio. Sums to ρ(S).
Covariance
ρ(S) Cov(X_j, S) / Var(S): the variance’s Euler allocation scaled
to ρ(S). Looks at the whole distribution, not the tail. Sums to
ρ(S).
Proportional
ρ(S) ρ(X_j) / Σ_k ρ(X_k), the stand-alone measures scaled to the
total (the “haircut” allocation). Ignores dependence beyond the
total. Sums to ρ(S).
Marginal
ρ(S) − ρ(S − X_j), what the portfolio’s measure falls by without
the component (Merton–Perold). Does not sum to ρ(S); the
shortfall is the capital no single component is responsible for.
Shapley
The Shapley value of the game v(T) = ρ(Σ_{j∈T} X_j): each
component’s marginal contribution averaged over every order of
joining. Sums to ρ(S). Needs ρ of all 2^m sub-portfolios, so
it is limited to 12 components.
Trait Implementations§
Source§impl Clone for AllocationMethod
impl Clone for AllocationMethod
Source§fn clone(&self) -> AllocationMethod
fn clone(&self) -> AllocationMethod
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for AllocationMethod
Source§impl Debug for AllocationMethod
impl Debug for AllocationMethod
impl Eq for AllocationMethod
Source§impl PartialEq for AllocationMethod
impl PartialEq for AllocationMethod
impl StructuralPartialEq for AllocationMethod
Auto Trait Implementations§
impl Freeze for AllocationMethod
impl RefUnwindSafe for AllocationMethod
impl Send for AllocationMethod
impl Sync for AllocationMethod
impl Unpin for AllocationMethod
impl UnsafeUnpin for AllocationMethod
impl UnwindSafe for AllocationMethod
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more