Skip to content

Build Risk Management and Position Limit System #15

@Mathews-25

Description

@Mathews-25

Context:
To protect users from over-exposure, StellarSwipe enforces risk limits: max open positions, stop-loss requirements, and balance checks.

Problem:
Create a risk management service that validates trades against user-defined and platform limits before execution.

What Done Looks Like:

  • Risk validation before trade execution
  • User-configurable risk settings
  • Position limit enforcement (max 10 open)
  • Stop-loss validation
  • Balance reservation for open positions

Folder Structure:

src/
├── risk/
│   ├── risk-manager.service.ts
│   ├── risk-manager.module.ts
│   ├── entities/
│   │   └── risk-settings.entity.ts
│   └── dto/
│       └── risk-settings.dto.ts

Implementation Guidelines:

  • Check open position count before new trade
  • Validate stop-loss is set and reasonable (5-20% from entry)
  • Calculate total exposure across all positions
  • Prevent trades if exposure > user limit
  • Store risk settings per user (max positions, max exposure %)
  • Default limits: 10 positions, 50% max exposure

Risk Checks:

  1. Open positions < user limit (default 10)
  2. Total exposure < max exposure %
  3. Stop-loss within acceptable range
  4. Sufficient balance for potential loss

Risk Settings Fields:

  • max_open_positions (default 10)
  • max_exposure_percentage (default 50)
  • require_stop_loss (default true)
  • min_stop_loss_percentage (default 5)

Edge Cases:

  • User updates limits with existing positions
  • Position opened just before new trade
  • Partial fills affecting exposure

Validation:

  • Trade blocked when limit reached
  • Risk settings update correctly
  • Exposure calculated accurately

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions