股权融资成本GLS模型计算

news2024/11/25 2:33:32

一、模型公式

式中:

为股权融资成本

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模型口径)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024 MathorCup C 题 物流网络分拣中心货量预测及人员排班

一、问题重述 电商物流网络在订单履约中由多个环节组成&#xff0c;图1是一个简化的物流网络示意图。其中&#xff0c;分拣中心作为网络的中间环节&#xff0c;需要将包裹按照不同流向进行分拣并发往下一个场地&#xff0c;最终使包裹到达消费者手中。分拣中心管理效率的提升&…

一文搞懂OSI七层!

1.OSI OSI (Open System Interconnect&#xff09;&#xff0c;即开放式系统互联是一个完整的、完善的宏观模型。 TCP/IP协议提供点对点的链接机制&#xff0c;将数据应该如何封装、定址、传输、路由以及在目的地如何接收&#xff0c;都加以标准化。更加侧重的是互联网通信核…

动态代理 --java学习笔记

什么是动态代理&#xff1f; 当一个类的很多方法都存在重复冗杂的部分&#xff0c;就可以使用代理来处理那些重复部分的任务&#xff0c;到了各自的实现部分再丢回给原方法处理&#xff0c;同时也可以提高方法的扩展性&#xff0c;而动态则是指在运行时动态地创建代理对象&…

算法题解记录8+++爬楼梯(百日筑基)

题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶…

2024年【安全员-A证】最新解析及安全员-A证模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【安全员-A证】最新解析及安全员-A证模拟考试题&#xff0c;包含安全员-A证最新解析答案和解析及安全员-A证模拟考试题练习。安全生产模拟考试一点通结合国家安全员-A证考试最新大纲及安全员-A证考试真题汇总&a…

AI投研分析,模块化赛道可能会出现新的头部公链

随着比特币ETF的通过&#xff0c;再加上比特币第四次减半临近&#xff0c;备受期待的新一轮牛市周期已经开启了&#xff0c;然而对于那些刚穿越过熊市的新韭菜而言&#xff0c;因为总觉得没这么快涨起来&#xff0c;而对二级市场交易变得非常谨慎&#xff0c;导致了很多新韭菜在…

Unity之Unity面试题(六)

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之Unity面试题&#xff08;六&#xff09; TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取…

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

情形&#xff1a;Spring配置类注解方式整合MyBatis 异常&#xff1a; org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决&#xff1a; 检查mapper的全类名和mapper.xml的namespace是否一致检查mapper下的方法名和mapper.xml的sql的id是否…

电脑离线调用微信 ocr.exe 使用 python 调用 WeChatOCR.exe 附python代码

微信的OCR识别能力还是可以的,并且可以得到位置,速度也快,我想要把微信的这个exe 单独提取出来,可以供其他项目使用,目前已有的应该都是需要依赖微信运行状态的,我这个独一份 相当于把微信运行它的OCR的环境完全剥离出来,只需要几个代码文件加上几个模型文件就可以离线…

react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)

先看样子 组件代码&#xff1a; import React, { useState, useEffect } from react import { Row, Col, Modal, Spin, Input, Button, message, Form } from antd import { LockOutlined, EyeTwoTone, EyeInvisibleOutlined } from ant-design/icons import * as Serve from …

如何申请做快团团购帮卖团长?免费试用教程一学就会!

新手小白想要自己做快团团&#xff0c;有两种方法。 1、自己提供货源&#xff0c;自己开团做团长。 这种方法流程非常简单&#xff0c;从微信小程序中找到快团团&#xff0c;点击右上角“一键开团”&#xff0c;然后“创建普通团购”&#xff0c;按照操作设置就可以开团了。 …

Java高频面试之JVM篇

说一下 Jvm 的主要组成部分&#xff1f;及其作用&#xff1f; 类加载器执行器运行时数据区域本地接口 谈谈对运行时数据区的理解&#xff1f; 堆和栈的区别是什么&#xff1f; 堆中存什么&#xff1f;栈中存什么&#xff1f; 堆总存对象,栈中存局部变量,引用 为什么要把堆…

静音检测电路芯片D3703F——工 作 电 压 范 围 宽 : 3.2V ~ 16.0V,可以用于汽 车 音 响 系 统

概 述 &#xff1a; D3703F 是 一 块 汽 车 音 响 静 音 检 测 电 路 。 用 于 音 响 系 统 检 测 在 放 音 或 快 进 / 退 时 进 行 静 音 检 测 。 D3703F 的 的 电 压 范 围 &#xff1a; 3.2V &#xff5e; 16V &#xff0c; 信 号 检 测 和 静 音 时 间 可 通 过 外 围…

参花期刊投稿发表论文

《参花》是由国家新闻出版总署批准&#xff0c;吉林省文化和旅游厅主管&#xff0c;吉林省文化馆主办的正规文学类期刊。文学是用语言塑造形象反映社会生活的一种语言艺术&#xff0c;是自觉、独立而又面向整个社会的艺术&#xff0c;是文化中极具强烈感染力的重要组成部分&…

Java List基础篇

目录 前言一、常用List1.1 List1.1.1 特点1.1.2 常用API 1.2 ArrayList1.2.1 特点1.2.2 使用 1.3 LinkedList1.3.1 特点1.3.2 使用 1.4 CopyOnWriteArrayList1.4.1 特点1.4.2 使用 1.5 Arrays.asList()1.5.1 特点1.5.2 使用 二、对比总结 前言 一、常用List 1.1 List List是…

C++STL--谓词

谓词 ① 可调用的表达式称为谓词,包括仿函数,自定义函数,lambda表达式。 ② 接受一个参数的谓词&#xff0c;称为一元谓词。 ③ 接受两个参数的谓词&#xff0c;称为二元谓词。 可调用的表达式:对于一个对象或者表达式,如果可以使用调用运算符(),就称它为可以调用的。 一元谓…

2024年【T电梯修理】考试总结及T电梯修理考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 T电梯修理考试总结考前必练&#xff01;安全生产模拟考试一点通每个月更新T电梯修理考试技巧题目及答案&#xff01;多做几遍&#xff0c;其实通过T电梯修理试题及解析很简单。 1、【多选题】修理工陶、陈&#xff0c…

李沐27_含并行连结的网络GoogLeNet_Inception——自学笔记

Inception块 1.四个路径从不同层面抽取信息&#xff0c;然后在输出通道维合并。 2.有更少的参数个数和计算复杂度&#xff08;相比于3X3和5X5卷积层&#xff09; GoogLeNet 1.五个stages&#xff0c;九个inception块 Inception各种后续变种 1.Inception-BN(V2)——使用ba…

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测预测效果基本介绍模型描述程…

STL--pair 数对

pair 数对&#x1f357; pair是一个模板类,使用时需要引用文件 #include <utility>//通用工具pair可将两个value处理为一个元素。C标准库内多处用到了这个结构。尤其容器 map、unordered_map和unordered_multimap就是使用pair来管理其内部元素(key_value),任何函数如果…