fix(stock-pool): preserve exit roles and freeze relative reduction bases
This commit is contained in:
@@ -732,6 +732,16 @@ impl PortfolioState {
|
||||
state.validate()?;self.stock_pool_states.insert(pool_id.into(),state);Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn adjust_stock_pool_split(&mut self, symbol: &str, ratio: f64) -> Result<(), String> {
|
||||
let ratio = rust_decimal::Decimal::from_str_exact(&ratio.to_string())
|
||||
.map_err(|_| "stock_pool_execution_state_split_invalid".to_string())?;
|
||||
let adjusted = self.stock_pool_states.iter()
|
||||
.map(|(pool, state)| Ok((pool.clone(), state.adjust_for_split(symbol, ratio)?)))
|
||||
.collect::<Result<BTreeMap<_, _>, String>>()?;
|
||||
self.stock_pool_states = adjusted;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn initial_cash(&self) -> f64 {
|
||||
self.initial_cash.to_f64()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user