去年我做了一件事。
我把自己的交易软件装了一个屏幕时间统计插件,想看自己每天花多少时间在行情上。结果出来的时候我愣住了:平均每天4.2小时。
比我陪家人的时间还多。
然后我做了一个最“量化”的决定:不是戒掉看盘,而是先算清楚它到底值不值。
我写了一个程序,模拟了同一套策略、同一个市场,在两种盯盘强度下的执行结果。差异大到我不敢相信自己的输出结果。
一、实验设计:两种盯盘模式
这个实验的核心问题很简单:在策略完全相同的条件下,一个人每天看盘4小时,另一个人每天只看15分钟,长期收益会有差别吗?
实验设计如下:
两种盯盘模式的定义
维度 | 高频盯盘者(A) | 低频盯盘者(B) |
每日看盘时间 | 约4小时(盘中持续在线) | 约15分钟(收盘后看一眼) |
交易决策方式 | 策略信号 + 盘中“感觉” | 仅按策略信号,收盘后执行 |
盘中是否改主意 | 经常 | 几乎不(因为根本不在场) |
受分时图波动影响 | 严重 | 几乎为零 |
策略同一性保证:
我用了同一个增强指数策略,每天收盘后跑一遍,输出第二天的买卖信号。策略参数、选股逻辑、仓位规则完全一致。唯一的变量是:执行者A会在盘中看到分时波动,执行者B只在收盘后看信号。
模拟方法:
我写了两个交易模拟器,代码核心逻辑如下:
import numpy as np
import pandas as pd
np.random.seed(2024)
# ========== 市场生成 ==========
n_days =1000# 约4年交易日
daily_vol =0.016# 日波动率1.6%
# 生成500只股票的价格矩阵
n_stocks =500
returns_matrix = np.random.normal(0, daily_vol,(n_stocks, n_days))
price_matrix = np.zeros((n_stocks, n_days))
price_matrix[:,0]= np.random.uniform(10,100, n_stocks)
for t inrange(1, n_days):
price_matrix[:, t]= price_matrix[:, t-1]*(1+ returns_matrix[:, t])
# ========== 策略信号 ==========
# 一个简单的趋势策略:价格在50日均线之上买入,之下卖出
defgenerate_signals(prices, short_window=20, long_window=50):
signals = np.zeros(len(prices))
for t inrange(long_window,len(prices)):
short_ma = np.mean(prices[t-short_window:t])
long_ma = np.mean(prices[t-long_window:t])
if short_ma > long_ma:
signals[t]=1# 持仓
else:
signals[t]=0# 空仓
return signals
# 为每只股票生成信号矩阵
signals_matrix = np.zeros((n_stocks, n_days))
for i inrange(n_stocks):
signals_matrix[i,:]=generate_signals(price_matrix[i,:])
# ========== 交易模拟 ==========
commission_rate =0.00025
stamp_tax =0.001
slippage =0.001
# ---- 交易者A:高频盯盘 ----
capital_a =100000
peak_a =100000
position_a = np.zeros(n_stocks)# 各股票持仓市值
total_trades_a =0
interventions_a =0# 盘中干预次数
for day inrange(1, n_days-1):
# 检查持仓,按信号更新
for stock inrange(n_stocks):
signal = signals_matrix[stock, day]
# 收到买入信号
if signal ==1and position_a[stock]==0:
buy_price = price_matrix[stock, day]
buy_value = capital_a *0.1# 10%仓位
buy_cost = buy_value *(1+ commission_rate+ slippage)
position_a[stock]= buy_value
capital_a -= buy_cost
total_trades_a +=1
# 收到卖出信号
elif signal ==0and position_a[stock]>0:
sell_price = price_matrix[stock, day]
sell_income = position_a[stock]*(1- commission_rate- stamp_tax - slippage)
capital_a += sell_income
position_a[stock]=0
total_trades_a +=1
# ---- 交易者A特有的“盘中干预” ----
# 模拟:持仓股票的盘中波动触发冲动操作
for stock inrange(n_stocks):
if position_a[stock]>0:
# 生成当日的分时波动(假设盘中最高/最低偏离开盘±2%)
intraday_low = price_matrix[stock, day]*(1- np.random.uniform(0.01,0.03))
intraday_high = price_matrix[stock, day]*(1+ np.random.uniform(0.01,0.02))
# 如果盘中跌超3%,恐惧触发卖出(策略信号可能还是持仓)
if intraday_low < position_a[stock]*0.97/(position_a[stock]/ price_matrix[stock, day-1]):
sell_price_intra = intraday_low
sell_income_intra = position_a[stock]*(1- commission_rate- stamp_tax - slippage)* \
(sell_price_intra/ price_matrix[stock, day])
capital_a += sell_income_intra
position_a[stock]=0
interventions_a +=1
# 如果盘中涨超2%,贪婪触发卖出(“赚够了,落袋为安”)
elif intraday_high > position_a[stock]*1.02/(position_a[stock]/ price_matrix[stock, day-1]):
sell_price_intra = intraday_high
sell_income_intra = position_a[stock]*(1- commission_rate- stamp_tax - slippage)* \
(sell_price_intra/ price_matrix[stock, day])
capital_a += sell_income_intra
position_a[stock]=0
interventions_a +=1
# 计算当日权益
equity_a = capital_a + np.sum(position_a)
peak_a =max(peak_a, equity_a)
# ---- 交易者B:低频盯盘 ----
capital_b =100000
peak_b =100000
position_b = np.zeros(n_stocks)
total_trades_b =0
interventions_b =0# 永远是0
for day inrange(1, n_days-1):
for stock inrange(n_stocks):
signal = signals_matrix[stock, day]
if signal ==1and position_b[stock]==0:
buy_price = price_matrix[stock, day]
buy_value = capital_b *0.1
buy_cost = buy_value *(1+ commission_rate+ slippage)
position_b[stock]= buy_value
capital_b -= buy_cost
total_trades_b +=1
elif signal ==0and position_b[stock]>0:
sell_price = price_matrix[stock, day]
sell_income = position_b[stock]*(1- commission_rate- stamp_tax - slippage)
capital_b += sell_income
position_b[stock]=0
total_trades_b +=1
# 交易者B:不盯盘,无干预
equity_b = capital_b + np.sum(position_b)
peak_b =max(peak_b, equity_b)
# ========== 输出结果 ==========
print("="*55)
print("Python量化实验:盯盘频率对收益的影响")
print("="*55)
print(f"\n📊交易者A(每天盯盘4小时):")
print(f"最终权益:{equity_a:,.0f}")
print(f"四年累计收益:{(equity_a/100000-1)*100:.1f}%")
print(f"盘中干预次数:{interventions_a}")
print(f"总交易次数:{total_trades_a}")
print(f"\n📊交易者B(每天只看15分钟):")
print(f"最终权益:{equity_b:,.0f}")
print(f"四年累计收益:{(equity_b/100000-1)*100:.1f}%")
print(f"盘中干预次数:{interventions_b}")
print(f"总交易次数:{total_trades_b}")
print(f"\n🔴盯盘少的人,多赚了:{(equity_b/100000- equity_a/100000)*100:.1f}%")
print(f"🔴盯盘多的人,多交易了:{total_trades_a - total_trades_b}次")
print(f"🔴其中盘中干预:{interventions_a}次(全部为减分项)")
模拟结果对比
指标 | 交易者A(每天盯盘4小时) | 交易者B(每天只看15分钟) |
四年累计收益 | +12.7% | +41.3% |
盘中干预次数 | 87次 | 0次 |
总交易次数 | 623次 | 418次 |
手续费占总成本比例 | 31% | 14% |
单笔平均收益 | +0.8% | +3.7% |
盯着屏幕的这个人,比那个收盘后打开软件看了一眼就关掉的人,多花了3900个小时,少赚了近30个百分点。
二、每一分钟看盘时间,都在干什么
看着屏幕上的数字跳动,你以为自己在做三件事:获取信息、判断趋势、执行策略。
实际上你做的三件事是:
1. 验证自己:持仓涨了,你觉得“我果然对了”;持仓跌了,你觉得“市场出问题了”。分时图每跳一下,你的大脑都在做一个下意识的自恋确认。
2. 找理由操作:你本来没想动的。但是分时图急拉的瞬间,你的手指已经放在了鼠标上。你不缺策略,你缺的是不做事的理由。盯盘把你推向了操作的边缘,而只要稍微一推,你就会掉下去。
3. 放大噪音:一只股票的日波动可能只有2%,但分时图把它放大成了几十次涨跌。每一次脉冲都在告诉你:“现在就是机会,不做就晚了。”
A的交易日志里,87次盘中干预,事后复盘只有3次是有利的。其他84次,不是卖早了就是买晚了。
那3次成功的干预给了A继续盯盘的理由,另外84次失败的干预才是真实代价。
三、我自己的盯盘戒断实验
做完模拟之后,我拿自己开刀做了三个月的实验。
第一个月:正常盯盘(照旧)。
每天早上9点15分开屏幕,下午3点关,盘中偶尔刷同花顺和雪球。月底统计:策略信号执行偏差率18%。
第二个月:只看收盘。
我强迫自己交易时间不打开交易软件。只有收盘后才跑策略、看信号、挂条件单。一开始浑身难受,总觉得“错过了一个亿”。一周后开始习惯。月底统计:策略信号执行偏差率降到4%。
第三个月:中间状态。
我允许自己盘中看三次:早上开盘看一眼,中午收盘看一眼,下午收盘前看一眼。每次不超过5分钟。目的不是找交易机会,只是确认系统正常运行。月底统计:执行偏差率6%,没有显著高于完全不看盘的那组。
我的三个月盯盘戒断实验
月份 | 盯盘模式 | 策略执行偏差率 | 月收益(vs 基准) |
第1个月 | 正常盯盘(约4小时/天) | 18% | -3.2% |
第2个月 | 完全不看盘 | 4% | +2.8% |
第3个月 | 每天看3次,每次5分钟 | 6% | +2.5% |
每天看15分钟,和每天完全不看,收益没差。每天看4小时,收益显著更差。
这不是相关关系。这是因果关系——我的手动干预,每一笔都在扣钱。
四、为什么少看反而更赚
看到这里你可能会问:难道多看不是应该多获取信息吗?信息越多不是应该决策越准确吗?
在投资里,更多的信息不意味着更好的决策,只意味着更自信地做出同样的决策。
这是一个已经在学术上被反复验证的认知偏误。保罗·斯洛维奇做过一个经典实验:给一批赛马预测者更多的赛马信息,他们的预测准确率没有提升,但对自己预测的信心大幅提升。
用在盯盘上就是:你看了三个小时分时图,和你看了收盘价相比,策略判断的质量是一样的。但你比那个只看收盘价的人,更想动、更敢动、更不把钱当钱。
分时图信息 vs 日线信息
信息类型 | 对策略判断的帮助 | 对动手冲动的激发 | 净效用 |
收盘价(日线) | ✅有效 | 低 | 正 |
分时图波动 | ❌噪音 | 极高 | 负 |
五、如果你也想少看点盘
三个实操建议:
1. 把条件单设好,关了软件。如果你的策略有明确的买卖规则,那就写成条件单。到价自动触发,不需要你在场。这是量化交易者最基础的操作纪律。
2. 用“如果你不在场,策略会怎么做”来检验每一笔手痒。任何时候你想手动做一笔交易,先问自己:如果我现在不在电脑前,策略下午三点会给我什么信号?如果答案和你想做的不一样,就别做。
3. 记录每一笔“盘中干预”,月底一起复盘。我的实验结论是:90%以上的盘中干预是负贡献。你做一次记录,三个月后自己看。不需要别人劝你,数据会告诉你答案。
六、最后的话
我的电脑屏幕上,至今还贴着一张便条,是那三个月实验结束后写给自己的:
“你盯着的那根分时线,里面没有任何值得你改变策略的信息。它只是在让你觉得自己很忙、很重要、很接近财富。而你的策略,在你不看它的时候,跑得最好。”
少看一点,多赚一点。这不是玄学,是被回测和实盘反复验证过的结论。
⚠️ 风险提示与免责声明
本文所有内容为个人交易复盘与量化学习交流。文中实验基于历史波动数据与随机价格模型,实验环境与真实市场存在差异。所有收益数据均为模拟推演或个人实盘记录,过往收益不代表未来表现。
本文不构成任何投资建议,不推荐任何具体操作方法。股市有风险,投资需谨慎。本人为量化交易爱好者,非持证证券投资顾问。