cancel
Showing results for
Did you mean:

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Regular Visitor

## Calculating drawdown - running total with condition

Hello, I would like to calculate drawdown on trading account, quite easy in excel, not very easy in Power BI for me.

I have following data set Trade No., Net profit and I would like to calculate Balance and Drawdown. Balance is simple running total, so it is not a problem. But I have no idea how to calculate drawdown – drawdown from previous highest high.

Drawdown is calculated as Previous Drawdown plus Net Profit, but only if result is lower than 0 otherwise drawdown is 0.

Example:

 Trade No Net profit Balance Drawdown 1 100 100 0 2 -50 50 -50 3 -100 -50 -150 4 50 0 -100 5 50 50 -50 6 50 100 0 7 100 200 0 8 -100 100 -100 9 50 150 -50 10 200 350 0

Thank you for any help.

2 ACCEPTED SOLUTIONS
Super User

Hi @jan1,

You could do something similar to this (alter to match your table names etc). Create the following measures:

```NetProfit =

Balance =
CALCULATE (
[NetProfit],
)

High Water Mark =
MAXX (
"Bal", [Balance]
),
[Bal]
)

Drawdown =[Balance] - [High Water Mark]

```

Owen Auger
Blog
Super User

Hi @jan1,

You should be able to do this using ALLEXCEPT.

Is everything in the SumDataStrategies table?

In my earlier formulas, change ALL(...) to ALLEXCEPT('SumDataStrategies', 'SumDataStrategies'[Strategy ID])

Something like that should work 🙂

Owen Auger
Blog
4 REPLIES 4
Super User

Hi @jan1,

You could do something similar to this (alter to match your table names etc). Create the following measures:

```NetProfit =

Balance =
CALCULATE (
[NetProfit],
)

High Water Mark =
MAXX (
"Bal", [Balance]
),
[Bal]
)

Drawdown =[Balance] - [High Water Mark]

```

Owen Auger
Blog
Regular Visitor

Hi @OwenAuger,

you just made my day, thank you.

Could you help me on one more thing, I would like to extend the dataset and add new column - Strategy ID.

And I would like to calculate Balance and Drawdown not only for entire dataset but also according to Strategy ID.

I tried to modify Balance and High Water Mark measure by extending filter using && ('SumDataStrategies'[Strategy ID] = 'SumDataStrategies'[Strategy ID]).

It is not working.

Thanks.

Super User

Hi @jan1,

You should be able to do this using ALLEXCEPT.

Is everything in the SumDataStrategies table?

In my earlier formulas, change ALL(...) to ALLEXCEPT('SumDataStrategies', 'SumDataStrategies'[Strategy ID])

Something like that should work 🙂

Owen Auger
Blog
Regular Visitor

I modified ALL to ALLEXCEPT and it works, except when Highwatermark was lower than 0.

So I modified Drawdown to this:

DrawdownStrategy = IF([HighWaterMarkStrategy] >= 0; [BalanceStrategy] - [HighWaterMarkStrategy]; [BalanceStrategy])

Now it works perfectly.

Thanks @OwenAuger

Announcements