资产定价与交易策略优化是在不确定市场中寻找“合理价格—最优交易”闭环的核心环节:前者借助随机折现因子、无套利均衡或统计学习,把未来现金流、风险偏好与宏观变量映射到今日公允价值;后者在考虑交易成本、市场冲击、资金约束与风险预算的前提下,通过动态规划、强化学习或在线优化,实时调整头寸、下单路径与对冲比例,实现预期收益最大化或效用最大化;二者联动形成“定价—交易—反馈—再定价”的自适应系统,使投资组合在控制跟踪误差、VaR 与流动性风险的同时,持续捕捉 Alpha、降低执行成本并提升资本效率。
3.1 资产定价模型概述
资产定价模型是一套把未来不确定现金流、投资者风险偏好与市场摩擦转化为“今日公允价格”的数学框架,核心任务是在无套利条件下给出折现因子或期望收益率;从单期CAPM的β定价、多因子APT的横截面解释,到跨期消费CAPM、随机折现因子与无套利HJM的连续时间推广,再到基于机器学习的高维非线性定价,模型不断演进以捕捉风险溢价、期限结构、波动率微笑与尾部事件,为估值、对冲、资产配置和监管资本计量提供一致的理论锚。
3.1.1 常见的资产定价模型
资产定价模型是金融经济学中用于解释资产预期收益与风险之间关系的核心理论,其目的是确定资产的合理价格(或预期收益率)。在接下来的内容中,将介绍常见的资产定价模型,按理论发展和应用场景分类阐述。
1. 资本资产定价模型(CAPM)
资本资产定价模型的核心思想是资产的预期收益仅由其系统性风险(无法通过分散投资消除的风险)决定,而非总风险。
(1)核心假设
- 市场是完全有效的,信息对称且无交易成本;
- 投资者是理性的,追求均值-方差最优(即给定风险下最大化收益,或给定收益下最小化风险);
- 投资者对资产收益的预期一致;
- 存在无风险资产,投资者可自由借贷且利率相同。
(2)公式
资产i 的预期收益率为:
其中:
- ERi
:资产i
的预期收益率; - Rf
:无风险收益率(如国债利率); - βi
:资产 i 的系统性风险系数(衡量资产 i 与市场组合的联动性,βi=Cov(Ri,Rm)/Var(Rm)); - ERm
:市场组合的预期收益率; - ERm-Rf
:市场风险溢价(承担市场系统性风险的补偿)。
- 应用与局限性
- 应用:广泛用于资本预算(如项目折现率估算)、资产估值、基金绩效评估(如夏普比率计算)等。
- 局限性:假设过于严格(现实中市场非完全有效、投资者非理性);实证检验中发现β无法完全解释收益(存在 “规模效应”“账面市值比效应” 等异象)。
2. 套利定价理论(APT)
套利定价理论的核心思想是资产的预期收益由多个宏观或微观风险因素共同决定,而非单一市场风险;通过套利行为消除不合理定价,最终使资产收益与风险因素匹配。
(1)核心假设
- 市场不存在套利机会(即 “零投入、零风险、正收益” 的组合不可能存在);
- 资产收益可由多个线性无关的风险因素解释;
- 投资者偏好更高收益(无需假设 “均值-方差理性”,比CAPM更灵活)。
(2)公式
资产i的预期收益率为:
ERi=Rf+βi1F1+βi2F2+…+βikFk
其中:
F1
,F2
,…, Fk
:影响资产收益的k
个风险因素(如经济增长率、通胀率、利率等);
βi1
,…, βik
:资产i对各因素的敏感度(类似CAPM中的β
,但维度更多)。
(3)应用与局限性
- 应用:投资组合构建(通过多因素分散风险)、风险对冲(针对特定因素调整暴露);
- 局限性:未明确指定具体风险因素(需通过实证确定,不同市场因素可能不同);对 “无套利” 假设的依赖较强(现实中套利成本可能存在)。
3. Fama-French因子模型
Fama-French因子模型的核心思想是基于 CAPM 的缺陷,通过实证发现市场中存在稳定的收益异象(如小公司收益高于大公司),因此在市场风险外加入额外因子解释收益。
(1)三因素模型
公式:
ERi=Rf+βiERm-Rf+si×SMB+hi×HML
其中:
- ERm-Rf
:市场风险溢价(同 CAPM); - SMB(Small Minus Big):规模因子(小市值公司收益 - 大市值公司收益);
- HML(High Minus Low):账面市值比因子(高账面市值比公司收益 - 低账面市值比公司收益);
- si
,hi
:资产 i 对规模和账面市值比因子的敏感度。
(2)五因素模型
在三因素基础上新增两个因子:
ERi=Rf+βiERm-Rf+si×SMB+hi×HML+ri×RMW+ci×CMA
其中:
- RMW(Robust Minus Weak):盈利性因子(高盈利公司收益-低盈利公司收益);
- CMA(Conservative Minus Aggressive):投资风格因子(低投资增长率公司收益-高投资增长率公司收益)。
(3)应用与局限性
- 应用:解释股票收益差异、构建因子投资策略(如 “小市值 + 高账面市值比” 组合);
- 局限性:因子的经济逻辑不明确(如 “为何高账面市值比公司收益更高”);因子有效性可能随时间变化(如近年HML因子表现弱化)。
4. 跨期资本资产定价模型(ICAPM)
跨期资本资产定价模型的核心思想是放松CAPM的 “单期决策” 假设,考虑投资者在多期动态环境中的消费与投资决策,资产收益不仅取决于市场风险,还取决于影响未来投资机会的 “状态变量”(如通胀、利率、经济周期等)。
(1)核心假设
- 投资者关注跨期消费平滑(即当前消费与未来消费的平衡);
- 未来投资机会可能变化(如利率上升会影响未来收益);
- 风险包括 “市场风险” 和 “状态变量风险”(即影响未来机会的风险)。
(2)公式
ERi=Rf+βi,mERm-Rf+k=1nβi,kFk
其中:
:资产i对市场风险的敏感度;
:资产i对第k个状态变量的敏感度;
:第k个状态变量的风险溢价。
(3)应用与局限性
- 应用:动态资产配置(如根据利率周期调整债券仓位)、长期投资组合管理;
- 局限性:状态变量难以量化(如 “经济周期风险” 无法直接观测);模型复杂度高,实证检验难度大。
5. 行为资产定价模型(BAPM)
行为资产定价模型的核心思想是结合行为金融学,认为投资者并非完全理性(存在过度自信、羊群效应等偏差),资产价格由 “信息交易者”(理性)和 “噪声交易者”(非理性)共同决定,风险溢价不仅包括系统性风险,还包括 “行为偏差风险”。
(1)核心假设
- 投资者分为两类:信息交易者(理性,遵循CAPM)和噪声交易者(非理性,受情绪影响);
- 市场存在 “噪声”(非理性交易导致的价格偏离);
- 风险包括 “传统系统性风险” 和 “噪声交易者风险”(即价格被非理性行为扭曲的风险)。
(2)核心结论
- 资产预期收益=无风险收益+传统风险溢价+噪声交易者风险溢价;
- 市场可能长期存在定价偏差(如 “高估成长股、低估价值股”),套利难以完全消除(存在 “套利限制”,如卖空成本)。
(3)应用与局限性
- 应用:解释市场异象(如 “动量效应”“过度反应”)、行为投资策略(如反向投资);
- 局限性:行为偏差难以量化(如 “过度自信程度” 无法直接测量);理论框架不如传统模型严谨。
6. 总结与对比
上述常见资产定价模型的对比如表3-1所示。
表3-1 常见资产定价模型的对比
模型 |
核心风险因素 |
假设特点 |
典型应用场景 |
CAPM |
单一市场风险 |
完全理性、有效市场 |
资本预算、绩效评估 |
APT |
多因素风险 |
无套利、灵活假设 |
多因子组合构建 |
Fama-French |
市场+规模+价值等 |
实证驱动、基于市场异象 |
收益归因、因子投资 |
ICAPM |
市场+状态变量风险 |
跨期决策、动态环境 |
长期资产配置 |
BAPM |
传统风险+行为风险 |
投资者非理性、存在噪声 |
解释异象、行为策略 |
总之,这些模型从不同角度解释了资产定价逻辑:传统模型(如 CAPM、APT)基于理性假设,行为模型(BAPM)引入非理性因素,而 Fama-French 等则是实证驱动的折中方案。实际应用中需结合市场特性选择合适模型(如 CAPM 适合简单估值,Fama-French 适合复杂组合分析)。
请看下面的实例,基于文件Crypto Data Since 2015.csv实现了一个Fama-French三因素模型,该模型在 CAPM 基础上加入了 "规模因子" 和 "价值因子",更贴合加密货币市场的特性。程序使用比特币作为目标资产,结合其他加密货币构建因子,实现完整的资产定价分析与可视化。
实例3-1:实现一个Fama-French三因素模型并预测加密货币的价格(源码路径:codes\3\Zichan.py)
文件Crypto Data Since 2015.csv是一份包含 2015 年以来加密货币与黄金价格的时间序列数据集。其核心内容包括:每日日期(Date)及8类资产的价格数据,其中7种为主流加密货 ——比特币(Bitcoin (USD))、以太坊(Ethereum (USD))、卡尔达诺(Cardano (ADA))、币安币(Binance Coin (BNB))、瑞波币(Ripple (XRP))、狗狗币(Dogecoin (DOGE))、索拉纳(Solana (SOL)),均以美元计价;另有 1 种传统避险资产黄金(Gold (USD per oz)),单位为美元/盎司。
实例文件Zichan.py的具体实现代码如下所示。
# 1. 加载并预处理数据
def load_crypto_data(file_path='Crypto Data Since 2015.csv'):
"""加载加密货币数据并计算收益率和因子"""
# 读取数据
df = pd.read_csv(file_path)
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date').sort_index()
# 提取加密货币列(排除黄金)
crypto_cols = [col for col in df.columns if 'USD' not in col or 'Gold' not in col]
crypto_data = df[crypto_cols].copy()
# 计算日收益率(简单收益率)
returns = crypto_data.pct_change().dropna() # 收益率 = (今日价格 - 昨日价格)/昨日价格
# 以黄金作为无风险资产代理
rf = df['Gold (USD per oz)'].pct_change().dropna() # 黄金收益率作为无风险利率近似
returns['RiskFree'] = rf.reindex(returns.index).fillna(method='ffill') # 对齐日期
# 计算超额收益率(资产收益率 - 无风险收益率)
excess_returns = returns.copy()
for col in crypto_cols:
excess_returns[col] = returns[col] - returns['RiskFree']
return returns, excess_returns, crypto_cols
# 2. 构建Fama-French三因素
def build_factors(excess_returns, crypto_cols):
"""
构建三因素:
- 市场因子(MKT):所有加密货币的平均超额收益
- 规模因子(SMB):小市值加密货币 - 大市值加密货币(用价格近似市值)
- 价值因子(HML):高波动加密货币 - 低波动加密货币
"""
# 排除无风险利率列
asset_returns = excess_returns.drop(columns=['RiskFree'])
# 1. 市场因子(MKT):平均超额收益
factors = pd.DataFrame()
factors['MKT'] = asset_returns.mean(axis=1) # 所有加密货币的平均超额收益
# 2. 规模因子(SMB):用价格近似市值,每月重新排序
# 按月份分组计算
monthly_groups = asset_returns.groupby(pd.Grouper(freq='M'))
smb = []
for month, group in monthly_groups:
# 计算月初价格(近似市值)
start_date = group.index[0] if not group.empty else None
if start_date is None:
continue
# 取月初价格作为市值代理(从原始收益率中获取价格水平)
prices = crypto_data.loc[start_date] # crypto_data是外部变量,存储价格水平
price_ranks = prices.rank() # 按价格排序(低价格=小市值)
# 划分小市值(前30%)和大市值(后30%)
small_cap = price_ranks <= price_ranks.quantile(0.3)
large_cap = price_ranks >= price_ranks.quantile(0.7)
# 计算当月SMB:小市值平均收益 - 大市值平均收益
smb_month = group[small_cap.index[small_cap]].mean(axis=1) - group[large_cap.index[large_cap]].mean(axis=1)
smb.extend(smb_month)
factors['SMB'] = pd.Series(smb, index=asset_returns.index).fillna(0)
# 3. 价值因子(HML):高波动 - 低波动
# 计算过去30天波动率
volatility = asset_returns.rolling(window=30).std()
# 每月分组计算HML
hml = []
for month, group in monthly_groups:
if group.empty:
continue
# 取月初波动率排序
vol = volatility.loc[group.index[0]]
vol_ranks = vol.rank()
# 高波动(前30%)和低波动(后30%)
high_vol = vol_ranks >= vol_ranks.quantile(0.7)
low_vol = vol_ranks <= vol_ranks.quantile(0.3)
# 计算当月HML:高波动平均收益 - 低波动平均收益
hml_month = group[high_vol.index[high_vol]].mean(axis=1) - group[low_vol.index[low_vol]].mean(axis=1)
hml.extend(hml_month)
factors['HML'] = pd.Series(hml, index=asset_returns.index).fillna(0)
return factors
# 3. 拟合Fama-French三因素模型
def fit_fama_french(excess_returns, factors, target_asset='Bitcoin (USD)'):
"""用三因素模型拟合目标资产收益率"""
# 合并因子和目标资产收益率
model_data = pd.DataFrame({
'Target': excess_returns[target_asset],
'MKT': factors['MKT'],
'SMB': factors['SMB'],
'HML': factors['HML']
}).dropna()
# 多元线性回归:Target = α + β1*MKT + β2*SMB + β3*HML
X = model_data[['MKT', 'SMB', 'HML']]
y = model_data['Target']
model = LinearRegression()
model.fit(X, y)
# 提取系数
alpha = model.intercept_ # 超额收益(模型未解释部分)
beta_mkt = model.coef_[0] # 市场因子敏感度
beta_smb = model.coef_[1] # 规模因子敏感度
beta_hml = model.coef_[2] # 价值因子敏感度
print(f"Fama-French三因素模型(目标资产:{target_asset}):")
print(f"α(超额收益): {alpha:.4f}")
print(f"β_MKT(市场因子敏感度): {beta_mkt:.4f}")
print(f"β_SMB(规模因子敏感度): {beta_smb:.4f}")
print(f"β_HML(价值因子敏感度): {beta_hml:.4f}")
# 计算R²(模型解释力)
r2 = model.score(X, y)
print(f"模型拟合优度(R²): {r2:.4f}")
return model, model_data, alpha, [beta_mkt, beta_smb, beta_hml]
# 4. 可视化结果
def visualize_results(model_data, model, betas, target_asset='Bitcoin (USD)'):
"""可视化三因素模型结果"""
# 1. 因子系数可视化(β值)
factors = ['市场因子(MKT)', '规模因子(SMB)', '价值因子(HML)']
plt.figure(figsize=(10, 6))
sns.barplot(x=factors, y=betas, palette='coolwarm')
plt.axhline(y=0, color='gray', linestyle='--')
plt.title(f'{target_asset}的三因素敏感度(β系数)')
plt.ylabel('β系数值')
plt.grid(alpha=0.3, axis='y')
plt.show()
# 2. 实际收益与预测收益对比
y_pred = model.predict(model_data[['MKT', 'SMB', 'HML']])
plt.figure(figsize=(12, 6))
plt.plot(model_data.index, model_data['Target'].cumsum(), label='实际超额收益', linewidth=1.5)
plt.plot(model_data.index, y_pred.cumsum(), label='模型预测超额收益', linewidth=1.5, linestyle='--')
plt.title(f'{target_asset}的实际与预测超额收益累计走势')
plt.xlabel('日期')
plt.ylabel('累计超额收益率')
plt.legend()
plt.grid(alpha=0.3)
plt.show()
# 3. 因子相关性热图
plt.figure(figsize=(8, 6))
corr = model_data.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('三因素与目标资产的相关性')
plt.show()
# 主函数
def main():
global crypto_data # 全局变量存储价格数据(用于计算因子)
# 加载数据
returns, excess_returns, crypto_cols = load_crypto_data()
crypto_data = returns[crypto_cols] # 存储价格收益率对应的价格水平数据
print(f"数据加载完成,时间范围:{returns.index[0].strftime('%Y-%m-%d')} 至 {returns.index[-1].strftime('%Y-%m-%d')}")
print(f"包含的加密货币:{', '.join(crypto_cols)}")
# 构建三因素
factors = build_factors(excess_returns, crypto_cols)
# 拟合模型(以比特币为目标资产)
target_asset = 'Bitcoin (USD)'
model, model_data, alpha, betas = fit_fama_french(excess_returns, factors, target_asset)
# 可视化结果
visualize_results(model_data, model, betas, target_asset)
# 结果解读
print("\n结果解读:")
print(f"- 若β_MKT > 1:{target_asset}对市场整体波动敏感,系统性风险较高")
print(f"- 若β_SMB > 0:{target_asset}表现与小市值加密货币相似")
print(f"- 若β_HML > 0:{target_asset}在高波动市场中表现更好")
print(f"- α > 0:{target_asset}存在模型未解释的超额收益,可能被低估")
if __name__ == "__main__":
main()
上述代码的实现流程如下所示。
(1)数据加载与预处理:读取加密货币与黄金价格数据,转换日期格式并按时间排序;计算各加密货币的日收益率(价格变动百分比),以黄金收益率近似无风险利率,进而得到各类资产的超额收益率(资产收益率减去无风险利率)。
(2)三因素构建
- 市场因子(MKT):所有加密货币的平均超额收益率,反映整体市场的系统性风险;
- 规模因子(SMB):每月按价格(近似市值)将加密货币分为“小市值”(前30%)和“大市值”(后30%),计算两者的收益差,衡量规模对收益的影响;
- 价值因子(HML):每月按过去30天波动率将加密货币分为“高波动”(前30%)和“低波动”(后30%),计算两者的收益差,衡量波动特性对收益的影响。
(3)模型拟合:以比特币为目标资产,通过多元线性回归拟合三因素模型,估计比特币对市场因子(β_MKT)、规模因子(β_SMB)、价值因子(β_HML)的敏感度,以及未被因子解释的超额收益(α),并计算模型拟合优度(R²)。
(4)结果可视化:通过条形图展示比特币对三因素的敏感度(β系数),如图3-1所示。通过折线图对比实际超额收益与模型预测收益的累计走势,如图3-2所示。用热图展示因子与资产收益的相关性,直观呈现模型解释力与因子重要性,如图3-3所示
图3-1 三因素的敏感度(β系数)的可视化图
图3-2 实际超额收益与模型预测收益的累计走势图
图3-3 因子与资产收益的相关性热图
3.1.2 金融市场的非理性行为
金融市场中的非理性行为是指投资者在决策过程中偏离理性经济人假设的行为模式。这些行为往往受到心理偏差、信息处理能力限制、社会互动等因素的影响,导致市场价格偏离基本面价值。以下是金融市场的几种常见非理性行为及其对市场的影响。
1. 过度自信(Overconfidence)
- 定义:投资者高估自己的信息处理能力和判断准确性,低估风险。
- 表现:频繁交易、过度投资于高风险资产、忽视市场风险。
- 影响:增加市场波动性,可能导致泡沫形成和破裂。例如,科技股泡沫期间,许多投资者过度自信,过度投资于高估值的科技股,最终导致市场崩溃。
2. 羊群效应(Herd Behavior)
- 定义:投资者在决策时过度依赖他人的行为,而不是基于自己的分析。
- 表现:跟风投资、集体恐慌或贪婪。
- 影响:加剧市场波动,导致资产价格过度偏离基本面。例如,在市场恐慌时,投资者集体抛售资产,导致价格暴跌;在市场乐观时,投资者集体买入,推动价格过度上涨。
3. 处置效应(Disposition Effect)
- 定义:投资者倾向于过早卖出盈利资产,而持有亏损资产。
- 表现:投资者在资产盈利时急于获利了结,而在资产亏损时不愿止损。
- 影响:影响市场流动性,导致资产价格调整延迟。例如,投资者在股市上涨时大量卖出,导致市场供应增加,价格下跌;在股市下跌时持有不动,导致市场缺乏流动性。
4. 有限注意力(Limited Attention)
- 定义:投资者在处理信息时受到注意力和认知能力的限制。
- 表现:对新信息反应迟钝,对旧信息过度反应。
- 影响:导致市场信息不对称,影响价格发现效率。例如,投资者可能对重大利好消息反应迟钝,而对小道消息过度反应,导致市场价格波动。
5. 情绪影响(Emotional Influence)
- 定义:投资者的情绪状态(如恐惧、贪婪、乐观、悲观)影响其决策。
- 表现:在市场下跌时恐慌性抛售,在市场上涨时盲目乐观。
- 影响:加剧市场波动,导致价格偏离基本面。例如,市场恐慌时,投资者情绪恐慌,大量抛售资产,导致价格暴跌;市场乐观时,投资者情绪高涨,大量买入,推动价格过度上涨。
6. 代表性偏差(Representativeness Bias)
- 定义:投资者根据有限的样本或过去的经验来评估未来事件的概率。
- 表现:对小概率事件过度反应,对大概率事件反应不足。
- 影响:导致市场对某些事件的过度反应或忽视。例如,投资者可能对某个行业的个别负面事件过度反应,导致整个行业股票下跌。
7. 锚定效应(Anchoring Effect)
- 定义:投资者在决策时过度依赖初始信息(锚点)。
- 表现:对初始价格或估值过度依赖,难以调整。
- 影响:导致市场价格调整缓慢,难以反映基本面变化。例如,投资者可能对某只股票的初始买入价过度依赖,即使基本面发生变化,仍不愿调整预期价格。
8. 过度交易(Overtrading)
- 定义:投资者频繁买卖资产,交易频率远高于理性经济人假设。
- 表现:频繁交易、高换手率。
- 影响:增加交易成本,降低投资回报。例如,频繁交易的投资者可能因高额交易费用而降低实际收益。
总而言之,金融市场的非理性行为是行为金融学的重要研究内容。这些行为不仅影响个体投资者的决策,还可能导致市场价格偏离基本面,加剧市场波动。理解这些非理性行为有助于投资者更好地管理风险,制定更合理的投资策略。同时,监管机构也可以通过教育和政策引导,减少非理性行为对市场的负面影响,促进市场的稳定和健康发展。