Forum Discussion
Calculating drawdown - running total with condition
- 10 years ago
Hi jan1,
You could do something similar to this (alter to match your table names etc). Create the following measures:
NetProfit = SUM ( 'Trades'[Net profit] ) Balance = CALCULATE ( [NetProfit], FILTER ( ALL ( 'Trades' ), 'Trades'[Trade No] <= MAX ( 'Trades'[Trade No] ) ) ) High Water Mark = MAXX ( ADDCOLUMNS ( FILTER ( ALL ( 'Trades' ), 'Trades'[Trade No] <= MAX ( 'Trades'[Trade No] ) ), "Bal", [Balance] ), [Bal] ) Drawdown =
[Balance] - [High Water Mark]
Hi jan1,
You could do something similar to this (alter to match your table names etc). Create the following measures:
NetProfit =
SUM ( 'Trades'[Net profit] )
Balance =
CALCULATE (
[NetProfit],
FILTER ( ALL ( 'Trades' ), 'Trades'[Trade No] <= MAX ( 'Trades'[Trade No] ) )
)
High Water Mark =
MAXX (
ADDCOLUMNS (
FILTER ( ALL ( 'Trades' ), 'Trades'[Trade No] <= MAX ( 'Trades'[Trade No] ) ),
"Bal", [Balance]
),
[Bal]
)
Drawdown =
[Balance] - [High Water Mark]
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.
- OwenAuger10 years ago
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 :)
- jan110 years agoRegular 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