Skip to content

dispositionEffect 中文导航

原文: dispositionEffect — R Package for Disposition Effect Analysis
分类: 行为金融/投资心理
大小: R 包 (CRAN)
语言: R


📚 项目简介

dispositionEffect 是一个 R 语言包,用于快速评估投资者交易行为中是否存在处置效应 (Disposition Effect)。它基于投资者的交易记录和市场价格,计算已实现盈亏和未实现盈亏,量化处置效应的强度。

GitHub: https://github.com/marcozanotti/dispositionEffect
CRAN: https://CRAN.R-project.org/package=dispositionEffect
文档: https://marcozanotti.github.io/dispositionEffect/


🔧 核心功能

函数 说明 适用场景
portfolio_compute() 计算已实现/未实现盈亏,更新投资组合 实时处理
gains_losses() 核心计算函数,执行所有必要计算 高级用户/实时处理
disposition_effect() 计算处置效应指标 学术研究
disposition_difference() 计算处置效应差异 对比分析
disposition_compute() 简便计算处置效应 一般分析
disposition_summary() 生成汇总统计 报告生成

📖 处置效应理论基础

什么是处置效应?

定义: 投资者倾向于过早卖出盈利股票,而过久持有亏损股票的行为偏差。

心理学机制:

前景理论 (Prospect Theory) - Kahneman & Tversky (1979)

收益区域:风险厌恶 → 急于锁定盈利
损失区域:风险寻求 → 不愿实现损失 (期待回本)

价值函数:
    盈利 │    凹函数 (风险厌恶)
         │  ╱
─────────┼─────────
         │╲
    损失 │  凸函数 (风险寻求)

处置效应指标

PGO (Proportion of Gains Optimally realized):

PGO = 实现盈利次数 / (实现盈利次数 + 未实现盈利次数)

PLO (Proportion of Losses Optimally realized):

PLO = 实现亏损次数 / (实现亏损次数 + 未实现亏损次数)

处置效应指标 (DE):

DE = PGO - PLO

DE > 0: 存在处置效应 (卖盈持亏)
DE = 0: 理性行为
DE < 0: 反向处置效应


🚀 快速开始

安装

# 从 CRAN 安装
install.packages("dispositionEffect")

# 或从 GitHub 安装开发版
install.packages("devtools")
devtools::install_github("marcozanotti/dispositionEffect")

# 加载包
library(dispositionEffect)

第一个分析:计算处置效应

library(dispositionEffect)

# 示例数据
# 投资者交易记录
transactions <- data.frame(
  id = c(1, 1, 1, 1, 2, 2, 2),
  date = as.Date(c("2023-01-01", "2023-02-01", "2023-03-01", 
                   "2023-04-01", "2023-01-01", "2023-02-01", "2023-03-01")),
  ticker = c("AAPL", "AAPL", "GOOGL", "GOOGL", "MSFT", "MSFT", "TSLA"),
  type = c("BUY", "SELL", "BUY", "SELL", "BUY", "SELL", "BUY"),
  quantity = c(100, 100, 50, 50, 200, 200, 100),
  price = c(150, 160, 2800, 2900, 300, 320, 700)
)

# 市场价格数据
market_prices <- data.frame(
  ticker = c("AAPL", "GOOGL", "MSFT", "TSLA"),
  date = as.Date("2023-04-30"),
  price = c(170, 3000, 330, 650)
)

# 计算处置效应
result <- disposition_compute(
  transactions = transactions,
  market_prices = market_prices
)

# 查看结果
print(result)
# 输出:
# PGO: 0.85 (85% 的盈利被实现)
# PLO: 0.45 (45% 的亏损被实现)
# DE: 0.40 (存在显著处置效应)

详细分析:盈亏计算

# 计算已实现和未实现盈亏
gains_losses_result <- gains_losses(
  transactions = transactions,
  market_prices = market_prices,
  method = "average_cost"  # 成本计算方法
)

# 查看已实现盈亏
print(gains_losses_result$realized)
#   id  ticker  buy_date  sell_date  buy_price  sell_price  gain_loss
# 1  1   AAPL  2023-01-01 2023-02-01       150         160       +10  (盈利)
# 2  1  GOOGL  2023-03-01 2023-04-01      2800        2900      +100  (盈利)
# 3  2   MSFT  2023-01-01 2023-02-01       300         320       +20  (盈利)

# 查看未实现盈亏
print(gains_losses_result$unrealized)
#   id  ticker  buy_date  current_price  cost_basis  gain_loss
# 1  2   TSLA  2023-03-01            650         700        -50  (亏损)

汇总统计

# 生成汇总报告
summary_report <- disposition_summary(
  transactions = transactions,
  market_prices = market_prices
)

print(summary_report)

# 输出:
# 投资者数量:2
# 总交易次数:7
# 已实现盈利次数:3
# 已实现亏损次数:0
# 未实现盈利次数:0
# 未实现亏损次数:1
# 
# 处置效应指标:
# PGO: 1.00 (100% 盈利被实现)
# PLO: 0.00 (0% 亏损被实现)
# DE: 1.00 (极强处置效应)
# 
# 统计显著性:
# t-statistic: 3.45
# p-value: 0.001 (< 0.05,显著)

💡 典型应用场景

1. 学术研究

# 研究处置效应与人口统计特征的关系
library(dplyr)

# 按年龄分组分析
results_by_age <- transactions %>%
  group_by(age_group) %>%
  do(disposition_summary(., market_prices))

# 检验年龄差异
anova_result <- aov(DE ~ age_group, data = results_by_age)
print(anova_result)

2. 金融机构风控

# 识别高风险投资者
high_risk_investors <- function(transactions, threshold = 0.5) {
  de_result <- disposition_compute(transactions, market_prices)

  if (de_result$DE > threshold) {
    return(list(
      investor_id = transactions$id[1],
      DE = de_result$DE,
      risk_level = "HIGH",
      recommendation = "建议投资者教育干预"
    ))
  }

  return(NULL)
}

3. 投资者教育

# 生成个性化反馈报告
generate_feedback <- function(investor_transactions) {
  de_result <- disposition_summary(investor_transactions, market_prices)

  cat("=== 投资行为分析报告 ===\n\n")

  cat("处置效应指标:", de_result$DE, "\n")
  cat("盈利实现比例:", de_result$PGO, "\n")
  cat("亏损实现比例:", de_result$PLO, "\n\n")

  if (de_result$DE > 0.3) {
    cat("⚠️  警告:您表现出较强的处置效应\n")
    cat("建议:\n")
    cat("1. 基于基本面而非盈亏状态做决策\n")
    cat("2. 设定止损点并严格执行\n")
    cat("3. 定期重新评估持仓,而非基于买入价\n")
  } else {
    cat("✅ 您的投资决策相对理性\n")
  }
}

📚 理论基础

前景理论 (Prospect Theory)

概念 提出者 年份 处置效应中的应用
价值函数 Kahneman & Tversky 1979 盈利区风险厌恶,损失区风险寻求
参照点 Kahneman & Tversky 1979 买入价作为心理参照点
损失厌恶 Kahneman & Tversky 1992 损失痛苦 > 盈利快乐

处置效应实证研究

研究 市场 DE 指标 发现
Odean (1998) 美国散户 0.20 散户显著卖盈持亏
Grinblatt & Keloharju (2001) 芬兰 0.15 外国投资者更明显
Shapira & Venezia (2001) 以色列 0.18 机构投资者也存在
Mazzucchelli (2022) 多国 0.12-0.25 卖空限制加剧效应

🛠️ 扩展分析

1. 时间序列分析

# 分析处置效应随时间变化
library(ggplot2)

monthly_de <- transactions %>%
  group_by(month = lubridate::floor_date(date, "month")) %>%
  do(disposition_summary(., market_prices))

ggplot(monthly_de, aes(x = month, y = DE)) +
  geom_line() +
  geom_hline(yintercept = 0, linetype = "dashed") +
  labs(title = "处置效应时间序列",
       x = "月份",
       y = "DE 指标") +
  theme_minimal()

2. 宽框架 vs 窄框架

# 宽框架 (Portfolio-driven): 考虑整个投资组合
# 窄框架 (Asset-driven): 单独分析每只股票

# 宽框架分析
portfolio_de <- disposition_compute(
  transactions,
  market_prices,
  framing = "broad"  # 宽框架
)

# 窄框架分析
asset_de <- disposition_compute(
  transactions,
  market_prices,
  framing = "narrow"  # 窄框架
)

# 比较
cat("宽框架 DE:", portfolio_de$DE, "\n")
cat("窄框架 DE:", asset_de$DE, "\n")
# 通常宽框架 DE < 窄框架 DE

3. 平行计算 (大数据集)

# 使用并行计算加速大规模分析
library(foreach)
library(doParallel)

# 设置并行
cl <- makeCluster(detectCores() - 1)
registerDoParallel(cl)

# 并行计算处置效应
results <- foreach(i = 1:num_investors, .combine = rbind) %dopar% {
  investor_trans <- transactions[transactions$id == i, ]
  de_result <- disposition_summary(investor_trans, market_prices)
  data.frame(investor_id = i, DE = de_result$DE)
}

# 停止集群
stopCluster(cl)

🔗 相关资源


🎓 学习路径

1. 安装 R 包 → 熟悉基本函数
2. 学习前景理论 → 理解心理学基础
3. 计算处置效应 → 掌握核心指标
4. 分析真实数据 → 实战应用
5. 学术研究 → 论文阅读与复现

本地路径: /workspace/code-examples/dispositionEffect/
创建时间: 2026-06-02
难度: ⭐⭐⭐ (中级/R 包)


**dispositionEffect 中文导航 | 处置效应分析 R 包** [返回代码索引](../../README_UPDATED.md) | [决策科学资源大全](../../docs/resources/decision-science-comprehensive-resources.md)