(金融会计领域)普通最小二乘法回归得到的β值构建KV指数

KV指数

参考 Kim 和 Vemrecchia(2001)的方法,采用 KV 指数来衡量中潜股份的信息披露质量。该方法通过股票收益率对交易量的回归系数来衡量信息披露质量,其原理在于,上市公司的信息披露质量越低,股票收益率对交易量的依赖程度越高,回归系数越大,即 KV 指数是信息披露质量的反向指标。

KV指数的优点在于它反映的是市场信息,也就是投资者对于上市公司信息不对称程度的客观评价,该评价同时包括了强制性和自愿性披露的信息。同时,本文借鉴瞿光宇等(2014)的做法,采用如下改进模型计算KV指数(KV):

其中,P是第t日的收盘价,是第t日的交易股数,是年平均日交易量,是由最小二乘法的回归得到的,即KV指数越大,KV越大,表明股票交易量的多少与股票收益率的高低关系密切,这表明投资者从企业获取的直接信息较少,因此更依赖于股票交易量,从中可以看出企业的信息披露质量越差,也就是说,KV指数与公司信息披露质量成负相关,也即Quality越大时,表面信息披露质量越低。

一、数据准备 data.xlsx

二、代码实现

python 复制代码
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt

# 读取Excel文件
df = pd.read_excel('data.xlsx')

# 将'Trading_date'列转换为日期格式,并提取年份
df['Trading_date'] = pd.to_datetime(df['Trading_date'])
df['Year'] = df['Trading_date'].dt.year

# 计算收盘价变化的百分比,及其对数值
df['Pct_Change'] = df['Closing_price'].pct_change()
df['Log_Return'] = np.log(df['Pct_Change'].abs() + 1)

# 按年份分组
grouped = df.groupby('Year')

# 用于存储每年KV值结果的字典
kv_values_per_year = {}

for year, group in grouped:
    # 计算年度平均日交易量
    Vol0 = group['Transaction_quantity'].mean()

    # 计算交易量与年度平均日交易量的差异
    group['Volume_Diff'] = group['Transaction_quantity'] / Vol0 - 1 

    # 用statsmodels进行OLS回归
    # 这里我们移除第一行,因为其变化率是NaN
    X = sm.add_constant(group['Volume_Diff'][1:]) # 加入截距项 使用sm.add_constant添加常数列
    Y = group['Log_Return'][1:]

    model = sm.OLS(Y, X, missing='drop')  # 对于缺失值,我们选择删除
    results = model.fit()

    # 提取回归系数β
    beta = results.params['Volume_Diff']

    alpha = results.params['const']
    mu_i = results.resid
    # print(f"alpha: {alpha}, beta: {beta}, mu_i: {mu_i}")

    # 计算KV指数
    KV = beta * 10

    # 将结果保存到字典中
    kv_values_per_year[year] = KV

# 打印每年的KV值
for year, kv_value in kv_values_per_year.items():
    print(f"{year}年的KV值为: {kv_value}")

# 创建一个新的图表
plt.figure()

# 绘制KV值随年份变化的折线图
years = list(kv_values_per_year.keys())
kv_values = list(kv_values_per_year.values())
plt.plot(years, kv_values, marker='o')

# 在每个点旁边显示其y轴数值,且只显示小数点后两位
for i, txt in enumerate(kv_values):
    plt.annotate("{:.2f}".format(txt), (years[i], kv_values[i]),
                  textcoords="offset points", xytext=(0,10), ha='center')
    
# 设置图表标题和坐标轴标签
plt.title('KV Value Changes Over Years')
plt.xlabel('Year')
plt.ylabel('KV Value')

# 保存图表为png图像文件
plt.savefig('kv_values.png')
相关推荐
amazinging18 小时前
北京-15k测试-入职甲方金融-上班第二天
python·金融
学行库小秘2 天前
基于门控循环单元的数据回归预测 GRU
人工智能·深度学习·神经网络·算法·回归·gru
zzywxc7872 天前
AI 行业应用:金融、医疗、教育、制造业领域的落地案例与技术实现
android·前端·人工智能·chrome·金融·rxjava
不是光头 强3 天前
A股大盘数据-20250819 &分析
金融·理财
爱疯生活3 天前
车e估牵头正式启动乘用车金融价值评估师编制
大数据·人工智能·金融
zzywxc7874 天前
详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
开发语言·javascript·人工智能·深度学习·金融·prompt·流程图
ccut 第一混4 天前
python基于机器学习进行数据处理与预测(火灾的三因素回归问题)
神经网络·机器学习·数据挖掘·回归·预测
Ashlee_code4 天前
香港券商智能櫃台系統技術解決方案——融合跨境清算與AI風控,助力券商把握滬港雙市爆發機遇**
java·科技·金融·重构·架构·系统架构·php
杨超越luckly4 天前
HTML应用指南:利用POST请求获取上海黄金交易所金价数据
前端·信息可视化·金融·html·黄金价格
edisao4 天前
第一篇:从C-803金融战线到K-119认知武器:五步打造多维度竞争护城河
microsoft·金融