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
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
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