feat: Only ffill until the end of the trade

This commit is contained in:
Matthias
2025-11-16 16:21:40 +01:00
parent bf5ec98918
commit 921cb4dad8
@@ -87,6 +87,7 @@ def balance_distribution_over_time(
df[stake_currency] = float(start_balance) df[stake_currency] = float(start_balance)
df[pairlist] = 0.0 df[pairlist] = 0.0
for trade in trades.sort_values(by=["open_date"]).itertuples(): for trade in trades.sort_values(by=["open_date"]).itertuples():
end_date = trade.close_date if trade.close_date is not pd.NaT else None
# Exclude open orders - these won't have order_filled_timestamp set. # Exclude open orders - these won't have order_filled_timestamp set.
orders = [o for o in trade.orders if o["order_filled_timestamp"]] orders = [o for o in trade.orders if o["order_filled_timestamp"]]
for order in sorted(orders, key=lambda x: x["order_filled_timestamp"]): for order in sorted(orders, key=lambda x: x["order_filled_timestamp"]):
@@ -95,11 +96,11 @@ def balance_distribution_over_time(
stake = order["safe_price"] * real_amount stake = order["safe_price"] * real_amount
if order["ft_is_entry"]: if order["ft_is_entry"]:
fee = stake * trade.fee_open fee = stake * trade.fee_open
df.loc[filled_at:, trade.pair] += real_amount df.loc[filled_at:end_date, trade.pair] += real_amount
df.loc[filled_at:, stake_currency] -= stake + fee df.loc[filled_at:, stake_currency] -= stake + fee
else: else:
fee = stake * trade.fee_close fee = stake * trade.fee_close
df.loc[filled_at:, trade.pair] -= real_amount df.loc[filled_at:end_date, trade.pair] -= real_amount
df.loc[filled_at:, stake_currency] += stake - fee df.loc[filled_at:, stake_currency] += stake - fee
df = df.round(14) df = df.round(14)