Skip to content

v0.23.0

Choose a tag to compare

@keitaj keitaj released this 25 Apr 10:39
· 48 commits to main since this release
3194702

What's New

Features

  • Volatility-adjusted MAX_POSITION_AGE (#124) — New --dynamic-age flag adjusts position holding time based on per-coin realized volatility. High-volatility coins get shorter holding times (reducing adverse selection); low-volatility coins get longer times (improving maker fill probability). Configurable via --dynamic-age-baseline-vol, --dynamic-age-min, --dynamic-age-max.
  • Per-coin order size overrides (#123) — New --coin-size-overrides flag (e.g. \"TSLA:150,NVDA:150\") allows setting different order sizes per coin. Setting a coin to `0` skips orders for that coin. Follows the same lookup pattern as existing --coin-offset-overrides and --coin-spread-overrides.
  • Unrealized loss based early taker close (#122) — New --unrealized-loss-close-bps flag triggers immediate taker close when a position's unrealized loss exceeds the configured bps threshold, regardless of position age. Targets large-loss trades that accumulate while waiting for maker close.

Upgrade Notes

  • All changes are backward compatible — defaults preserve existing behavior:
    • --dynamic-age is off by default (boolean flag)
    • --coin-size-overrides defaults to empty string (all coins use global `--order-size-usd`)
    • --unrealized-loss-close-bps defaults to 0 (disabled)
  • The dynamic age feature reuses the same _recent_mids price history as --vol-adjust, so no extra data collection overhead when both are enabled.