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

server/2024/12/22 0:52:38/

KV指数

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

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

\ln\left|\frac{\Delta P_{t}}{P_{t-1}}\right|=\alpha+\beta\biggl(\frac{Vol_{t}}{Vol_{0}}-1\biggr)+\mu_{i}\\ KV=\beta\times10^{6}

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

一、数据准备 data.xlsx

二、代码实现

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回归# 这里我们移除第一行,因为其变化率是NaNX = 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')

 


http://www.ppmy.cn/server/1703.html

相关文章

上线流程及操作

上节回顾 1 搜索功能-前端:搜索框,搜索结果页面-后端:一种类型课程-APIResponse(actual_courseres.data.get(results),free_course[],light_course[])-搜索,如果数据量很大,直接使用mysql,效率非常低--》E…

【论文阅读】TransGNN

一、摘要 本文主要是在推荐系统中对GNN的改进。在协同过滤中,主要是对用户-项目交互图进行建模。但是基于GNN的方法遇到了有限的接受域和嘈杂的“兴趣无关”连接的挑战。相比之下,基于Transformer的方法擅长于自适应地和全局地聚合信息但是在大规模交互…

RUST语言之引用与借用

1.通过参数形式使用引用 调用函数并传入引用 //String::from会分配内存来存储RUST语言参考与借用//然后将s指针指向这块内存地址let mut sString::from("RUST语言参考与借用");println!("{}",s);//调用自定义函数并传入引用let x reftest(&mut s);//…

pnpm 报错: ERR_PNPM_META_FETCH_FAIL

今天突然遇到一个报错,pnpm 报错: ERR_PNPM_META_FETCH_FAIL  GET https://registry.npm.taobao.org/vue%2Fcli-service: request to https://registry.npm.taobao.org/vue%2Fcli-service failed, reason: certificate has expired问题原因:…

爬虫 | 垃圾处理设施数据的获取与保存

Hi,大家好,我是半亩花海。本项目通过发送网络请求(requests),从指定的 URL 获取垃圾处理设施的相关数据,并将数据保存到 CSV 文件中,以供后续分析和利用。 目录 一、项目结构 二、详细说明 三…

【Linux】进程的优先级环境变量

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. 进程的优先级2.1 什么是优先级2.2 为什么要有优先级2.3 优先级的查看方式2.4 对优先级调整 3. 命令行参数4. 环境变量4.1 环境变量与配置文件4.1.1 环境变量初步介绍4.1.2 配置文件 4.2 更多环境变量4.3 整…

C++力扣Leetcode算法4--排序算法

目录 快速排序--递归 归并排序--递归 插入排序 冒泡排序 选择排序 215 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 347. 前 K 个高频元素 快速排序--递归 void quick_sort(vector<int> &nums, int l, int r) {if (l 1 > r) …

代码随想录图论

1. 所有可能的路径 class Solution:def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:def dfs(graph, result, path, root): #result 返回结果, path记录路径, root记录遍历到了第几个节点if root len(graph) - 1: #如果遍历到最后…