feat: add wallet to dataframe conversion

This commit is contained in:
Matthias
2025-04-26 09:14:17 +02:00
parent 11cb3ef416
commit 10cc857c51
4 changed files with 18 additions and 0 deletions
@@ -55,6 +55,7 @@ class BacktestContentTypeIcomplete(TypedDict, total=False):
backtest_start_time: int
backtest_end_time: int
run_id: str
wallet_summary: DataFrame
class BacktestContentType(BacktestContentTypeIcomplete, total=True):
+2
View File
@@ -51,6 +51,7 @@ from freqtrade.mixins import LoggingMixin
from freqtrade.optimize.backtest_caching import get_strategy_run_id
from freqtrade.optimize.bt_progress import BTProgress
from freqtrade.optimize.optimize_reports import (
convert_bt_wallet_collection,
generate_backtest_stats,
generate_rejected_signals,
generate_trade_signal_candles,
@@ -1752,6 +1753,7 @@ class Backtesting:
"canceled_entry_orders": self.canceled_entry_orders,
"replaced_entry_orders": self.replaced_entry_orders,
"final_balance": self.wallets.get_total(self.strategy.config["stake_currency"]),
"wallet_summary": convert_bt_wallet_collection(self.wallet_captures),
}
def backtest_one_strategy(
@@ -12,6 +12,7 @@ from freqtrade.optimize.optimize_reports.bt_output import (
)
from freqtrade.optimize.optimize_reports.bt_storage import store_backtest_results
from freqtrade.optimize.optimize_reports.optimize_reports import (
convert_bt_wallet_collection,
generate_all_periodic_breakdown_stats,
generate_backtest_stats,
generate_daily_stats,
@@ -29,6 +29,20 @@ from freqtrade.util import decimals_per_coin, fmt_coin, format_duration, get_dry
logger = logging.getLogger(__name__)
def convert_bt_wallet_collection(wallet_captures: list[tuple]) -> DataFrame:
"""
Convert the wallet capture list to a DataFrame.
Assumes the wallet_captures list contains tuples with the following structure:
(date, currency, price, balance).
"""
if len(wallet_captures) == 0:
return []
return DataFrame(
wallet_captures,
columns=["date", "currency", "price", "balance"],
)
def generate_trade_signal_candles(
preprocessed_df: dict[str, DataFrame], bt_results: BacktestContentType, date_col: str
) -> dict[str, DataFrame]: