pub struct RiskManager { /* private fields */ }
Expand description
Risk manager for trading strategies
Implementations§
Source§impl RiskManager
impl RiskManager
Sourcepub fn new(config: RiskConfig, initial_portfolio_value: f64) -> Self
pub fn new(config: RiskConfig, initial_portfolio_value: f64) -> Self
Create a new risk manager with the specified configuration
Sourcepub fn default(initial_portfolio_value: f64) -> Self
pub fn default(initial_portfolio_value: f64) -> Self
Create a new risk manager with default configuration
Sourcepub fn config(&self) -> &RiskConfig
pub fn config(&self) -> &RiskConfig
Get the current risk configuration
Sourcepub fn update_config(&mut self, config: RiskConfig)
pub fn update_config(&mut self, config: RiskConfig)
Update the risk configuration
Sourcepub fn update_portfolio_value(
&mut self,
new_value: f64,
realized_pnl_delta: f64,
) -> Result<()>
pub fn update_portfolio_value( &mut self, new_value: f64, realized_pnl_delta: f64, ) -> Result<()>
Update portfolio value and check daily risk limits
Sourcepub fn validate_order(
&self,
order: &OrderRequest,
current_positions: &HashMap<String, Position>,
) -> Result<()>
pub fn validate_order( &self, order: &OrderRequest, current_positions: &HashMap<String, Position>, ) -> Result<()>
Validate an order against risk limits
Sourcepub fn generate_stop_loss(
&self,
position: &Position,
parent_order_id: &str,
) -> Option<RiskOrder>
pub fn generate_stop_loss( &self, position: &Position, parent_order_id: &str, ) -> Option<RiskOrder>
Generate stop-loss order for a position
Sourcepub fn generate_take_profit(
&self,
position: &Position,
parent_order_id: &str,
) -> Option<RiskOrder>
pub fn generate_take_profit( &self, position: &Position, parent_order_id: &str, ) -> Option<RiskOrder>
Generate take-profit order for a position
Sourcepub fn register_stop_loss(&mut self, order: RiskOrder)
pub fn register_stop_loss(&mut self, order: RiskOrder)
Register a stop-loss order
Sourcepub fn register_take_profit(&mut self, order: RiskOrder)
pub fn register_take_profit(&mut self, order: RiskOrder)
Register a take-profit order
Sourcepub fn check_risk_orders(
&mut self,
current_prices: &HashMap<String, f64>,
) -> Vec<RiskOrder>
pub fn check_risk_orders( &mut self, current_prices: &HashMap<String, f64>, ) -> Vec<RiskOrder>
Check if any stop-loss or take-profit orders should be triggered
Sourcepub fn should_stop_trading(&self) -> bool
pub fn should_stop_trading(&self) -> bool
Check if trading should be stopped due to risk limits
Sourcepub fn activate_emergency_stop(&mut self)
pub fn activate_emergency_stop(&mut self)
Activate emergency stop
Sourcepub fn deactivate_emergency_stop(&mut self)
pub fn deactivate_emergency_stop(&mut self)
Deactivate emergency stop
Sourcepub fn daily_risk_metrics(&self) -> (f64, f64, f64)
pub fn daily_risk_metrics(&self) -> (f64, f64, f64)
Get current daily risk metrics
Sourcepub fn calculate_required_margin(&self, position_value: f64) -> f64
pub fn calculate_required_margin(&self, position_value: f64) -> f64
Calculate required margin for a position
Sourcepub fn available_margin(&self) -> f64
pub fn available_margin(&self) -> f64
Get available margin
Sourcepub fn update_available_margin(&mut self, margin: f64)
pub fn update_available_margin(&mut self, margin: f64)
Update available margin
Sourcepub fn calculate_volatility_adjusted_position_size(
&self,
symbol: &str,
base_max_size: f64,
) -> f64
pub fn calculate_volatility_adjusted_position_size( &self, symbol: &str, base_max_size: f64, ) -> f64
Calculate volatility-adjusted position size
Sourcepub fn get_asset_class(&self, symbol: &str) -> Option<&AssetClass>
pub fn get_asset_class(&self, symbol: &str) -> Option<&AssetClass>
Get asset class for a symbol
Sourcepub fn calculate_concentration_after_order(
&self,
current_positions: &HashMap<String, Position>,
order: &OrderRequest,
asset_class: &AssetClass,
) -> f64
pub fn calculate_concentration_after_order( &self, current_positions: &HashMap<String, Position>, order: &OrderRequest, asset_class: &AssetClass, ) -> f64
Calculate concentration after order
Sourcepub fn validate_correlation_limits(
&self,
current_positions: &HashMap<String, Position>,
order: &OrderRequest,
) -> Result<()>
pub fn validate_correlation_limits( &self, current_positions: &HashMap<String, Position>, order: &OrderRequest, ) -> Result<()>
Validate correlation limits
Sourcepub fn validate_portfolio_volatility(
&self,
current_positions: &HashMap<String, Position>,
order: &OrderRequest,
) -> Result<()>
pub fn validate_portfolio_volatility( &self, current_positions: &HashMap<String, Position>, order: &OrderRequest, ) -> Result<()>
Validate portfolio volatility
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RiskManager
impl RefUnwindSafe for RiskManager
impl Send for RiskManager
impl Sync for RiskManager
impl Unpin for RiskManager
impl UnwindSafe for RiskManager
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
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.