fix: backfill split pnl migration and harden partial pnl inputs

This commit is contained in:
agentson
2026-02-27 08:46:22 +09:00
parent 7bc4e88335
commit 34cf081c96
2 changed files with 48 additions and 2 deletions

View File

@@ -184,6 +184,13 @@ def test_mode_migration_adds_column_to_existing_db() -> None:
decision_id TEXT
)"""
)
old_conn.execute(
"""
INSERT INTO trades (
timestamp, stock_code, action, confidence, rationale, quantity, price, pnl
) VALUES ('2026-01-01T00:00:00+00:00', 'AAPL', 'SELL', 90, 'legacy', 1, 100.0, 123.45)
"""
)
old_conn.commit()
old_conn.close()
@@ -194,6 +201,13 @@ def test_mode_migration_adds_column_to_existing_db() -> None:
assert "mode" in columns
assert "strategy_pnl" in columns
assert "fx_pnl" in columns
migrated = conn.execute(
"SELECT pnl, strategy_pnl, fx_pnl FROM trades WHERE stock_code='AAPL' LIMIT 1"
).fetchone()
assert migrated is not None
assert migrated[0] == 123.45
assert migrated[1] == 123.45
assert migrated[2] == 0.0
conn.close()
finally:
os.unlink(db_path)
@@ -241,3 +255,25 @@ def test_log_trade_backward_compat_sets_strategy_pnl_from_pnl() -> None:
assert row[0] == 50.0
assert row[1] == 50.0
assert row[2] == 0.0
def test_log_trade_partial_fx_input_does_not_infer_negative_strategy_pnl() -> None:
conn = init_db(":memory:")
log_trade(
conn=conn,
stock_code="AAPL",
action="SELL",
confidence=70,
rationale="fx only",
pnl=0.0,
fx_pnl=10.0,
market="US_NASDAQ",
exchange_code="NASD",
)
row = conn.execute(
"SELECT pnl, strategy_pnl, fx_pnl FROM trades ORDER BY id DESC LIMIT 1"
).fetchone()
assert row is not None
assert row[0] == 10.0
assert row[1] == 0.0
assert row[2] == 10.0