feat: add deterministic trade and signal identity

This commit is contained in:
ao gong
2026-08-21 22:32:37 +08:00
parent d6c3614301
commit a3cefe364d
+13
View File
@@ -273,6 +273,19 @@ def _build_trades(result: FactorBacktestResult, run_id: str) -> pd.DataFrame:
trades = result.execution.trades_frame.copy(deep=True) trades = result.execution.trades_frame.copy(deep=True)
trades.insert(0, "run_id", run_id) trades.insert(0, "run_id", run_id)
trades["trade_date"] = pd.to_datetime(trades["trade_date"]).dt.date trades["trade_date"] = pd.to_datetime(trades["trade_date"]).dt.date
trades.insert(
1,
"trade_id",
[f"{run_id}:{sequence:08d}" for sequence in range(1, len(trades) + 1)],
)
signal_by_execution = {
pd.Timestamp(execution_date).date(): pd.Timestamp(signal_date).date()
for signal_date, execution_date in result.schedule.signal_to_execution.items()
}
trades["signal_id"] = [
f"{run_id}:signal:{signal_by_execution[trade_date].isoformat()}"
for trade_date in trades["trade_date"]
]
trades["total_cost"] = trades["fee"] + trades["slippage"] trades["total_cost"] = trades["fee"] + trades["slippage"]
return trades return trades