Risk Management

Position Sizing for Deriv Synthetic Indices with Fixed Fractional Risk

· 6 min read

Lot size on Deriv is not a single number you read off a table. For fixed-stake contracts it is the stake itself; for Multipliers it is a stake plus a multiplier that together define your exposure. In both cases the correct size is derived from three inputs: account equity, the distance to your invalidation point, and the fraction of equity you are willing to lose on that position. This article gives the arithmetic, a worked example on a synthetic index, and a method for capping aggregate exposure when several bots run at once.

Trading involves significant risk and you can lose your entire stake. Test every strategy on a demo account first.

The three inputs and what they actually mean

Equity is the current account balance including open floating profit and loss, not the balance at the start of the session. Using starting balance overstates size after a drawdown and understates it after a run-up. Read equity from the account stream, not from a cached value.

Stop distance is the price or index move that proves the trade idea wrong. For Multipliers this is a real price distance in points, and Deriv lets you attach a stop loss to the contract. For fixed-stake contracts there is no price stop loss: the maximum loss is the stake, and the “stop distance” concept collapses into duration and session limits. Be honest about which regime you are in. Applying a price-based stop formula to a Rise/Fall contract produces a number that does not correspond to any mechanism on the platform.

Risk percentage is the fraction of equity you accept losing if the stop is hit. ORSTAC’s ceiling is 1% per contract, with 2% as an absolute maximum for aggressive configurations. Above that, a short losing streak produces a drawdown from which the required recovery return becomes impractical.

The general relation, for instruments where loss scales linearly with price distance, is:

riskamount = equity × riskpct

size = riskamount / stopdistance

The units of `size` depend on the contract. For Multipliers, size is stake in account currency and the multiplier converts price distance into a loss, so the formula needs the multiplier in the denominator. For fixed-stake contracts, size is the stake and the loss is capped at the stake regardless of what the market does afterwards.

Worked example: a Multiplier on a synthetic index

Assume an account equity of 1,000 USD, a risk limit of 1% per contract, and a Volatility 75 Index position where the invalidation point is 0.5% away from entry. Deriv’s Multiplier product quotes stop loss in price terms; the loss on the position is approximately stake × multiplier × (price move / entry price). This is an illustrative example with round numbers, not a recommendation.

  • Risk amount: 1,000 × 0.01 = 10 USD.
  • Entry price (illustrative): 100,000. Stop distance: 0.5% = 500 points.
  • With a multiplier of 100, a 0.5% adverse move on the stake produces a loss of stake × 100 × 0.005 = stake × 0.5.
  • To lose exactly 10 USD at that move: stake = 10 / 0.5 = 20 USD.

Check the arithmetic in the other direction: 20 USD stake × 100 multiplier = 2,000 USD notional. A 0.5% move against the position is 2,000 × 0.005 = 10 USD. That equals the 1% risk budget. If the multiplier were 200 instead, the same 10 USD budget would allow only a 10 USD stake (10 / (200 × 0.005) = 10 / 1.0). Doubling leverage halves the permitted stake for the same risk.

Now the same equity with a fixed-stake Rise/Fall contract. There is no price stop. If you stake 10 USD, the maximum loss is 10 USD, which is 1% of 1,000. The stake is the risk. Duration and the number of contracts per session become the control variables, not stop distance. A 10 USD stake on a contract with a 90% payout returns 9 USD profit on a win and loses 10 USD on a loss; the break-even win rate is 10 / (10 + 9) = 52.6%. That number matters more than any stake formula, because no sizing rule turns a negative-expectancy strategy positive.

Capping aggregate exposure across concurrent bots

A per-contract limit is necessary but not sufficient. Five bots each risking 1% of equity is a 5% portfolio risk if their positions can lose simultaneously, and correlated positions on the same synthetic index usually do. Cap total open risk explicitly.

A practical rule set, expressible as DBot logic or as a wrapper around the API:

  1. Compute `portfolioriskcap`, for example 3% of equity across all open positions.
  2. Before each new entry, sum the risk of every open position (for fixed-stake contracts, sum stakes; for Multipliers, sum stake × multiplier × stop distance / entry price).
  3. If `currentopenrisk + proposedrisk > portfoliorisk_cap`, skip the trade or reduce the stake to the remaining budget.
  4. Track realised loss for the day separately; halt all bots when daily loss reaches the configured limit.
  5. Halt on maximum drawdown from peak equity and on N consecutive losses, whichever triggers first.

Pseudo-code for the pre-trade check:

equity = get_equity()
risk_budget = equity * per_trade_pct
open_risk = sum(position_risk(p) for p in open_positions)
portfolio_cap = equity * portfolio_pct
if open_risk + risk_budget > portfolio_cap:
    risk_budget = max(0, portfolio_cap - open_risk)
if risk_budget <= 0 or daily_loss >= daily_limit:
    skip_trade()
else:
    stake = risk_budget / loss_per_unit_stake()

Note the ordering: the daily loss and drawdown checks come before sizing, not after. A bot that sizes correctly but keeps trading after hitting its daily limit has no risk management at all. Also note that martingale progressions violate the per-contract cap by construction: doubling after a loss means the second stake exceeds 1% of equity. ORSTAC does not endorse martingale. If a progression is used anyway, it needs a hard cap on steps and stake and a ruin test on demo data before any live deployment.

Limitations

This approach does not solve execution risk. Slippage on synthetic indices is usually small but not zero, and a stop loss on a Multiplier is not a guarantee of the fill price in fast conditions. It does not solve model risk: if your stop distance is derived from a backtest that overfits, the sizing is precise but wrong. It does not solve correlation across bots whose entries are triggered by the same indicator on the same symbol. It does not convert a negative-expectancy strategy into a positive one; sizing controls the speed of loss, not its direction. And it says nothing about behavioural risk, which is why a demo sample is a precondition rather than a formality. Demo removes financial risk, not the difference between how you and your bot behave when real money is on the line.

Frequently Asked Questions

Can I use the same 1% rule for Rise/Fall and Multipliers?

Yes, but the meaning differs: for Rise/Fall the 1% is the stake itself, while for Multipliers the 1% is stake × multiplier × stop distance, so the permitted stake is smaller.

What if my bot has no price stop loss?

Then risk is bounded by stake and duration only, and you must compensate with session limits, a daily loss cap and a maximum number of concurrent contracts rather than a stop-distance formula.

Should I size from balance or equity?

Size from equity, because equity reflects open floating losses and prevents a bot from adding exposure after the account has already deteriorated.

Key Takeaways

  • Stake is derived, not chosen: equity × risk percentage ÷ loss per unit of stake.
  • For fixed-stake contracts the stake is the maximum loss; price-based stop formulas do not apply.
  • Cap aggregate open risk across bots, not just per contract, and check daily loss and drawdown before sizing.
  • Judge strategies by expectancy, break-even win rate and drawdown, never by win rate alone.
  • Demo first, minimum stake second, and no martingale without a hard cap and a ruin test.

The arithmetic above is deliberately simple so that it can be audited line by line in your own bot. Open-source implementations and block templates are available in the ORSTAC repository, and the contracts discussed here are traded on Deriv; the Deriv API documentation and the official API libraries cover the account and proposal streams you need to read equity and size positions correctly. Discussion of specific configurations happens in the ORSTAC Telegram group.

Trading involves significant risk and you can lose your entire stake. Test every strategy on a demo account first.