第一笔实盘 — F 0.20 Delta CSP
第一笔实盘的心理结构、保守 Wheel 的参数选型、限价单成交动力学
日期: 2026-07-10 方向: Phase 3 / 第一笔实盘 阶段: Phase 3: 实盘+规模化+迁移 标签: #FirstLiveTrade #CSP #Wheel #FordF #SmallAccount #Psychology
今日目标
| 类型 | 内容 |
|---|---|
| 学习 | 第一笔实盘的心理结构、保守 Wheel 的参数选型、限价单成交动力学 |
| 实操 | 在实盘账户下出第一张 cash-secured put(F,30 DTE,0.20 delta) |
| 产出 | TR-DAY62 笔记 + 实盘下单脚本(带护栏)+ thesis 文档 + 心理记录模板 |
核心规则:今天不是要赚多少 premium,是要把「第一次真金白银下单」这件事,做得像第 100 次一样冷静。
一、为什么今天是 Day 62
复盘前 61 天:
| 区间 | 内容 | 状态 |
|---|---|---|
| Day 1-30 | Phase 1:IBKR 设置、ib_insync、Python 量化基础、期权希腊字母 | ✅ |
| Day 31-45 | Phase 2 前半:Wheel 策略 paper 跑通、SPY/QQQ 上 paper CSP+CC 循环 | ✅ |
| Day 46-60 | Phase 2 后半:财报策略 paper、回测框架、风险预算化、tax-lot 记账 | ✅ |
| Day 61 | Phase 3 启动日:实盘账户入金 $1,000 USD,过 W-8BEN+options L2 终审 | ✅ |
| Day 62 | 第一笔实盘 CSP | 今天 |
为什么不直接拉到 SPY:SPY 一张 ATM put 锁的现金 ≈ $40k,账户根本不够。我需要一个单位面值小的标的来跑通流程。F 是首选——价格 ~$10,一张 $9 strike put 只锁 $900,正好在 $1,000 账户的可承受范围内,留 $100 缓冲应付佣金和数据费扣款。
核心认知:第一笔实盘的目的不是「最大 Sharpe」,是「最小不可逆错误」。所以选了一个就算 100% 亏光也只损失 $900 的标的,且 thesis 是「我愿意以 $9 持有 F 100 股」——assigned 不是事故,是计划的一部分。
二、标的最终选定:Ford (F)
2.1 候选 vs 最终
进 Day 62 之前我列了 3 个候选:
| 候选 | 价格 | 0.20Δ 30DTE Put | 锁定资金 | 否决理由 |
|---|---|---|---|---|
| F (Ford) | ~$10.10 | strike ~$9, premium $15-20 | $900 | ✅ 选中 |
| SOFI | ~$8.50 | strike ~$7.5, premium ~$12 | $750 | IV 太高、波动剧烈、新闻驱动不可控 |
| PLTR | ~$25 | strike ~$22, premium ~$45 | $2,200 | 账户不够 / 远超单笔风险预算 |
| BAC | ~$45 | strike ~$41, premium ~$70 | $4,100 | 账户不够 |
| SPY | ~$580 | strike ~$555, premium ~$300 | $55,500 | 账户根本不够 |
为什么是 F 不是 SOFI:F 的 30 天 HV ≈ 25%,SOFI ≈ 50%。SOFI premium 看起来更香,但同样 0.20 delta 在 SOFI 上意味着「F 跌 10% 才 ITM」vs「SOFI 跌 18% 才 ITM」——表面看更安全,但 SOFI 真跌起来一周 -30% 都见过。第一笔我不想被 tail event 教育。
为什么 30 DTE 不是 7 DTE:
- 7 DTE 的 theta 衰减更猛但 gamma 风险也猛——离到期越近,标的小幅变动对 delta 影响越剧烈。第一笔不能要 gamma 风险。
- 30 DTE 给我心理缓冲时间——这一笔我至少有 30 天可以观察、可以决策、可以学习。
- 30 DTE 落在 theta 加速衰减的「甜区前段」,时间价值衰减率每天 ~3%,每周 ~20%,是 Wheel 教科书的标准选项。
2.2 实际报价快照(写笔记时取的)
Underlying: F (Ford Motor Co.)
Spot: $10.12
30 DTE put @ $9.00 strike:
Bid: $0.15
Ask: $0.21
Mid: $0.18
Delta: -0.19
Theta: -0.003 / day
IV: 28%
OI: 12,400 ← 充足,limit order 不至于完全无人接
Volume: 340/day ← 流动性 ok
合约乘数 100 → 一张 mid 价 premium = $18,最大可收 $21(ask),最低 $15(bid)。我会挂 mid,等成交,不追 ask。
三、下单前 final sanity check(5 项)
我做了一张 checklist,今天起这是每笔实盘的强制流程。一项不过都不能下单。
3.1 ✅ 资金核算
账户净资产: $1,000.00
- 应锁现金: $900.00 (1 张 × 100 × $9 strike)
- 预留缓冲: $80.00 (佣金、数据费、wire-out 摩擦)
- 可下单余额: $1,000 - $900 - $80 = $20 ← 接近 0,但 ok
+ 预期 premium: $18 (mid)
账户预期成交后净值: ~$1,018(未实现)
护栏:如果今天忽然冒出「再下一张」的想法,账户连一张都不够第二笔——这是好事,物理性地防止了「first day 上头加仓」。
3.2 ✅ Thesis 写下来(这是法律级文件)
我打开 notes/thesis/F-CSP-20260710.md 写下:
Thesis:我(持有人)愿意以 $9.00/股 的价格买入 Ford Motor (F) 100 股。
理由:
- F 当前 ~$10.12,PE ~10,dividend yield ~5%,相对历史估值偏低分位
- $9 = 10% 折扣买入价,处于 2024-2026 区间的下沿
- 若被 assigned,我会切到 covered call 模式(Wheel 第二段)继续收 premium
- 我对 F 的基本面有最低限度的认识(汽车周期、EV 战略、F-150 现金牛、$24B 长债是已知风险)
不是 thesis:
- 「premium 看着不错」——不是 thesis
- 「IV 高」——不是 thesis
- 「短期看涨」——不是 thesis(这是 short put,不是 long call)
退出条件:
- 50% rule:premium 跌到 mid × 50% ≈ $9,buy-to-close 平仓
- 7 DTE 仍 OTM:持有到期,让其归零
- assigned:接受持仓 100 股 F @ $9,立即评估 covered call
为什么要写 thesis:30 天后如果出问题,我会回来读这份文件。它强迫我现在用慢系统思考,而不是事后用慢系统找借口。这是 Daniel Kahneman + Howard Marks 都强调的反事实文档(pre-mortem document)。
3.3 ✅ Max loss 算清楚
Max Loss = (Strike - Premium) × 100
= ($9.00 - $0.18) × 100
= $882
折算账户: $882 / $1000 = 88.2% 账户损失(理论极限)
触发条件: F 在到期日 = $0(公司破产到期日股价归零)
这是 worst case,不是 base case。F 30 天内股价归零的概率 ≈ 远低于 1%。但「我能承受 88% 损失吗」这个问题必须正面回答——能。 这 $1,000 是我设的「教育预算」,归零换 30 天实盘经验也是值得的。
但我不会把 max loss 当 base case 焦虑——base case 是 80% 概率 OTM 到期,premium 全收。
3.4 ✅ 50% rule 平仓价已挂
开仓 premium: $0.18 mid
50% close 价: $0.09
平仓单类型: buy-to-close LIMIT @ $0.09 GTC
触发条件: 理论上 mid 跌到 ≤$0.09 即成交
为什么 50% 而非 21 DTE:
- 50% rule 经验数据(tastytrade 数据集,~2M trades):CSP 等到 50% profit 平仓的胜率 ~85%,平均 hold ~12 天
- 等到期收 100% 看起来更香,但最后 7 天 gamma 风险陡增,性价比反而下降
- 50% rule 等于「锁定 70% 的预期收益+释放保证金做下一笔」
但我账户现在只能撑一张——所以释放保证金对我没用,今天纯粹是降低 gamma 暴露。
3.5 ✅ 暴跌压力测试
情景 1: F 下跌 5% → $9.61
put 仍 OTM(>$9 strike),premium 可能涨到 ~$0.40
未实现 P&L: -$22(小幅未实现亏损,未触发 50% rule)
→ 持有
情景 2: F 下跌 10% → $9.10
put 接近 ATM,premium ~$0.80
未实现 P&L: -$62
→ 持有(thesis 仍 valid,我愿意在 $9 接货)
情景 3: F 下跌 20% → $8.10
put 深 ITM,premium ~$1.00 (含 $0.90 内在 + $0.10 时间)
未实现 P&L: -$82
被 assigned 概率显著升高
→ 接受 assigned 风险,or 滚动到下月(不在 Day 62 决策范围)
情景 4: F 一日暴跌 30% → $7.08(极端事件,如召回 / 重大 fraud)
put 深 ITM,premium ~$2.00
未实现 P&L: -$182
被 assigned 几乎必然
→ 持有到 assigned,接货 100 股 F @ $9,开始 Wheel 第二段
关键认知:所有 4 种情景我都能接受。没有「需要紧急逃跑」的剧本。第一笔实盘最忌讳的就是出现需要紧急决策的情景。
四、实际下单:双轨执行(脚本 + 手动确认)
第一笔实盘我不做 100% 全自动——我用脚本算好参数、生成订单对象,但最后一步点确认手动做。这是「四眼原则」:脚本是一只眼,我是另一只眼。
4.1 实盘连接脚本(带护栏)
# tr_day62_first_live_csp.py
"""
First live trade — F 0.20 delta CSP
DO NOT RUN UNLESS YOU'VE READ THE THESIS AT notes/thesis/F-CSP-20260710.md
"""
from ib_insync import IB, Stock, Option, LimitOrder, util
from datetime import datetime
import sys
# ---------- 护栏 1: 强制确认 ----------
print("=" * 60)
print(" FIRST LIVE TRADE — F 0.20Δ 30DTE CSP")
print("=" * 60)
print("Have you:")
print(" [ ] Read the thesis document?")
print(" [ ] Verified $1,000 cash in live account?")
print(" [ ] Set 50% close limit order plan?")
print(" [ ] Slept ≥7 hours last night?")
print("=" * 60)
confirm = input("Type 'I HAVE' to proceed: ")
if confirm.strip() != "I HAVE":
print("Aborted. Not ready.")
sys.exit(1)
# ---------- 护栏 2: 端口必须是实盘 IB Gateway ----------
LIVE_PORT = 4001 # IB Gateway live
CLIENT_ID = 62 # Day 62 实盘专用 clientId(与 paper 区分)
ib = IB()
ib.connect('127.0.0.1', LIVE_PORT, clientId=CLIENT_ID)
# 双重断言
assert ib.client.port == LIVE_PORT, f"WRONG PORT: {ib.client.port}"
accounts = ib.managedAccounts()
print(f"Connected to account: {accounts}")
assert len(accounts) == 1, "Multiple accounts—abort"
assert accounts[0].startswith("U"), "Account ID doesn't look right"
# ---------- 护栏 3: 余额检查 ----------
summary = {s.tag: s.value for s in ib.accountSummary()}
net_liq = float(summary.get('NetLiquidation', 0))
cash = float(summary.get('TotalCashValue', 0))
print(f"NetLiq: ${net_liq:.2f}, Cash: ${cash:.2f}")
assert net_liq >= 950 and net_liq <= 1100, "Account size out of expected band"
assert cash >= 900, "Not enough cash for CSP"
# ---------- 4: 构造合约 ----------
underlying = Stock('F', 'SMART', 'USD')
ib.qualifyContracts(underlying)
[ticker] = ib.reqTickers(underlying)
spot = ticker.marketPrice()
print(f"F spot: ${spot:.2f}")
assert 9.5 <= spot <= 11.0, "Spot outside expected range—abort"
# 30 DTE 到期日(取最近的月度 expiration)
expiry = '20260814' # 实际从 ib.reqSecDefOptParams 动态取
strike = 9.0
put = Option('F', expiry, strike, 'P', 'SMART', '100', 'USD')
ib.qualifyContracts(put)
# ---------- 5: 拉期权报价 ----------
[opt_ticker] = ib.reqTickers(put)
bid, ask = opt_ticker.bid, opt_ticker.ask
mid = (bid + ask) / 2
print(f"F {expiry} ${strike}P bid: {bid}, ask: {ask}, mid: {mid:.3f}")
print(f"Delta: {opt_ticker.modelGreeks.delta if opt_ticker.modelGreeks else 'N/A'}")
# ---------- 6: 护栏 — delta、流动性、bid-ask spread ----------
assert opt_ticker.modelGreeks is not None, "No greeks available"
delta = opt_ticker.modelGreeks.delta
assert -0.30 < delta < -0.15, f"Delta {delta} outside 0.20±0.05"
assert (ask - bid) / mid < 0.30, "Bid-ask spread too wide (>30% of mid)"
assert bid > 0.10, "Premium too thin"
# ---------- 7: 构造订单(不提交!)----------
order = LimitOrder(
action='SELL',
totalQuantity=1,
lmtPrice=round(mid, 2),
tif='GTC',
transmit=False, # ← 关键:不自动发送,需要手动在 TWS 里点确认
)
# 注意 transmit=False:订单会出现在 TWS 待确认队列里,我亲手点 Submit
trade = ib.placeOrder(put, order)
print(f"Order staged in TWS (not submitted). Order ID: {trade.order.orderId}")
print(f"Now go to TWS and click 'Transmit' to actually submit.")
ib.sleep(2)
ib.disconnect()
几个关键设计:
input("Type 'I HAVE'"):物理性地防止误执行——脚本不能在 cron 里跑,必须有人坐在键盘前。clientId=62:实盘和 paper 用完全不同的 clientId。我永远知道哪个连接是哪个。transmit=False:脚本生成订单但不发送。订单会在 TWS GUI 里以「待确认」状态显示,我亲手点 transmit。这是双轨确认。- 断言 spot/delta/spread/bid:任何数据异常(API 故障、报价错误、流动性蒸发)都直接 abort,不让脚本提交错单。
4.2 在 TWS 里点击 Transmit
脚本跑完后,TWS 的 Orders 面板出现一条 黄色高亮的待确认订单:
Sell 1 F Aug15'26 9.00 PUT LMT 0.18 GTC
我盯了 30 秒,确认:
- ✓ 方向是 SELL(不是 BUY)
- ✓ 数量是 1(不是 10 或 100)
- ✓ 类型是 PUT(不是 CALL)
- ✓ Strike 是 9.00(不是 90 或 0.9)
- ✓ 到期是 Aug15'26(不是 2027 也不是 Tomorrow)
- ✓ 限价是 0.18(不是 1.8 或 18)
然后点 Transmit。
订单状态从 PendingSubmit → Submitted → Working。
我盯着屏幕看了 5 分钟。没成交——挂在 mid,等 maker 来 hit。
五、下单后第一个 5 分钟(心理记录)
这一节我一边盯盘一边写。没修饰,原始记录。
[T+0:00] 点 Transmit。心跳明显加快。这种感觉和 paper 完全不同。
Paper 是「我在玩游戏」。实盘是「这 18 美元真的会进我户头,或者那 882 美元真的会出我户头」。
[T+0:30] 订单 Working。没成交。本能想取消重挂 ask。
理性地告诉自己:你设计的是 mid,挂在 mid 是策略的一部分。耐心。
[T+1:15] 看到 F 跳到 $10.08 — 跌了 4 美分。
身体反应:紧张感升级。
理性反应:F 一天波动 1%-2% 是常态。4 美分 = 0.4%,是噪音。
[T+2:00] 想刷新看「现在 premium mid 是多少」。
不要看!订单一旦挂出,更新报价对决策无意义,只增加焦虑。
[T+2:45] 想再算一遍 Max Loss。
为什么?因为脑子在找「我哪里没算清楚」。
事实:我已经算过了。Day 62 笔记里第 3.3 节写明白了。不要再算。
[T+3:30] 订单仍未成交。开始想:「是不是 mid 太低?要不要提价?」
停。这是 anchoring bias —— 因为没立刻成交就觉得报价低估了。
事实:流动性合约挂 mid,平均成交时间 5-30 分钟。我才 3.5 分钟。
[T+4:10] 突然意识到:我盯着这个屏幕在做什么?
我设计了完整规则,按规则下单了。盯盘并不能改变 anything。
盯盘的唯一可能后果:因为情绪波动改规则。
[T+5:00] 关闭 TWS Order 窗口。打开 Day 62 笔记继续写。
状态:脱钩成功。心跳回归基线。
核心学习:第一笔实盘的真正训练不是技术训练,是注意力训练——能不能在订单挂出后,把注意力转移到任何其他事情上。
5.1 「这次是真钱了」感觉的解构
Paper Trading 和实盘的体验差异不在于「金额大小」,在于可逆性:
| 维度 | Paper | 实盘 |
|---|---|---|
| 错单是否能取消 | 没差别,反正不疼 | 几秒内能撤,过了就成交了 |
| 错过的机会 | 想到再玩一遍 | 永远过去了 |
| 浮亏 | 数字 | 真实购买力损失 |
| 浮盈 | 数字 | 你脑子里已经在花了 |
第一笔实盘的心智压力不是金钱压力,是**「不可逆决策」的压力**。这种压力 paper 永远练不出来,所以 Day 62 不可避免——总有一天要跨过这一步。
5.2 抑制随时 close 的冲动
下单 20 分钟内订单成交了(mid 0.18)。premium $18 进账。
然后立刻冒出来的念头:「赚到了,要不现在 close 锁定?」
这是 disposition effect(处置效应)——人对小额浮盈极度敏感,容易过早锁利。
我的反制:已经设置了 50% rule 的 GTC 平仓单。这个单不需要我决策,等到 premium 跌到 $0.09 自动触发。我不需要每天问「现在要不要 close」——脚本帮我问了。
但凡今天没设这个自动 GTC close,我大概率会在 +30% 的时候手动平掉,然后 30 天后看着到期收 100% 的曲线后悔。
六、未来 30 天监控计划
Day 63-91(30 天到期窗口)
每天 1 次(最好 US 收盘后),不要更频繁:
- 看 F 价格变化
- 看 premium 当前 mid
- 看 50% rule GTC 单是否触发
- 不调整、不加仓、不滚动(除非触发明确规则)
50% rule 触发(premium ≤ $0.09):
- GTC 自动平仓
- 记录 P&L、hold 天数、underlying 价格变化
- 写复盘
- 决定下一笔(同标的 / 换标的)
7 DTE 仍 OTM(最后 7 天):
- 不 close(gamma 高位但已接近到期,时间价值快归零)
- 持有到期,让其归零
- 收 100% premium
7 DTE 但 ITM(最后 7 天但跌破 strike):
- 评估:roll 到下月 same strike or assigned
- 优先 assigned(这是 thesis 的本意——以 $9 买入 F)
- assigned 后切到 covered call 模式(Wheel 第二段)
到期前一天 close-to-ATM(±2%):
- 不滚动
- 让 IB 自动处理(OTM 归零 / ITM 自动 assigned)
最重要的规则:除以上明确情景外,不做任何动作。不要因为「F 涨了想锁利」、「F 跌了想滚动」、「IV 涨了想加仓」做任何动作。规则之外 = 不动。
七、第一笔实盘 vs paper 的对比记录
下完单后我对照过去 paper 跑过的 50+ 张 CSP 写了一个对比表。这是 Day 62 最有价值的产出之一——它让我知道未来回测要打多少折扣。
| 维度 | Paper (50 张 CSP 样本) | Live (今天这一笔) | 差异 |
|---|---|---|---|
| 挂单到成交时间 | 平均 <1 秒("insta-fill") | 实测 ~20 分钟 | Paper 是仿真,Live 是真做市商 |
| 成交价 vs mid | 100% 在 mid | 在 mid(这次幸运) | Live 可能滑到 mid 偏 ask 一档 |
| 滑点(占 premium %) | 0 bp | 实测 0 bp,预期 100-300 bp | Paper 完全没建模 |
| bid-ask spread | Paper 也显示了 spread 但订单 always at mid | 真实 spread 影响成交 | - |
| partial fill | 从未发生 | 没发生(数量=1) | 数量 ≥10 张时可能出现 |
| 数据延迟 | 0 ms | 200-500 ms | API 网络往返 |
| 报价跳动频率 | 顺滑 | 跳跃式 | NBBO 离散 |
| 心理状态 | 完全放松 | 心跳 +20 bpm | 不可量化但巨大 |
| 下单耐心 | 不存在(秒成交) | 必须等 | - |
对策略的影响:
- 回测如果是 paper 数据样本拟合的,实盘 Sharpe 会 打折 15-30%——主要来自 (a) 滑点 (b) 流动性差时段无法 mid 成交 (c) 心理失误。
- 任何「频繁挂单/撤单」策略在实盘里都比 paper 差得多。低频策略(如 Wheel、月度 rebalance)对这些差异相对不敏感——这也是为什么小账户应该从低频策略入门。
八、为什么选这么保守:参数解构
很多人第一笔会选 ATM short call、0DTE、或者 IV crush 玩法——「反正小钱玩玩」。我反对。
| 参数 | 我的选择 | 激进选项 | 我的理由 |
|---|---|---|---|
| Delta | 0.20 | 0.40-0.50 (ATM) | 0.20 = 被 assigned 概率 ~20%,胜率 80% |
| DTE | 30 | 7 或 0 | 30 DTE 在 theta 衰减甜区前段,gamma 暴露低 |
| Strike | $9 (-10% OTM) | $10 (ATM) | -10% OTM 给我容错空间 |
| 方向 | Short Put | Long Call | Short premium 收 theta,胜率自然偏高 |
| 标的 | F (low-vol large cap) | TSLA / GME / 小盘 | F 没有「明早 -50%」的剧本 |
| 数量 | 1 张 | 多张 | 一张已经吃满账户保证金 |
| 持有计划 | 50% rule + 接受 assigned | 想短期 close | 接受 assigned 才是 Wheel 完整循环 |
8.1 0.20 delta = 被 assigned 概率 20%
期权定价里,delta 近似等于到期 ITM 概率(在 BSM 假设下严格成立的是 N(d2) 而非 delta,但实操中 delta 是 N(d2) 的近似)。
Delta = -0.20 → Pr(到期 ITM) ≈ 18-20%
含义:80% 的概率,30 天后 F 仍在 $9 以上,put 归零,我留下 $18 premium。
剩下 20% 的概率,F 跌破 $9,我被 assigned(按 $9 买入 F 100 股)。
但重要的反直觉:被 assigned 不是亏损。它是「我用 $9 买入 F」加「已经收了 $18 premium」。有效成本价 = $9.00 - $0.18 = $8.82。
如果 F 跌到 $8.50 我被 assigned,我的未实现亏损是 (8.82 - 8.50) × 100 = $32,不是 (9.00 - 8.50) × 100 = $50。
8.2 30 DTE = Theta 衰减最快的区段
DTE Theta / day (相对值)
60 ~ 0.5x
45 ~ 0.7x
30 ~ 1.0x ← 我们在这
21 ~ 1.3x
14 ~ 1.6x
7 ~ 2.3x ← Theta 最快但 Gamma 也最危险
3 ~ 3.5x ← 纯赌博区
0DTE ∞ Theta,∞ Gamma
30 DTE 是「theta 已经在加速,但 gamma 还不那么恐怖」的甜区前段。Wheel 教科书的标准选项是 30-45 DTE,过了 21 DTE 还没平仓的话考虑 roll 或者持有到期。
8.3 $9 strike = F 至少 -10% 才 ITM
F 当前: $10.12
$9 Strike: 距离 -11.1%
F 30 天历史波动率: ~25%
30 天 1-sigma 移动: 10.12 × 0.25 × √(30/365) ≈ ±0.73
-11.1% / sigma ≈ -1.5 sigma
正态分布下,-1.5 sigma 之外的尾部概率 ≈ 7%
但 delta 给我们 ~20% 的 ITM 概率——为什么不是 7%?
因为期权市场不假设正态分布:实际分布是肥尾(fat tails),下行 skew,IV smile。Delta 内嵌了市场对肥尾的定价。20% 是市场更现实的估计,而非纯学院派 7%。
对我的意义:我应该信 delta 给出的 20%,不要被「-1.5 sigma 只有 7%」的错觉欺骗。
8.4 这是最 vanilla 的 wheel 入门
Wheel 策略的完整 8 字循环:
持有现金 → 卖 CSP(收 premium)
│
┌──────┴──────┐
↓ ↓
OTM 到期 ITM assigned
现金不变 持有 100 股股票
│ │
↓ ↓
再卖 CSP 卖 CC(收 premium)
│
┌──────┴──────┐
↓ ↓
OTM 到期 ITM assigned
股票不变 股票被 call away
│ │
↓ ↓
再卖 CC 回到现金状态
重新卖 CSP
今天的 CSP 是这个 8 字的起点。无论如何走向,我都有预设动作。这就是「机械化策略」相对「手感交易」的最大优势——决策已经在事前完成,事中只是执行。
九、下单完后做什么(注意力管理)
订单成交后我立刻关闭 TWS,做的事情:
[T+25 min] 关 TWS
[T+30 min] 写这篇 Day 62 笔记到第 5 节
[T+90 min] 中午午餐 + 散步 30 分钟
[T+120 min] 回来写第 6-9 节
[T+200 min] Day 62 笔记完成,更新 docs/daily/TR_PROGRESS.md
[T+next day] Day 63: 实盘 vs 回测的对比分析
绝对禁忌:
- ✗ 反复打开 TWS 刷新报价
- ✗ 查看 F 的实时新闻 / Twitter / 论坛
- ✗ 跟朋友说「我下了第一笔实盘」(社交确认会强化情绪)
- ✗ 查看其他可能想入手的标的
- ✗ 看 YouTube 上的「options trading guru」
- ✗ 在 30 天内 reload 账户加仓
为什么这些都是禁忌:每一项都会增加「想动」的冲动。第一笔实盘的目的就是学会不动。
十、PM 视角:今天学到的迁移性思考
第一次 production deploy = 看着 dashboard 心跳加速。这一条放在第一位。
我做了 10 年 PM/BA/dev。第一次把自己的代码推上 prod,第一次配合 PM 把新功能 GA,第一次在金融机构按生产红头按钮——每一次都是同样的心跳。今天这种感觉不是新的,但它还是来了。
这教会我几件事:
- 保持冷静的能力是经验积累的,不是天赋。Day 62 的我比 10 年前第一次 prod deploy 的我冷静得多——不是因为心理素质强了,是因为我学会了把恐慌预算化("It's fine to feel nervous. Now go do the thing.")。
- 预案的存在本身就降低焦虑。我今天不焦虑的根本原因不是「我能赚到 premium」,是「F 跌到任何价格我都有预设动作」。未知 = 焦虑,已知 = 执行。把所有 if-else 想清楚写下来,焦虑就消解了大半。
- 物理性护栏 >> 心理性自律。
transmit=False、input("I HAVE")、assert port==4001——这些是物理性护栏。它们工作的原因是它们不依赖我自律。任何依赖「我应该不会犯错」的设计都是脆弱设计。 - Pre-mortem 文档(thesis)比 post-mortem 复盘更重要。事后复盘容易合理化——「我当时就觉得 F 会跌」(hindsight bias)。事前 thesis 是无法被合理化的证据。
- 「小金额第一次」的目的不是赚钱。它是为了让你「在真金白银压力下走一遍流程」。$1,000 账户的滑点经验、心跳经验、注意力管理经验——这些在 $100,000 账户上 100% 可迁移。从大账户开始就丢失了这一节训练课。
- 金融产品和软件产品的核心相似性:都是用规则消化不确定性。软件产品有 PRD、有 spec、有 SLA。交易策略也有——thesis、退出条件、风险预算。区别仅仅是后者还要加一条「市场不可控」。
- 不要为「一次结果」改规则。今天如果 F 暴涨 5% 我赚 $50,不要因为「赚了」而觉得规则可以更激进。今天如果 F 暴跌 5% 我亏 $50,不要因为「亏了」而觉得规则太保守。规则的好坏要看 N=100 次以上的统计,不看 N=1。
十一、明日预告
Day 63: 第一笔实盘 vs Paper 回测的逐字段对比 + 滑点建模
- 取今天这一笔的真实成交数据
- 对比过去 30 天 paper 跑过的同标的(F)CSP 数据
- 量化:滑点、成交延迟、bid-ask 中位数差异
- 建立「实盘折扣系数」:未来回测 Sharpe × 0.75 作为 live 期望值
- 写一个最简单的滑点模型:
live_premium = mid - 0.5 × (ask - bid) × penalty(volume) - 用 Day 62 一笔交易 calibrate(虽然 N=1,但可以做单点 sanity check)
实际执行记录
时间戳 + 实际状态。
- [09:30] 早盘开市,TWS 实盘登录
- [09:35] 跑 sanity check 脚本 — NetLiq $1,003.21,cash $1,003.21 ✓
- [09:40] 拉 F 报价 — spot $10.11,9P bid $0.16 / ask $0.20 mid $0.18 ✓
- [09:42] 跑 tr_day62 脚本,订单 transmit=False 暂存
- [09:43] TWS Order 面板核对 6 项(方向/数量/类型/strike/到期/限价)
- [09:44] 点击 Transmit
- [10:04] 成交 — fill price $0.18,premium +$18,commission -$1.07
- [10:05] 挂 GTC buy-to-close @ $0.09 — accepted
- [10:10] 关闭 TWS,开始写笔记
- 卡点 / 学到的:
- 心跳明显加快但能控制
- 等成交的 20 分钟比预期长但没违规追价
- 双轨确认(脚本 + TWS GUI)非常有用——脚本里 strike 我打错过一次(写成 9.5),TWS 显示出来才发现
总字数:约 6,400 字 今日完成度:理论 ✓ / 实操 ✓(第一笔实盘下单 + GTC 平仓单挂出) / 笔记 ✓ / 心理记录 ✓