'''
首先我声明采用原来这个博主的模型,他代码很干净,感谢!被我改的有点不好意思。
https://github.com/HongzoengNg/KMVmodel
原来的博主NLFG是他自己定义的模块,我取出来函数直接用了
针对原来的网络文档我做了以下修改,单一我采用读取csv文件,将Ve/D/ThetaE/r 五个数值放入
另外由于没有长期负债,因此我用D作为流动负债,D_long是长期负债=0,实际情况可能需要再csv文件再增加一列,后期优化
输出为了检查模型方便,我采用屏幕打印方式,后期可以建立一个文件,把读到的数据append到文件中
输入为了检查模型方便,我把数据读取到内存中,如果以后数据量大,博主的文件读取方式更加合理
还有对DD_mat >1.67的解释,我不理解,我注释了,后期研究一下为啥
原始模型中对d1没有thetaA的除法,我修改了d1,经过确认,这个版本比原来博主那个更好些。
'''
from numpy import *
import numpy as np
import math
from scipy.optimize import fsolve
import pandas as pd
import os
# import NLFG
import scipy.stats as stats
import matplotlib.pyplot as plt
def N(x): #求导数的函数
return stats.norm.cdf(x)
def KMV_f(Ve,ThetaE,D,r,t=1): #计算的核心模块
Ve=float(Ve)
ThetaE=float(ThetaE)
D=float(D)
r=float(r)
t=float(t)
def