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