feat: add deterministic trade and signal identity
This commit is contained in:
@@ -273,6 +273,19 @@ def _build_trades(result: FactorBacktestResult, run_id: str) -> pd.DataFrame:
|
||||
trades = result.execution.trades_frame.copy(deep=True)
|
||||
trades.insert(0, "run_id", run_id)
|
||||
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"]
|
||||
return trades
|
||||
|
||||
|
||||
Reference in New Issue
Block a user