This commit is contained in:
Oleg Sheynin 2025-07-15 20:32:11 +00:00
parent ddd9f4adb9
commit fe2ebbb27f
4 changed files with 114 additions and 44 deletions

View File

@ -474,8 +474,11 @@ class BacktestResult:
"""Clear all trades (used when processing new files)."""
self.trades.clear()
def collect_single_day_results(self, result: pd.DataFrame) -> None:
def collect_single_day_results(self, pairs_trades: List[pd.DataFrame]) -> None:
"""Collect and process single day trading results."""
result = pd.concat(pairs_trades, ignore_index=True)
result["time"] = pd.to_datetime(result["time"])
result = result.set_index("time").sort_index()
print("\n -------------- Suggested Trades ")
print(result)
@ -695,7 +698,7 @@ class BacktestResult:
print("-" * 100)
total_value += pos["total_current_value"]
total_value += pos["total_current_value"]
print(f"{'TOTAL OUTSTANDING VALUE':<80} ${total_value:<12.2f}")
@ -742,8 +745,8 @@ class BacktestResult:
shares_b = funding_per_position / open_px_b
# Calculate current position values (shares * current price)
current_value_a = shares_a * last_px_a
current_value_b = shares_b * last_px_b
current_value_a = shares_a * last_px_a * (-1 if open_side_a == "SELL" else 1)
current_value_b = shares_b * last_px_b * (-1 if open_side_b == "SELL" else 1)
total_current_value = current_value_a + current_value_b
# Get disequilibrium information

View File

@ -263,4 +263,8 @@ class TradingPair:
return self.predicted_df_
def __repr__(self) -> str:
return self.name()
def name(self) -> str:
return f"{self.symbol_a_} & {self.symbol_b_}"
# return f"{self.symbol_a_} & {self.symbol_b_}"

File diff suppressed because one or more lines are too long

View File

@ -105,11 +105,7 @@ def run_backtest(
print("No trading signals found for any pairs")
return bt_result
result = pd.concat(pairs_trades, ignore_index=True)
result["time"] = pd.to_datetime(result["time"])
result = result.set_index("time").sort_index()
bt_result.collect_single_day_results(result)
bt_result.collect_single_day_results(pairs_trades)
return bt_result