Perps equity
This commit is contained in:
@@ -66,7 +66,7 @@ impl Engine {
|
||||
|
||||
// live data / status
|
||||
status: Arc::new(Mutex::new(EngineStatus {
|
||||
equity: 0.into(),
|
||||
perps_equity: 0.into(),
|
||||
strategy_mode: Mode::Auto,
|
||||
strategy_state: ItemState::Stopped,
|
||||
})),
|
||||
|
||||
@@ -68,14 +68,9 @@ impl RiskEngine {
|
||||
let mut state = self.state.lock().await;
|
||||
|
||||
if let Some(acc) = engine.accounts.lock().await.get_active() {
|
||||
self.state.lock().await.starting_equity = client
|
||||
.user_vault_equities(acc.address)
|
||||
.await?
|
||||
.into_iter()
|
||||
.map(|v| v.equity)
|
||||
.sum();
|
||||
let clearing_house = client.clearinghouse_state(acc.address, None).await?;
|
||||
|
||||
engine.status.lock().await.equity = state.starting_equity;
|
||||
state.starting_equity = clearing_house.margin_summary.account_value;
|
||||
}
|
||||
|
||||
state.pnl = 0.into();
|
||||
|
||||
@@ -227,6 +227,11 @@ impl TerminalServer {
|
||||
if let Some(acc) = engine.accounts.lock().await.get_active() {
|
||||
match client.clearinghouse_state(acc.address, None).await {
|
||||
Ok(state) => {
|
||||
engine.status.lock().await.perps_equity =
|
||||
state.margin_summary.account_value;
|
||||
|
||||
engine.update_status().await?;
|
||||
|
||||
self.broadcast(TerminalServerMessage::PositionsUpdated(
|
||||
state
|
||||
.asset_positions
|
||||
|
||||
@@ -199,12 +199,12 @@ impl Formatted for EngineStatus {
|
||||
fn get_formatted(&self) -> Vec<String> {
|
||||
vec![
|
||||
Triple(
|
||||
"\x1b[2mTrading Equity\x1b[0m",
|
||||
"\x1b[2mState\x1b[0m",
|
||||
"\x1b[2mMode\x1b[0m",
|
||||
"\x1b[2mPerps Equity\x1b[0m",
|
||||
"\x1b[2mStrategy State\x1b[0m",
|
||||
"\x1b[2mStrategy Mode\x1b[0m",
|
||||
),
|
||||
Triple(
|
||||
&format_usd(self.equity.as_f64()),
|
||||
&format_usd(self.perps_equity.as_f64()),
|
||||
&self.strategy_state.to_string(),
|
||||
&self.strategy_mode.to_string(),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user