ZenQuant.Helpers.Risk (zen_quant v0.2.0)

Copy Markdown View Source

Risk calculation helpers for position analysis.

Pure functions for calculating margin headroom and liquidation distance from position data. Works with plain maps containing :mark_price and :liquidation_price keys.

Example

position = %{
  mark_price: 50_000.0,
  liquidation_price: 40_000.0
}

ZenQuant.Helpers.Risk.margin_headroom(position)
# => 0.2 (20% headroom)

ZenQuant.Helpers.Risk.liquidation_distance(position)
# => 10_000.0 (absolute price distance)

Summary

Functions

Calculates the absolute price distance to liquidation.

Calculates margin headroom as a percentage.

Functions

liquidation_distance(map)

@spec liquidation_distance(map()) :: float() | nil

Calculates the absolute price distance to liquidation.

Returns abs(mark_price - liquidation_price).

Returns nil if either mark_price or liquidation_price is nil.

Examples

iex> ZenQuant.Helpers.Risk.liquidation_distance(%{mark_price: 50_000.0, liquidation_price: 40_000.0})
10_000.0

iex> ZenQuant.Helpers.Risk.liquidation_distance(%{mark_price: 50_000.0, liquidation_price: nil})
nil

margin_headroom(map)

@spec margin_headroom(map()) :: float() | nil

Calculates margin headroom as a percentage.

Returns the distance between mark price and liquidation price as a percentage of the mark price: abs(mark - liq) / mark.

Returns nil if either mark_price or liquidation_price is nil.

Examples

iex> ZenQuant.Helpers.Risk.margin_headroom(%{mark_price: 50_000.0, liquidation_price: 40_000.0})
0.2

iex> ZenQuant.Helpers.Risk.margin_headroom(%{mark_price: nil, liquidation_price: 40_000.0})
nil