# Mark-to-market PnL mtm = cash + inventory * mid_price pnl.append(mtm) final_pnl = pnl[-1] - 10000 print(f"Final PnL: $final_pnl:.2f") print(f"Total trades executed: num_trades")
import numpy as np import pandas as pd spread = 0.05 half_spread = spread / 2 mid_price = 100.00 inventory = 0 cash = 10000 num_trades = 1000 Daemon's limit prices bid_limit = mid_price - 0.02 ask_limit = mid_price + 0.07 daemon goldsmith - order flow trading for fun and profit.pdf
if flow == 1: # Aggressive buyer hits our ask cash += ask_limit inventory -= 1 elif flow == -1: # Aggressive seller hits our bid cash -= bid_limit inventory += 1 # Mark-to-market PnL mtm = cash + inventory * mid_price pnl
# Every 100 trades, flatten inventory at mid price (simplified risk mgmt) if _ % 100 == 0 and inventory != 0: cash += inventory * mid_price inventory = 0 | | Inventory management | Offsetting unwanted exposure
| Component | Description | |-----------|-------------| | | Buying at bid, selling at ask. | | Rebates | Some exchanges pay fees for adding liquidity (maker rebates). | | Adverse selection | Risk of being picked off by informed traders. | | Inventory management | Offsetting unwanted exposure. |
for _ in range(num_trades): # Simulate random order flow: +1 (buy market order), -1 (sell market order), 0 (none) flow = np.random.choice([-1, 0, 1], p=[0.3, 0.4, 0.3])