feat: update wallet migration to keep leverage

This commit is contained in:
Matthias
2026-01-06 11:35:43 +01:00
parent 00d39bbb80
commit b69a042f5b
2 changed files with 9 additions and 1 deletions
@@ -93,13 +93,16 @@ def balance_distribution_over_time(
min_date_res = timeframe_to_prev_date(timeframe, min_date)
max_date_res = timeframe_to_prev_date(timeframe, max_date)
index = pd.date_range(min_date_res, max_date_res, freq=timeframe_to_resample_freq(timeframe))
df = pd.DataFrame(index=index)
pairs_lev = [f"{pair}_leverage" for pair in pairlist]
df = pd.DataFrame(index=index, columns=[stake_currency] + pairlist + pairs_lev, dtype=float)
df[stake_currency] = float(start_balance)
df[pairlist] = 0.0
df[pairs_lev] = np.nan
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.
orders = [o for o in trade.orders if o["order_filled_timestamp"]]
df.loc[trade.open_date : end_date, f"{trade.pair}_leverage"] = trade.leverage
for order in sorted(orders, key=lambda x: x["order_filled_timestamp"]):
filled_at = pd.Timestamp(dt_from_ts(order["order_filled_timestamp"]))
real_amount = order.get("filled", order["amount"]) / trade.leverage
@@ -81,6 +81,9 @@ def _migrate_wallet_history(config: Config, exchange: Exchange, starting_balance
# Assume the first column is the index (date)
stake_idx = balance_dist.columns.get_loc(stake_currency)
pair_balance_idx = {pair: balance_dist.columns.get_loc(pair) + 1 for pair in pairlist_valid}
pair_leverage_idx = {
pair: balance_dist.columns.get_loc(f"{pair}_leverage") + 1 for pair in pairlist_valid
}
pair_price_idx = {
pair: balance_dist.columns.get_loc(f"{pair}_open") + 1 for pair in pairlist_valid
}
@@ -106,6 +109,7 @@ def _migrate_wallet_history(config: Config, exchange: Exchange, starting_balance
for pair in pairlist_valid:
base_currency = pair.split("/")[0]
balance_value = row[pair_balance_idx[pair]]
leverage_value = row[pair_leverage_idx[pair]]
# Only add entry if balance is not empty/NaN
if not pd.isna(balance_value) and balance_value > 0:
price_value = row[pair_price_idx[pair]]
@@ -117,6 +121,7 @@ def _migrate_wallet_history(config: Config, exchange: Exchange, starting_balance
currency=base_currency,
price=price,
balance=balance_value,
leverage=leverage_value if not pd.isna(leverage_value) else 1.0,
)
)