DeltaCalc.AccountMetrics (DeltaCalc v0.3.0)

Copy Markdown View Source

Per-account liquidation, leverage, and margin-usage metrics.

This module is pure calculation glue around DeltaCalc.Leverage, DeltaCalc.Liquidation, and DeltaCalc.Safety; callers own account isolation, alert thresholds, exchange state, and persistence.

API Functions

FunctionArityDescriptionParam Kinds
margin_usage_pct2Calculate margin used as a percentage of account equity.margin_used: value, equity: value
calculate2Calculate per-account liquidation, leverage, margin usage, and safety metrics.account: value, opts: value

Summary

Types

Per-account inputs required for risk metric calculation.

Calculated account risk metrics.

Position side for account liquidation calculations.

Functions

Return account-level risk metrics for one isolated account.

Return margin_used / equity * 100, or zero when equity is not positive.

Types

account()

@type account() :: %{
  entry_price: Decimal.t(),
  notional: Decimal.t(),
  equity: Decimal.t(),
  margin_used: Decimal.t(),
  mmr_total: Decimal.t(),
  side: side(),
  swan_pct: Decimal.t()
}

Per-account inputs required for risk metric calculation.

metrics()

@type metrics() :: %{
  effective_leverage: Decimal.t(),
  liquidation_price: Decimal.t(),
  liquidation_distance_pct: Decimal.t(),
  margin_usage_pct: Decimal.t(),
  safety: map()
}

Calculated account risk metrics.

side()

@type side() :: :long | :short

Position side for account liquidation calculations.

Functions

calculate(account, opts \\ %{})

@spec calculate(account(), map()) :: metrics() | {:error, atom()}

Return account-level risk metrics for one isolated account.

:safety_cfg in opts is passed through to DeltaCalc.Safety.safety/5.

margin_usage_pct(margin_used, equity)

@spec margin_usage_pct(Decimal.t(), Decimal.t()) :: Decimal.t()

Return margin_used / equity * 100, or zero when equity is not positive.