格雷厄姆的老办法,怎么用在期货和股票上
本杰明·格雷厄姆写的证券分析,很多人觉得是股票投资的老黄历。他讲的核心就一件事:别被市场情绪牵着走,用一套冷静的计算方法,找到价格低于真实价值的资产,然后耐心等它涨回来。这套逻辑放在今天的股票、期货甚至量化交易里,一点都不过时。
股票和期货,表面看差别很大。股票是买公司的一小块所有权,期货是赌未来某个时间点的价格。但底层赚钱逻辑相通:你付出一个价格,得到某个东西,将来这东西值更多钱,你就赚了。格雷厄姆把这叫“安全边际”。翻译成大白话:你花五毛钱买一块钱的东西,哪怕看走眼了,亏也亏得少。

期货里的安全边际长什么样
期货带杠杆,很多人觉得跟安全边际不沾边。其实安全边际在期货里更关键。假设你判断螺纹钢未来三个月需求会回升,当前盘面价格已经跌到很多钢厂现金成本以下。这个“成本线”就是你的参考锚。价格远低于成本,意味着继续下跌空间有限,向上修复概率大。你在低于成本的位置轻仓做多,设置好止损,这就是期货版的安全边际。
格雷厄姆强调“净流动资产”概念。放到期货里,可以看一个品种的库存、仓单、基差、交割成本。当期货价格大幅低于现货,且仓单持续注销,说明空头交货困难。这种结构性错配,就是程序化策略可以捕捉的信号。
量化交易怎么翻译格雷厄姆的思想
量化交易是用代码把投资逻辑写成规则,让计算机自动执行。格雷厄姆那套“低估值买入、高估值卖出”完全可以用程序实现。
拿股票来说,你可以写一个简单策略:
筛选市盈率低于行业平均30%的股票
同时要求资产负债率低于50%
最近三年净利润为正
每月调仓一次,持有20只等权
这个策略的本质就是格雷厄姆的“定量筛选”。不需要预测未来,只需要在便宜的时候买入一篮子股票。
期货量化可以更直接。用基差因子、库存因子、动量因子组合。基差就是现货减期货。基差为正且持续扩大,说明现货紧张,期货被低估。程序自动在基差超过历史80%分位时做多期货,低于20%分位时做空。
下面是一个简化的Python示例,用pandas计算基差信号:
import pandas as pd
import numpy as np
# 假设df有日期、现货价、期货价
df['basis'] = df['spot'] - df['futures']
df['basis_pct'] = df['basis'] / df['futures']
# 滚动252个交易日计算分位数
df['basis_rank'] = df['basis_pct'].rolling(252).apply(
lambda x: pd.Series(x).rank(pct=True).iloc[-1]
)
# 生成信号:基差百分位大于0.8做多,小于0.2做空
df['signal'] = 0
df.loc[df['basis_rank'] > 0.8, 'signal'] = 1
df.loc[df['basis_rank'] < 0.2, 'signal'] = -1
# 计算持仓盈亏
df['ret'] = df['futures'].pct_change()
df['strategy_ret'] = df['signal'].shift(1) * df['ret']
cumulative = (1 + df['strategy_ret']).cumprod()
print(cumulative.tail())
这段代码不讲复杂模型,就是把格雷厄姆“买便宜货”的思路变成可执行的数字规则。
格雷厄姆最值钱的两个字:纪律
证券分析里反复出现一个词:纪律。市场疯狂时,你要按计算器而不是按情绪。量化交易最大的敌人也是情绪。程序不会因为今天亏了钱就乱改参数,不会因为看到新闻就追涨杀跌。
股票投资里,格雷厄姆建议分散到30只以上股票。期货量化同样要分散,不要把所有资金押在一个品种上。螺纹钢、豆粕、黄金、国债,它们的驱动逻辑不同,组合起来波动更平滑。
普通人怎么上手
不需要金融博士学历。从股票开始,用免费的数据网站筛选低市盈率、低市净率、连续盈利的公司,等权买入10到20只,每季度调整一次。这就是最朴素的格雷厄姆策略。
期货和量化需要多一步:学会看基差和库存数据。交易所网站每天公布仓单日报。把仓单变化和期货价格放在一起看,连续几天仓单大减而价格没涨,就是潜在机会。用Excel拉数据,写简单公式就能做初筛。
编程不是必须的,但学会Python会让效率翻倍。上面那段代码只要替换数据源,就能跑出历史信号。
格雷厄姆说过,投资最大的风险不是价格波动,而是你不知道自己在做什么。股票也好,期货也好,量化也好,先搞懂安全边际在哪,再动手。市场永远在,钱可以慢慢赚。