Found via code audit.
1. Portfolio file race (HIGH) - `box/tools/trade.ts:8-21`: 3 concurrent agents (claude/gemini/openai) do read-modify-write on same file with no locking.
2. Division by zero (HIGH) - `box/tools/trade.ts:77`: `newTotalShares` can be 0 from FP precision. Corrupts portfolio with Infinity.
3. Missing ticker validation (HIGH) - `box/tools/trade.ts:204-206`: Undefined ticker passed to `.toUpperCase()` crashes.
Found via code audit.
1. Portfolio file race (HIGH) - `box/tools/trade.ts:8-21`: 3 concurrent agents (claude/gemini/openai) do read-modify-write on same file with no locking.
2. Division by zero (HIGH) - `box/tools/trade.ts:77`: `newTotalShares` can be 0 from FP precision. Corrupts portfolio with Infinity.
3. Missing ticker validation (HIGH) - `box/tools/trade.ts:204-206`: Undefined ticker passed to `.toUpperCase()` crashes.