Đầu tư Cổ phiếu · Phần 30 — Trading journal và performance analytics
Thiết kế nhật ký giao dịch có dữ liệu, đo expectancy, drawdown, attribution, execution và process; xây review ngày–tuần–tháng để cải thiện có kiểm soát.
“Hôm nay trade chưa tốt, cần kiên nhẫn hơn” không phải journal; đó là một câu không thể kiểm chứng. Journal chuyên nghiệp phải trả lời: play nào tạo P&L, trong regime nào, sau chi phí, với rủi ro bao nhiêu, và phần nào do signal/execution/vi phạm?
1. Bốn ledger, không phải một ô Notes
DECISION LEDGER — những gì biết và định làm trước lệnh
ORDER LEDGER — submitted/cancelled/rejected/fills
POSITION LEDGER — quantity, cost basis, stop, exposures
REVIEW LEDGER — outcome, attribution, process, changes
Không sửa decision snapshot sau kết quả. Correction tạo version/audit event.
2. Data model
Trade
trade_id, play_id, play_version
symbol, side, market
signal_timestamp, entry_start, exit_end
regime, setup_features, event_flags
planned_entry, initial_stop, risk_budget
planned_size, actual_size
Orders/fills — one-to-many
order_id, trade_id
submitted_at, order_type, limit/stop price
qty, status, cancel_reason
fill_id, fill_at, fill_price, fill_qty, fee
decision/arrival benchmark, spread snapshot
Daily position/equity
date, cash, market_value, equity
gross/net/beta exposure, heat
drawdown, regime, limit state
Review
exit_reason, net_pnl, realized_R
MFE_R, MAE_R, holding_period
process_score, violation_code
signal/execution/event attribution
pre/post screenshots, lesson, reviewer
3. Data validation
☐ Unique trade/order/fill IDs
☐ Timestamps timezone-aware
☐ Sum fills ≤ order quantity trừ replace semantics
☐ Position reconciliation mỗi ngày
☐ Cash/equity reconciliation
☐ Fees/taxes không null
☐ Play version tồn tại
☐ Entry/stop/risk snapshot trước fill
☐ Exit reason thuộc controlled vocabulary
Không dùng free text cho mọi thứ. exit_reason nên là INITIAL_STOP, TRAIL, TIME, EVENT, RISK_REDUCTION, DISCRETIONARY_EXCEPTION… Notes bổ sung, không thay schema.
4. Return metrics
Net P&L = gross trading P&L - all costs
Return_t = equity_t / equity_(t-1) - 1 [điều chỉnh flows]
CAGR = (ending/starting)^(1/years) - 1
Nếu có nạp/rút tiền, dùng time-weighted return để đánh giá strategy; money-weighted/IRR để đánh giá trải nghiệm vốn. Không trộn cash flow với alpha.
5. R metrics
realized_R = net_pnl / planned_risk_budget
expectancy_R = average(realized_R)
Phân rã:
expectancy = win_rate × avg_win_R
- loss_rate × abs(avg_loss_R)
Ví dụ:
Win rate 42%
Avg win +1,8R
Avg loss -0,9R
Expectancy = 0,42×1,8 - 0,58×0,9 = +0,234R/trade
Sau costs +0,08R/trade, edge mỏng hơn gross. Báo median và distribution; average dễ bị một +12R kéo lên.
6. MFE/MAE
MFE_R = max favorable price excursion / initial R per share
MAE_R = max adverse price excursion / initial R per share
Phân tích:
- Nhiều winner có MAE <0,2R: entry có thể chặt; nhưng đừng tối ưu stop chỉ trên winners.
- Nhiều loser đạt MFE +1R rồi thành -1R: exit/trailing đáng nghiên cứu.
- Time exits có MFE thấp: setup có thể không tạo momentum.
MFE/MAE cần intraday data nếu stop/target intraday; daily high/low có ambiguity.
7. Drawdown analytics
running_peak_t = max(equity_0...equity_t)
drawdown_t = equity_t / running_peak_t - 1
Mỗi drawdown episode lưu:
- Peak date/equity.
- Trough date/depth.
- Recovery date.
- Duration under water.
- Trades/regimes/violations đóng góp.
- Planned vs stress expectation.
Maximum drawdown đứng một mình bỏ duration. -10% hồi sau 5 ngày khác -10% kéo dài 18 tháng.
8. Risk-adjusted metrics — đọc có điều kiện
Sharpe ≈ annualized mean excess return / annualized std
Sortino ≈ annualized excess return / downside deviation
Calmar ≈ CAGR / abs(max drawdown)
Không so daily Sharpe của strategy thanh khoản cao với monthly appraisal của tài sản illiquid. Báo sampling frequency, risk-free assumption, period, autocorrelation/tail caveats và confidence.
9. Attribution tree
TOTAL NET P&L
├─ Market/regime beta
├─ Play/setup alpha
│ ├─ TPC-01
│ ├─ post-earnings
│ └─ other
├─ Sizing overlay
├─ Execution
│ ├─ spread/slippage
│ └─ missed opportunity
├─ Costs/tax/funding
└─ Process exceptions
Không cần mô hình toán phức tạp ngay. Bắt đầu bằng P&L theo play, regime, symbol, sector, direction, exit reason và violation.
P&L concentration
top_5_trade_share = P&L top 5 trades / total positive net P&L
Nếu toàn bộ edge đến từ vài outlier, cần hiểu đó là thiết kế trend-following hay may mắn/sự kiện ngoài play.
10. Cohort table
| Cohort | N | Exp R | Win% | Avg win/loss | P90 slippage | Process |
|---|---|---|---|---|---|---|
| TPC-01 / risk-on | 80 | +0,18 | 44% | 1,9/0,9 | 22bps | 93 |
| TPC-01 / caution | 35 | -0,11 | 31% | 1,4/1,0 | 35bps | 91 |
| Event post-release | 22 | +0,26 | 45% | 2,1/0,8 | 48bps | 88 |
Đừng kết luận mạnh ở N=22. Table tạo câu hỏi, không tự tạo significance.
11. Process metrics
Leading indicators
- % pre-trade checklist hoàn thành.
- % lệnh đúng size/stop.
- Số discretionary exceptions.
- Missing screenshots/data.
- Slippage ngoài tolerance.
- Tỷ lệ trade ngoài play.
Lagging indicators
- Net expectancy.
- Drawdown.
- Return/risk ratios.
- Capacity.
Leading indicators có thể sửa hôm nay; lagging metrics cần sample.
Violation severity
P0: duplicate/wrong-side order, vượt hard risk limit
P1: nới stop, over-size, trade ngoài mandate
P2: thiếu evidence, late journal, minor execution deviation
P3: documentation typo không ảnh hưởng risk
Một P0/P1 có thể kích hoạt pause dù tháng đang lời.
12. Review cadence
Sau mỗi lệnh — 5 phút
Rule-compliant?
Net R, MFE, MAE, slippage?
Một fact / một error / một unknown
Không sửa play
Cuối ngày — 15 phút
Reconcile orders/positions/cash
Limit breaches và event calendar
Process violations
Không tối ưu từ 1 ngày P&L
Cuối tuần — 60 phút
Trades theo play/regime
Screenshots winners + losers + skipped trades
Execution distribution
Violation root cause
Một experiment proposal tối đa
Cuối tháng/quý
Equity/drawdown episodes
Expectancy confidence and cohorts
Attribution, concentration, capacity
Play graduation/pause/retire
Risk limit and stress review
Versioned change approvals
13. Root-cause analysis
Một lệnh lỗ có thể do:
MARKET: normal variance / regime shift / tail event
MODEL: hypothesis wrong / parameter fragile / data leakage
SIGNAL: condition miscomputed / timestamp wrong
RISK: size/cluster/event cap wrong
EXECUTION: spread/impact/order handling
BEHAVIOR: FOMO/revenge/stop widening
OPERATIONS: data/broker/connectivity
Dùng “5 Whys” đến hành động hệ thống. “Thiếu kỷ luật” chưa phải root cause nếu checklist không khóa size và broker không có guardrail.
14. Change control
CHANGE REQUEST
Observed problem:
Evidence/sample:
Proposed change:
Expected mechanism:
Metrics affected:
New risks:
Test plan and holdout:
Approval/date:
Version:
Rollback/retire condition:
Không thay entry, stop, exit cùng lúc; bạn sẽ không biết thứ gì tạo khác biệt. Mọi change tạo version và forward sample mới.
15. Dashboard tối thiểu
CAPITAL
Equity, cash, flows, current drawdown
RISK
Gross/net, heat, cluster, event, liquidity, stress
PERFORMANCE
MTD/QTD/YTD net, expectancy R, profit factor,
Sharpe/Calmar with period, drawdown depth/duration
PROCESS
Score, violations, checklist completion
EXECUTION
Fill rate, median/P90 slippage, shortfall
RESEARCH
Trades by play/version/regime, sample vs graduation gate
Dashboard không được biến thành bảng vanity 50 KPI. Mỗi metric cần owner và action threshold.
16. Worked monthly review
Trades: 40
Gross: +8,4R
Costs: -2,0R
Net: +6,4R
Expectancy: +0,16R
Max DD: -4,2R; 9 trading days
Process score: 89
Violations: 1 P1 over-size, 4 P2 late journal
P&L: 78% từ risk-on TPC; caution cohort -2,1R
P90 slippage: 46bps vs tolerance 35bps
Kết luận đúng không phải “tháng lời, tăng size”. Actions:
- Caution permission đang đúng hướng Phần 25; giữ reduced/off và chờ sample.
- Execution vượt tolerance: phân nhóm open/participation, chạy experiment.
- P1 over-size: khóa calculator/order guardrail, không chỉ nhắc nhở.
- Không tăng risk cho tới khi process ≥90 và execution về tolerance trong forward month.
17. Lab 30 ngày
- Tạo schema bốn ledger.
- Nhập/paper trade tối thiểu 20 quyết định, gồm cả no-trade.
- Reconcile daily.
- Tính net R, MFE/MAE, drawdown, slippage.
- Phân cohort play/regime.
- Viết monthly review và đúng một change request.
MASTERY GATE
☐ Decision snapshot bất biến
☐ Order/fill one-to-many
☐ Equity/cash/position reconcile
☐ Return điều chỉnh flows
☐ Expectancy, MFE/MAE, drawdown duration
☐ Attribution play/regime/execution/process
☐ Leading và lagging metrics
☐ Review cadence + versioned change control
Kết luận
Journal không giúp bạn vì viết nhiều; nó giúp khi biến quyết định thành dữ liệu đủ sạch để bác bỏ câu chuyện của chính mình. Mục tiêu là một feedback loop chậm vừa đủ để có sample, nhanh vừa đủ để chặn lỗi vận hành.
Phần 31 là capstone: ghép mandate, data, playbook, regime, research, execution, risk, event, journal và governance thành một Personal Trading Desk có thể chạy trong 90 ngày.