股权融资成本GLS模型计算

一、模型公式

式中:

为股权融资成本

P为股价

B为每股净资产

FROE为预测每股净资产收益率

目标:求解股权融资成本

二、模型口径参考来源

PS:实际以代码为准

①FROE(预测每股净资产收益率):

资本市场开放与股权资本成本  2020 金融研究

②股利支付率k(综合考虑股利政策不稳定与公司规模变化、公司成长机会,采用过去3年股利支付率平均值作为k):

媒体曝光度_信息披露环境与权益资本成本 2014 金融研究

机构投资者、所有权性质与权益资本成本 2018 金融研究

终极所有权结构对权益资本成本的影响 2016 管理科学学报

贸易摩擦与权益资本成本 2021会计研究

IFRS、财务分析师、机构投资者和权益资本成本 2016会计研究

③Pt(股价)、Bt(每股净资产):二者同为t时点

资本市场开放和股权资本成本 2020 金融研究

中美交叉上市与权益资本成本研究 2013 国际金融研究

真实盈余管理与权益资本成本 2015 金融研究

④Matlab求解:

三、代码片段

3.1导入库及读取相关文件

需要的文件 1.kFlieName:股利支付率 国泰安 -> 股利政策 -> 基本数据 -> 财务指标数据 注意:

1.包含当年的过去5年 2.必须先选每股股利后选每股收益!

2.FROEFlieName:预测净资产收益率 锐思 -> 研究报告 -> 个股盈利预测
注意:1.截止日期12-31 2.需要字段:股票代码、预测年度、净资产收益率平均 3.统计时间间隔为180时数据才与wind基本一致!!!!!

3.indROEFlieName:行业ROE 锐思 -> 研究报告 -> 行业财务指标 注意:1.截止日期12-31 2.行业划分标准:9申万 3.需要字段:行业代码_IndCd、行业净资产收益率(%)_IndROE

4.closeFlieName:12月收盘价平均值 锐思 -> 股票 -> 日股票综合数据 注意:1.日期范围:12.1-12.31 2.需要字段:股票代码、日期、收盘价

5.bNewFlieName:每股净资产 锐思 -> 股票 > 年股票数据 注意:1.日期:12.31 2.需要字段:股票代码、每股净资产

6.newStkCode.csv:目标股票代码

7.RESSET_INDCLS_1.csv:公司所属行业

import pandas as pd
import numpy as np
from numpy import *
import sympy as sp


#2008
kFlieName = "2008年数据\k2003_2008.csv"
FROEFlieName = "2008年数据\RESSET_RRSTKEAFOCA_2008_1.csv"
indROEFlieName = "2008年数据\INDFI_EARNPOWER.csv"
closeFlieName = "2008年数据\RESSET_DRESSTK_2001_2010_1.csv"
bNewFlieName = "2008年数据\RESSET_YRESSTK_1.csv"

stkCode =  pd.read_csv("newStkCode.csv",header=None,names=["stkCode"])  #目标股票代码

indClass = pd.read_csv("RESSET_INDCLS_1.csv",index_col="股票代码_StkCd")[["行业代码_IndCd"]]
indClass = pd.read_csv("RESSET_INDCLS_1_new.csv",index_col="股票代码_StkCd")[["行业代码_IndCd"]]
# for index,each in enumerate(indClass.index):
#     indClass.index[index] = 0
newK =  pd.read_csv(kFlieName,index_col="Stkcd").dropna()
FROE =  pd.read_csv(FROEFlieName,index_col="股票代码_StkCd")[["预测年度_ForYear","净资产收益率平均(%)_ROEAvg"]]
FROE.columns = ["预测年度","FROE"]
# close =  pd.read_csv("RESSET_MRESSTK_1.csv",index_col="股票代码_Stkcd")#.iloc[:,:-1]

# indROE =  pd.read_csv(indROEFlieName,index_col="行业代码_IndCd")["行业净资产收益率(%)_IndROE"]
indROE =  pd.read_csv(indROEFlieName,index_col="IndustryCode")["ROEB"]

close = pd.read_csv(closeFlieName,index_col="股票代码_Stkcd")
bNew = pd.read_csv(bNewFlieName,index_col="股票代码_Stkcd")

# indClass
# indROE

stkCodeList = set(stkCode["stkCode"])
newKIndex = set(newK.index)
FROEIndex = set(FROE.index)
indClassIndex = set(indClass.index)
indROEIndex = set(indROE.index)
closeNewIndex = set(closeNew.index)
bNewIndex = set(bNew.index)

selectIndex = stkCodeList & newKIndex & FROEIndex  & bNewIndex & indClassIndex & closeNewIndex

print(len(selectIndex))

3.2股利支付率

kMean5 = []

#股利支付率k = 每股股利 / 每股收益
for eachIndex in set(newK.index):
    newK.loc[eachIndex,"k"] = newK.loc[eachIndex,"T20497"]/newK.loc[eachIndex,"T60200"] #股利支付率 = 每股股利 / 每股收益

for eachIndex in sorted(list(selectIndex)):
    test = newK.loc[eachIndex].iloc[:5]["k"].sum()/5                #过去5年均值
    kMean5.append(test)

panel = pd.DataFrame({"k":kMean5},index=sorted(list(selectIndex)))
print(panel)

3.3FROE

FROE = FROE.loc[selectIndex]
FROE = FROE.sort_index()

for eachIndex in sorted(set(selectIndex)):
    test = FROE.loc[eachIndex]
    if len(test) != 3:
        FROE.drop(index=[eachIndex],inplace=True,axis=0)
        
FROEIndex = set(FROE.index)
selectIndex = stkCodeList & newKIndex & FROEIndex  & bNewIndex & indClassIndex & closeNewIndex
print(len(selectIndex))
print(len(panel))

for eachIndex in list(selectIndex):
#     print(close.loc[eachIndex]["b"])
    panel.loc[eachIndex,"t+1"] = FROE.loc[eachIndex].sort_values(by="预测年度")["FROE"].iloc[1]*0.01
    panel.loc[eachIndex,"t+2"] = FROE.loc[eachIndex].sort_values(by="预测年度")["FROE"].iloc[2]*0.01
#     close.loc[eachIndex,"t+3"] = FROE.loc[eachIndex]["FROE"].iloc[2]*0.01
    panel.loc[eachIndex,"t+3"] = (panel.loc[eachIndex,"t+1"] + panel.loc[eachIndex,"t+2"])/2
    panel.loc[eachIndex,"行业代码"] = indClass.loc[eachIndex][0]
print(len(panel))

for eachIndex in selectIndex:
#     print(int(close.loc[eachIndex]["行业代码"]))
    if int(panel.loc[eachIndex]["行业代码"]) in indROE.index:
        panel.loc[eachIndex,"IndROE"] = indROE.loc[int(panel.loc[eachIndex]["行业代码"])]*0.01 
print(len(panel))

for eachIndex in selectIndex:
    begin = panel.loc[eachIndex,"t+3"]
    end = panel.loc[eachIndex,"IndROE"]
    dif = abs((begin-end)/9)#9
    bFront = panel.loc[eachIndex,"b"] #b0
    for i in list(range(4,13)):#13
        begin = begin-dif
        panel.loc[eachIndex,"t+"+str(i)] = begin
    for i in list(range(1,13)):
        bFront = bFront + panel.loc[eachIndex,"t+"+str(i)] * bFront * (1-panel.loc[eachIndex,"k"])
        panel.loc[eachIndex,"b"+str(i)] = bFront
print(len(panel))

3.4收盘价

close = close.loc[selectIndex]
close = close.sort_index()

for eachIndex in list(selectIndex):
    each = close.loc[eachIndex,"收盘价_Clpr"]
    panel.loc[eachIndex,"close"] = each.mean()
print(len(panel))

3.5每股净资产

for eachIndex in list(selectIndex):
    each = bNew.loc[eachIndex,"每股净资产(元/股)_NAPS"]
    panel.loc[eachIndex,"b"] = each
print(len(panel))

3.6保存各年面板数据

newData = pd.read_csv("result.csv",header=None)[0].dropna() + 0.5
print(len(newData))
newData = newData[newData!=1.5]
print(len(newData))
# print(newData.sort_values()[-50:])
print(newData.sort_values()[7:-7].describe())

各年面板数据如下图:

3.7Matlab求解方程(Matlab)

clear all;clc;
data=csvread('C:\Users\zsllsz2022\Desktop\10月实证\GLS模型\core\2-原始口径合并版本-重新计算2008-2020\panel2008.csv',1,0);
P=data(:,3);
B(:,1)=data(:,4);
B(:,2:13)=data(:,19:30);
FROE(:,1:3)=data(:,5:7);
FROE(:,4:12)=data(:,10:18);


%% [-0.49995,0.49995]每隔0.0001计算函数值
for stock = 1:length(data)
    for j = 1 : 10000
        r(j) = 0.0001 * j; 
        yy(stock,j) = B(stock,1);
        for i = 1 : 11
            yy(stock,j) = yy(stock,j) + (FROE(stock,i)-r(j))*B(stock,i)/((1+r(j))^i);
        end
        yy(stock,j) = yy(stock,j) + (FROE(stock,12)-r(j))*B(stock,12)/(r(j)*(1+r(j))^12);
        yy(stock,j) = yy(stock,j) - P(stock);
    end
end

%% 寻找零点
for stock = 1:length(data)
    count = 1;
    for j = 1 : 9999
        if yy(stock,j+1) * yy(stock,j) < 0
            resultTemp(stock, count) = (j - 5000) * 0.0001;
            count = count + 1;
        end
    end
end

%%
for stock = 1:length(data)
    temp = 1;
    for j = 1 : size(resultTemp,2)
        if abs(resultTemp(stock, j)) < abs(temp) && abs(resultTemp(stock, j)) > 0.000000001
            temp = resultTemp(stock, j);
        end
    end
    result(stock,1) = temp;
end


%%
%对结果排序
xSort=sort(result);

%剔除头尾百分之一的数据
delNum=ceil(length(xSort) * 0.01);
for i=1:length(xSort)-2*delNum
    x2(i,1)=xSort(i+delNum);
end

%求平均值以及标准差
avg=mean(x2);
stdev=std(x2);

% function y=myfun(r,P,B,FROE)
%     F=B(1);
%     for i=1:11
%         F=F+(FROE(i)-r)*B(i)/((1+r)^i);
%     end
%     F=F+(FROE(12)-r)*B(12)/(r*(1+r)^12);
%     y=P-F;
% end

四、结果

计算出的GLS模型股权融资成本(实际结果采用2种不同的GLS模型口径)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539396.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物联网实战--驱动篇之(五)TEA和AES加密算法

目录 一、前言 二、TEA算法 三、AES算法 四、加解密测试 五、安全性保障 一、前言 物联网的安全性是经常被提及的一个点&#xff0c;如果你的设备之间通讯没有加密的话&#xff0c;那么攻击者很容易就能获取并解析出报文的协议&#xff0c;从而根据攻击者的需要进行设备操…

c# refc# substring c# 反射c# split c# websocket c# datatable使用

在C#编程中&#xff0c;ref关键字、Substring方法、反射&#xff08;Reflection&#xff09;、Split方法、WebSocket通信以及DataTable的使用都是常见的技术和方法。下面我将逐一为您详解这些内容。 1. C# ref关键字 ref关键字在C#中用于按引用传递参数。这意味着当您将变量作…

当你的项目体积比较大?你如何做性能优化

在前端开发中&#xff0c;项目体积优化是一个重要的环节&#xff0c;它直接影响到网页的加载速度和用户体验。随着前端项目越来越复杂&#xff0c;引入的依赖也越来越多&#xff0c;如何有效地减少最终打包文件的大小&#xff0c;成为了前端工程师需要面对的挑战。以下是一些常…

vim卡死了,没有反应怎么办?

解决办法&#xff1a; 很有可能是你有个在window下的好习惯&#xff0c;没事儿就ctrl s保存文件。但是在vim里&#xff0c;ctrl s默认是发送一种流控制信号&#xff0c;通常用于停止终端的输出&#xff0c;所以你的屏幕就卡死了。 解决办法也很简单&#xff0c;按下ctrl q即…

机器学习前导——PyCharm PyTorch Python3 机器学习

机器学习前导——PyCharm & pytorch & Python3 & 机器学习 文章目录 前言PyCharmPyTorchPython3机器学习联系 前言 这学期选了《机器学习》&#xff0c;第一次接触&#xff0c;对一些专有名词很陌生。 PyCharm PyCharm是一款由JetBrains开发的软件&#xff0c…

python--递归算法篇

1、给定一个包含n1个整数的数组nums&#xff0c;其数字在1到n之间&#xff08;包含1和n&#xff09;&#xff0c; 可知至少存在一个重复的整数&#xff0c;假设只有一个重复的整数&#xff0c;请找出这个重复的数 def repeat(ls:list) -> list:#把个数超过1的数&#xff0c…

ppt技巧:如何将Word文档大纲中导入到幻灯片中?

在PowerPoint中&#xff0c;将Word文档的大纲导入到新的幻灯片是一种非常实用的技巧。以下是详细的步骤&#xff1a; 首先&#xff0c;需要打开PowerPoint软件并打开原始的幻灯片文件。 在PowerPoint的顶部【开始】菜单栏中&#xff0c;找到并点击“新建幻灯片”按钮&#xff0…

OSPF中配置VLAN通信(单臂路由)

OSPF中配置VLAN通信&#xff08;单臂路由&#xff09; 单臂路由&#xff08;One-Arm Routing&#xff09;是一种网络路由配置方式&#xff0c;常用于解决网络中的特定问题。在传统的网络架构中&#xff0c;路由器通常需要连接到多个子网或网络段&#xff0c;每个子网都需要一个…

数学知识——欧几里得算法(辗转相除法)

欧几里得算法用来求最大公约数 int gcd(int a, int b) {if(b 0) return a;else return gcd(b, a % b); } 例题&#xff1a;洛谷p1029 #include<iostream>using namespace std;#define int long long #define endl \nint x, y; int ans;int gcd(int x, int y) {if(y 0)…

Bytebase 2.15.0 - GitOps 整体升级

&#x1f514; GitOps 整体升级 新版 GitOps 和之前版本不兼容&#xff0c;如果需要升级协助&#xff0c;请联系我们。 使用访问令牌进行身份验证。支持项目中配置多个 VCS 连接器。支持在 VCS 连接器中指定数据库分组为目标&#xff08;默认情况下应用于项目中的所有数据库&…

俄罗斯yandex广告推广如何投放?

俄罗斯作为欧亚大陆的重要经济体&#xff0c;拥有庞大的互联网用户基数&#xff0c;其中Yandex作为该地区最主要的搜索引擎&#xff0c;无疑是触及目标客户群的关键渠道。云衔科技凭借专业优势与实战经验&#xff0c;为企业提供一站式Yandex广告开户及全程代运营解决方案&#…

抽象工厂模式:深入探索面向对象设计的多样性

在软件开发中&#xff0c;正确地应用设计模式对于构建可扩展、可维护和高效的系统至关重要。抽象工厂模式作为创建型设计模式之一&#xff0c;提供了一个高层接口&#xff0c;用于创建一系列相关或依赖对象&#xff0c;而无需指定它们具体的类。本文将详细介绍抽象工厂模式的概…

Ubuntu日常配置

目录 修改网络配置 xshell连不上怎么办 解析域名失败 永久修改DNS方法 临时修改DNS方法 修改网络配置 1、先ifconfig确认本机IP地址&#xff08;刚装的机子没有ifconfig&#xff0c;先apt install net-tools&#xff09; 2、22.04版本的ubuntu网络配置在netplan目录下&…

【随笔】Git 高级篇 -- 管理多分支 git rebase(二十二)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

WSL访问adb usb device

1.Windows上用PowerShell运行&#xff1a; winget install --interactive --exact dorssel.usbipd-win 2.在WSLUbuntu上终端运行&#xff1a; sudo apt install linux-tools-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-too…

数据结构的魅力

数据结构这块越学越敬佩 博大精深 统计大文件中相同年龄的人的个数 public static void main(String[] args) throws Exception {String str "";String fileName "";InputStreamReader isr new InputStreamReader(new FileInputStream(fileName), Stan…

蓝桥杯嵌入式(G431)备赛笔记——RTC

// RTC time// 声明一个变量 rtc_tick 用于记录上次 RTC 处理的时间 u32 rtc_tick 0;// 声明结构体变量 D 用于存储 RTC 的日期信息 RTC_DateTypeDef D;// 声明结构体变量 T 用于存储 RTC 的时间信息 RTC_TimeTypeDef T;// RTC_proc 函数&#xff0c;用于处理 RTC 时间 void R…

【单片机毕业设计8-基于stm32c8t6的RFID校园门禁系统】

【单片机毕业设计8-基于stm32c8t6的RFID校园门禁系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇8基于stm32的RFID校园门禁系统 &#x1f9ff;创作不易&#xff0c;拒绝白嫖可私 一、功能介绍 -----------…

Spark-Scala语言实战(15)

在之前的文章中&#xff0c;我们学习了如何在spark中使用键值对中的学习键值对方法中的lookup&#xff0c;cogroup两种方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#…

5. @Autowired与@Resource的区别

在上一节我们使用Autowired进行了bean的装配&#xff0c;Autowired与Resource都可以用来装配bean&#xff0c;但它们之前还是有一些区别&#xff0c;它们的区别具体体现为以下几点&#xff1a; 来源不同对Constructor注入的支持不同查找顺序不同支持参数不同 1. 来源不同 Re…