Skip to content

Commit ebc954a

Browse files
committed
Ensures that largest_loss_pct is negative, largest_win_pct is positive
1 parent 543c197 commit ebc954a

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/pybroker/eval.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -856,16 +856,22 @@ def evaluate(
856856
pnls = trades_df["pnl"].to_numpy()
857857
return_pcts = trades_df["return_pct"].to_numpy()
858858
bars = trades_df["bars"].to_numpy()
859-
winning_bars = trades_df[trades_df["pnl"] > 0]["bars"].to_numpy()
860-
losing_bars = trades_df[trades_df["pnl"] < 0]["bars"].to_numpy()
861-
largest_win = trades_df[trades_df["pnl"] == trades_df["pnl"].max()]
859+
winning_trades = trades_df[trades_df["pnl"] > 0]
860+
winning_bars = winning_trades["bars"].to_numpy()
861+
losing_trades = trades_df[trades_df["pnl"] < 0]
862+
losing_bars = losing_trades["bars"].to_numpy()
863+
largest_win = winning_trades[
864+
winning_trades["pnl"] == winning_trades["pnl"].max()
865+
]
862866
largest_win_pct = (
863867
0 if largest_win.empty else largest_win["return_pct"].values[0]
864868
)
865869
largest_win_bars = (
866870
0 if largest_win.empty else largest_win["bars"].values[0]
867871
)
868-
largest_loss = trades_df[trades_df["pnl"] == trades_df["pnl"].min()]
872+
largest_loss = losing_trades[
873+
losing_trades["pnl"] == losing_trades["pnl"].min()
874+
]
869875
largest_loss_pct = (
870876
0 if largest_loss.empty else largest_loss["return_pct"].values[0]
871877
)

0 commit comments

Comments
 (0)