tfse-model-api-v0.2/Esg/scripts/governance.py

215 lines
4.8 KiB
Python

import operator
def governance_rating(param):
"""
治理部分打分
Parameters:
param dict 填报问卷
Returns:
score float 治理部分得分
"""
result = dict()
result['企业性质'] = calculation_01(param)
result['公司是否设有董事会'] = calculation_02(param)
result['公司是否设有监事会'] = calculation_03(param)
result['董监高平均拥有的行业经验年数'] = calculation_04(param)
result['董监高近三年离职率'] = calculation_05(param)
result['公司近三年信息披露及时、可靠、完备、审计质量'] = calculation_06(param)
result['公司董事会近三年年均开会次数'] = calculation_07(param)
result['净资产收益率'] = calculation_08(param)
result['公司是否有审计报告'] = calculation_09(param)
fraction = list()
for value in result.values():
fraction.append(value)
score = sum(fraction)
result['合计'] = score
return result
def calculation_01(param):
"""
企业性质
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][0]
if answer == 'A':
score = 8
elif answer == 'B':
score = 3
else:
score = 0
return score
def calculation_02(param):
"""
公司是否设有董事会
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][5]
if answer == '':
score = 1
else:
score = 0
return score
def calculation_03(param):
"""
公司是否设有监事会
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][6]
if answer == '':
score = 1
else:
score = 0
return score
def calculation_04(param):
"""
董监高平均拥有的行业经验年数
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][1]
if answer == 'A':
score = 4
elif answer == 'B':
score = 2
else:
score = 0
return score
def calculation_05(param):
"""
董监高近三年离职率
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][2] / param['治理问卷']['其他类型问卷'][3] * 100
if answer < 35:
score = 4
else:
score = 0
return score
def calculation_06(param):
"""
公司近三年信息披露及时、可靠、完备、审计质量
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][7]
if answer == 'A':
score = 1
else:
score = 0
return score
def calculation_07(param):
"""
公司董事会近三年年均开会次数
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
answer = param['治理问卷']['其他类型问卷'][4]
if answer == 'A':
score = 3
elif answer == 'B':
score = 1
else:
score = 0
return score
def calculation_08(param):
"""
净资产收益率
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
# Parameter
three_year_data = sorted(param['治理问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
year_begin = three_year_data[0]['公司净利润(万元)'] / three_year_data[0]['公司净资产(万元)'] * 100
year_middle = three_year_data[1]['公司净利润(万元)'] / three_year_data[1]['公司净资产(万元)'] * 100
year_end = three_year_data[2]['公司净利润(万元)'] / three_year_data[2]['公司净资产(万元)'] * 100
average = (year_end + year_middle + year_begin)/3
if average >= 15:
score = 6
elif average >= 10:
score = 4
elif average >= 8:
score = 2
else:
score = 0
return score
def calculation_09(param):
"""
公司是否有审计报告
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
# Parameter
three_year_data = sorted(param['治理问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
year_begin = three_year_data[0]['公司是否有审计报告']
year_middle = three_year_data[1]['公司是否有审计报告']
year_end = three_year_data[2]['公司是否有审计报告']
if year_end == year_middle == year_begin == '':
score = 2
else:
score = 0
return score