Cálculo de reducción: total acumulado con condición

Un usuario Pregunto ✅

ene1

Hola, me gustaría calcular la reducción en la cuenta comercial, bastante fácil en Excel, no muy fácil en Power BI para mí.

Tengo el siguiente conjunto de datos Trade No., Net profit y me gustaría calcular el Balance y Drawdown. El saldo es un total acumulado simple, por lo que no es un problema. Pero no tengo idea de cómo calcular la reducción: reducción del máximo anterior.

La reducción se calcula como la reducción anterior más la ganancia neta, pero solo si el resultado es menor que 0, de lo contrario, la reducción es 0.

Ejemplo:

Comercio No Beneficio neto Equilibrio 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

Gracias por cualquier ayuda.

OwenAuger

Hola @ jan1,

Puede hacer algo similar a esto (modificar para que coincida con los nombres de su tabla, etc.). Cree las siguientes medidas:

(archivo PBIX de muestra aquí)

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]

OwenAuger

En respuesta a ene1

Hola @ jan1,

Debería poder hacer esto usando ALLEXCEPT.

¿Está todo en la tabla SumDataStrategies?

En mis fórmulas anteriores, cambie TODOS (…) a ALLEXCEPT (‘SumDataStrategies’, ‘SumDataStrategies'[Strategy ID])

Algo así debería funcionar 🙂

OwenAuger

Hola @ jan1,

Puede hacer algo similar a esto (modificar para que coincida con los nombres de su tabla, etc.). Cree las siguientes medidas:

(archivo PBIX de muestra aquí)

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]

ene1

En respuesta a OwenAuger

Hola @OwenAuger,

acabas de alegrarme el día, gracias.

¿Podría ayudarme en una cosa más? Me gustaría ampliar el conjunto de datos y agregar una nueva columna: ID de estrategia.

Y me gustaría calcular el saldo y la reducción no solo para el conjunto de datos completo, sino también de acuerdo con el ID de estrategia.

Intenté modificar la medida de Balance y High Water Mark extendiendo el filtro usando && (‘SumDataStrategies'[Strategy ID] = ‘SumDataStrategies'[Strategy ID]).

No está trabajando.

Gracias.

OwenAuger

En respuesta a ene1

Hola @ jan1,

Debería poder hacer esto usando ALLEXCEPT.

¿Está todo en la tabla SumDataStrategies?

En mis fórmulas anteriores, cambie TODOS (…) a ALLEXCEPT (‘SumDataStrategies’, ‘SumDataStrategies'[Strategy ID])

Algo así debería funcionar 🙂

ene1

En respuesta a OwenAuger

Modifiqué TODO a ALLEXCEPT y funciona, excepto cuando Highwatermark era inferior a 0.

Así que modifiqué Drawdown a esto:

DrawdownStrategy = SI ([HighWaterMarkStrategy] > = 0; [BalanceStrategy] – [HighWaterMarkStrategy]; [BalanceStrategy])

Ahora funciona perfectamente.

Gracias @OwenAuger

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *