tfse-etl-api-v0.2/RatingData/scripts/report/financial_analysis.py

439 lines
15 KiB
Python

def profitability(param):
"""
资质荣誉 区分行业
Parameters:
param: 数据库数据
"""
industry = param['综合评价填报']['行业选择'][0]
if industry == '制造业':
return profitability_manufacturing(param)
elif industry == '信息技术业':
return profitability_infomation(param)
def profitability_manufacturing(param):
"""
盈利能力-制造业
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
盈利能力数据
"""
# Params
data_01 = param['综合评价填报']
data_02 = param['评价结果']
data_03 = param['指标明细']
# Returns
result = list()
part_01 = dict()
def para_02():
part_02 = dict()
# 年度
part_02['date'] = data_01['财务填报']['利润表'][1]['报告期'][:4]
# 净资产收益率
part_02['return_on_net_assets_analysis'] = str(data_03[1]['净资产收益率'])
# 总资产报酬率
part_02['return_on_total_assets_analysis'] = str(data_03[1]['总资产报酬率'])
def income_scale():
# 收入规模
income = float(data_01['财务填报']['利润表'][0]['营业收入'])
if income > 400000000:
part_02['income_scale'] = '较大'
elif income > 20000000:
part_02['income_scale'] = '处于行业中等水平'
elif income > 3000000:
part_02['income_scale'] = '较小'
else:
part_02['income_scale'] = ''
def technology_level():
# 产品技术含量
rona = data_02['财务评分']['盈利能力']['净资产收益率']
if rona >= 8:
part_02['technology_level'] = ''
elif rona >= 8 * 0.8:
part_02['technology_level'] = '较高'
elif rona >= 8 * 0.6:
part_02['technology_level'] = '处于行业平均水平'
elif rona >= 8 * 0.4:
part_02['technology_level'] = '较低'
else:
part_02['technology_level'] = ''
def profitability_analysis():
# 盈利能力
p_score = data_02['财务评分']['盈利能力']['净资产收益率'] + data_02['财务评分']['盈利能力']['总资产报酬率']
if p_score >= 16:
part_02['profitability_analysis'] = ''
elif p_score >= 16 * 0.8:
part_02['profitability_analysis'] = '较好'
elif p_score >= 16 * 0.8:
part_02['profitability_analysis'] = '有待提高'
elif p_score >= 16 * 0.8:
part_02['profitability_analysis'] = '较弱'
else:
part_02['profitability_analysis'] = ''
income_scale()
technology_level()
profitability_analysis()
return part_02
result.append(part_01)
result.append(para_02())
return result
def profitability_infomation(param):
"""
盈利能力-信息技术业
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
盈利能力数据
"""
# Params
data_01 = param['综合评价填报']
data_03 = param['指标明细']
# Returns
result = list()
part_01 = dict()
part_02 = dict()
def para_03():
part_03 = dict()
# 年度
part_03['date'] = data_01['财务填报']['利润表'][1]['报告期'][:4]
# 净资产收益率
part_03['return_on_net_assets_analysis'] = str(data_03[1]['净资产收益率'])
try:
# 是否高于平均水平
if data_03[1]['净资产收益率'] > 4.7:
part_03['high_low_01'] = '高于'
else:
part_03['high_low_01'] = '低于'
except TypeError:
part_03['high_low_01'] = '低于'
# 总资产报酬率
part_03['return_on_total_assets_analysis'] = str(data_03[1]['总资产报酬率'])
try:
# 是否高于平均水平
if data_03[1]['总资产报酬率'] > 2.7:
part_03['high_low_02'] = '高于'
else:
part_03['high_low_02'] = '低于'
except TypeError:
part_03['high_low_02'] = '低于'
return part_03
result.append(part_01)
result.append(part_02)
result.append(para_03())
return result
def asset_quality(param):
"""
资产质量 区分行业
Parameters:
param: 数据库数据
"""
industry = param['综合评价填报']['行业选择'][0]
if industry == '制造业':
return asset_quality_manufacturing(param)
elif industry == '信息技术业':
return asset_quality_infomation(param)
def asset_quality_manufacturing(param):
"""
资产质量-制造业
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
资产质量数据
"""
# Params
data_01 = param['综合评价填报']
data_02 = param['评价结果']
data_03 = param['指标明细']
# Returns
result = list()
part_01 = dict()
part_02 = dict()
def para_03():
part_03 = dict()
# 年度
part_03['date'] = data_01['财务填报']['利润表'][1]['报告期'][:4]
# 应收账款周转率
part_03['account_turnover_analysis'] = str(data_03[0]['应收账款周转率'])
# 存货周转率
part_03['inventory_turnover_analysis'] = str(data_03[0]['存货周转率'])
# 总资产周转率
part_03['total_assets_turnover_analysis'] = str(data_03[0]['总资产周转率'])
def industry_asset():
a = float(data_02['财务评分']['资产质量']['总资产周转率'])
s = float(data_02['财务评分']['资产质量']['应收账款周转率'])
c = float(data_02['财务评分']['资产质量']['存货周转率'])
a_s = a + s + c
if a_s >= 18:
part_03['industry_level'] = ''
part_03['asset_quality'] = ''
elif a_s >= 18 * 0.8:
part_03['industry_level'] = '较高'
part_03['asset_quality'] = '较好'
elif a_s >= 18 * 0.6:
part_03['industry_level'] = '中等'
part_03['asset_quality'] = '有待改善'
elif a_s >= 18 * 0.4:
part_03['industry_level'] = '偏低'
part_03['asset_quality'] = '较差'
else:
part_03['industry_level'] = ''
part_03['asset_quality'] = ''
industry_asset()
return part_03
result.append(part_01)
result.append(part_02)
result.append(para_03())
return result
def asset_quality_infomation(param):
"""
资产质量-信息技术业
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
资产质量数据
"""
# Params
data_01 = param['综合评价填报']
data_02 = param['评价结果']
data_03 = param['指标明细']
# Returns
result = list()
def para_01():
part_01 = dict()
# 年度
part_01['date'] = data_01['财务填报']['利润表'][1]['报告期'][:4]
# 应收账款周转率
part_01['account_turnover_analysis'] = str(data_03[1]['应收账款周转率'])
try:
# 是否高于平均水平
if data_03[1]['应收账款周转率'] > 0.4:
part_01['high_low_01'] = ''
else:
part_01['high_low_01'] = ''
except TypeError:
part_01['high_low_01'] = ''
# 总资产周转率
part_01['total_assets_turnover_analysis'] = str(data_03[1]['总资产周转率'])
try:
# 是否高于平均水平
if data_03[1]['总资产周转率'] > 3.9:
part_01['high_low_02'] = '高于'
else:
part_01['high_low_02'] = '低于'
except TypeError:
part_01['high_low_02'] = '低于'
return part_01
result.append(para_01())
return result
def debt_risk(param):
"""
债务风险
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
债务风险数据
"""
# Params
data_02 = param['评价结果']
data_03 = param['指标明细']
# Returns
result = list()
part_01 = dict()
def para_02():
part_02 = dict()
def debt_risk_detail():
a = float(data_02['财务评分']['债务风险']['资产负债率'])
d = float(data_02['财务评分']['债务风险']['已获利息倍数'])
s = float(data_02['财务评分']['债务风险']['速动比率'])
d_s = a + d + s
if d_s >= 18:
part_02['debt_risk'] = ''
elif d_s >= 18 * 0.8:
part_02['debt_risk'] = '较大'
elif d_s >= 18 * 0.6:
part_02['debt_risk'] = '适中'
elif d_s >= 18 * 0.4:
part_02['debt_risk'] = '较小'
else:
part_02['debt_risk'] = ''
def asset_liability_ratio():
# 资产负债率区间
if len(data_03) >= 3:
rate = [data_03[0]['资产负债率'], data_03[1]['资产负债率'], data_03[2]['资产负债率']]
rate.sort()
part_02['min_asset_liability_ratio'] = str(rate[0])
part_02['max_asset_liability_ratio'] = str(rate[2])
else:
rate_01 = data_03[0]['资产负债率']
rate_02 = data_03[1]['资产负债率']
if rate_01 > rate_02:
part_02['max_asset_liability_ratio'] = str(rate_01)
part_02['min_asset_liability_ratio'] = str(rate_02)
else:
part_02['max_asset_liability_ratio'] = str(rate_02)
part_02['min_asset_liability_ratio'] = str(rate_01)
def fin_structure_analysis():
# 财务结构
alr = data_03[0]['资产负债率']
if alr < 0.4:
part_02['fin_structure_analysis'] = '稳健'
elif alr < 0.55:
part_02['fin_structure_analysis'] = '较稳健'
elif alr < 0.7:
part_02['fin_structure_analysis'] = '稳健性有待进一步加强'
else:
part_02['fin_structure_analysis'] = '欠稳健'
def operating_cash_flow_to_debt():
# 经营性现金流对利息的保障程度
ic_s = data_02['财务评分']['债务风险']['已获利息倍数']
if ic_s >= 5:
part_02['operating_cash_flow_to_debt'] = ''
elif ic_s >= 5 * 0.8:
part_02['operating_cash_flow_to_debt'] = '较强'
elif ic_s >= 5 * 0.6:
part_02['operating_cash_flow_to_debt'] = '尚可'
elif ic_s >= 5 * 0.4:
part_02['operating_cash_flow_to_debt'] = '较弱'
else:
part_02['operating_cash_flow_to_debt'] = ''
def assets_liquidity():
# 资产流动性
qr_s = data_02['财务评分']['债务风险']['速动比率']
if qr_s >= 5:
part_02['assets_liquidity'] = ''
elif qr_s >= 5 * 0.8:
part_02['assets_liquidity'] = '较好'
elif qr_s >= 5 * 0.6:
part_02['assets_liquidity'] = '一般'
elif qr_s >= 5 * 0.4:
part_02['assets_liquidity'] = '较差'
else:
part_02['assets_liquidity'] = ''
# 已获利息倍数
if data_03[0]['已获利息倍数'] is None:
part_02['interest_cover'] = ''
else:
part_02['interest_cover'] = ',已获利息倍数为{}'.format(str(data_03[0]['已获利息倍数']))
# 速动比率
part_02['quick_ratio'] = str(data_03[0]['速动比率'])
debt_risk_detail()
asset_liability_ratio()
asset_liability_ratio()
fin_structure_analysis()
operating_cash_flow_to_debt()
assets_liquidity()
return part_02
result.append(part_01)
result.append(para_02())
return result
def growth_ability(param):
"""
成长能力
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
成长能力数据
"""
# Params
data_02 = param['评价结果']
data_03 = param['指标明细']
# Returns
result = list()
part_01 = dict()
def para_02():
part_02 = dict()
def degree_of_imprtance():
# 重视程度
ti_s = data_02['财务评分']['经营增长']['技术投入比率']
if ti_s >= 5 * 0.7:
part_02['degree_of_imprtance'] = '重视技术研发或先进工艺的开发'
elif ti_s >= 5 * 0.4:
part_02['degree_of_imprtance'] = '对技术研发或先进工艺的开发的重视程度一般'
else:
part_02['degree_of_imprtance'] = '不重视技术研发或先进工艺的开发'
# 技术投入比
part_02['technology_input_ratio'] = str(data_03[1]['技术投入比率'])
def contribution_growth_ability():
g = float(data_02['财务评分']['经营增长']['营业增长率'])
a = float(data_02['财务评分']['经营增长']['总资产增长率'])
s = float(data_02['财务评分']['经营增长']['技术投入比率'])
ga_s = g + a + s
if ga_s >= 18:
part_02['contribution'] = ''
part_02['growth_ability'] = ''
elif ga_s >= 18 * 0.8:
part_02['contribution'] = '较大'
part_02['growth_ability'] = '较好'
elif ga_s >= 18 * 0.6:
part_02['contribution'] = '尚可'
part_02['growth_ability'] = '一般'
elif ga_s >= 18 * 0.4:
part_02['contribution'] = '较小'
part_02['growth_ability'] = '较差'
else:
part_02['contribution'] = ''
part_02['growth_ability'] = ''
# 营业收入增长率
part_02['growth_rate_of_operating_revenue'] = str(data_03[1]['营业增长率'])
# 总资产增长率
part_02['growth_rate_of_total_assets'] = str(data_03[1]['总资产增长率'])
degree_of_imprtance()
contribution_growth_ability()
return part_02
result.append(part_01)
result.append(para_02())
return result