1.财务分析接口
This commit is contained in:
王思川 2022-06-01 14:51:12 +08:00
parent 4b8bd100be
commit 524a83a2a6
3 changed files with 416 additions and 151 deletions

View File

@ -7,9 +7,9 @@ from Utils.ValidateUtil import ValidateAttr, Validate
class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
rid = ValidateAttr(field="cid", type=str)
rid = ValidateAttr(field="rid", type=str)
cid = ValidateAttr(field="cid", type=str)
report_date = ValidateAttr(field="cid", func=Validate.date_format)
report_date = ValidateAttr(field="report_date", func=Validate.date_format)
fields_map = {
"rid": "评级ID",
@ -52,12 +52,14 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
def eval_guaranteed_insured_balance_growth_rate(self, *args):
"""
担保在保余额增长率(%)
公式: 担保在保余额增长率 = 期末担保在保余额 / 期初担保在保余额
公式: 担保在保余额增长率 = (期末担保在保余额 - 期初担保在保余额) / 期初担保在保余额
args[0]: 期末担保在保余额
args[1]: 期初担保在保余额
"""
try:
self.guaranteed_insured_balance_growth_rate = (args[0] / args[1]) * 100
value = ((args[0]-args[1]) / args[1]) * 100
value = round(value, 2)
self.guaranteed_insured_balance_growth_rate = value
except TypeError or ZeroDivisionError:
self.guaranteed_insured_balance_growth_rate = None
@ -69,19 +71,23 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
args[1]: 上期担保业务收入
"""
try:
self.guaranteed_revenue_growth_rate = ((args[0]-args[1]) / args[1]) * 100
value = ((args[0]-args[1]) / args[1]) * 100
value = round(value, 2)
self.guaranteed_revenue_growth_rate = value
except TypeError or ZeroDivisionError:
self.guaranteed_revenue_growth_rate = None
def eval_growth_rate_of_total_assets(self, *args):
"""
资产总额增长率(%)
公式: 资产总额 = 期末资产总额 / 期初资产总额
公式: 资产总额 = (期末资产总额 - 期初资产总额) / 期初资产总额
args[0]: 期末资产总额
args[1]: 期初资产总额
"""
try:
self.growth_rate_of_total_assets = (args[0] / args[1]) * 100
value = ((args[0] - args[1]) / args[1]) * 100
value = round(value, 2)
self.growth_rate_of_total_assets = value
except TypeError or ZeroDivisionError:
self.growth_rate_of_total_assets = None
@ -96,7 +102,9 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
args[4]: 资产总额
"""
try:
self.cash_assets_ratio = ((args[0]+args[1]+args[2]-args[3]) / args[4]) * 100
value = ((args[0]+args[1]+args[2]-args[3]) / args[4]) * 100
value = round(value, 2)
self.cash_assets_ratio = value
except TypeError or ZeroDivisionError:
self.cash_assets_ratio = None
@ -108,7 +116,9 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
args[1]: 流动负债合计
"""
try:
self.current_ratio = (args[0] / args[1]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.current_ratio = value
except TypeError or ZeroDivisionError:
self.current_ratio = None
@ -116,12 +126,14 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
代偿准备金比率(%)
公式: 代偿准备金比率 = 当期代偿金额 /未到期责任准备金+担保赔偿准备金
args[1]: 当期代偿金额
args[2]: 未到期责任准备金
args[3]: 担保赔偿准备金
args[0]: 当期代偿金额
args[1]: 未到期责任准备金
args[2]: 担保赔偿准备金
"""
try:
self.compensation_reserve_ratio = (args[1] / (args[2]+args[3])) * 100
value = (args[0] / (args[1]+args[2])) * 100
value = round(value, 2)
self.compensation_reserve_ratio = value
except TypeError or ZeroDivisionError:
self.compensation_reserve_ratio = None
@ -129,14 +141,16 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
代偿保障率(%)
公式: 代偿保障率 (货币资金+可供出售金融资产+存出保证金-存入保证金) / 最大被担保企业融资担保责任余额
args[1]: 货币资金
args[2]: 可供出售金融资产
args[3]: 存出保证金
args[4]: 存入保证金
args[5]: 最大被担保企业融资担保责任余额
args[0]: 货币资金
args[1]: 可供出售金融资产
args[2]: 存出保证金
args[3]: 存入保证金
args[4]: 最大被担保企业融资担保责任余额
"""
try:
self.compensation_rate = ((args[1]+args[2]+args[3]-args[4]) / args[5]) * 100
value = ((args[0]+args[1]+args[2]-args[3]) / args[4]) * 100
value = round(value, 2)
self.compensation_rate = value
except TypeError or ZeroDivisionError:
self.compensation_rate = None
@ -145,13 +159,15 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
风险准备金充足率(%)
公式: 风险准备金充足率担保风险准备金余额 / 融资担保责任余额
其中担保风险准备金余额=担保赔偿准备金+未到期责任准备金+一般风险准备金
args[1]: 担保赔偿准备金
args[2]: 未到期责任准备金
args[3]: 一般风险准备金
args[4]: 融资担保责任余额
args[0]: 担保赔偿准备金
args[1]: 未到期责任准备金
args[2]: 一般风险准备金
args[3]: 融资担保责任余额
"""
try:
self.risk_reserve_adequacy_ratio = ((args[1]+args[2]+args[3]) / args[4]) * 100
value = ((args[0]+args[1]+args[2]) / args[3]) * 100
value = round(value, 2)
self.risk_reserve_adequacy_ratio = value
except TypeError or ZeroDivisionError:
self.risk_reserve_adequacy_ratio = None
@ -159,11 +175,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
单一客户集中度(%)
公式: 单一客户集中度 = 最大被担保企业融资担保责任余额 / 融资担保责任余额
args[1]: 最大被担保企业融资担保责任余额
args[2]: 融资担保责任余额
args[0]: 最大被担保企业融资担保责任余额
args[1]: 融资担保责任余额
"""
try:
self.single_customer_concentration = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.single_customer_concentration = value
except TypeError or ZeroDivisionError:
self.single_customer_concentration = None
@ -171,11 +189,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
当期担保代偿率(%)
公式: 当期担保代偿率 = 当期代偿金额 / 当期解除担保责任余额
args[1]: 当期代偿金额
args[2]: 当期解除担保责任余额
args[0]: 当期代偿金额
args[1]: 当期解除担保责任余额
"""
try:
self.current_guarantee_compensation_rate = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.current_guarantee_compensation_rate = value
except TypeError or ZeroDivisionError:
self.current_guarantee_compensation_rate = None
@ -183,11 +203,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
当期代偿回收率(%)
公式: 当期代偿回收率 = 当期代偿回收金额 / 当期代偿金额
args[1]: 当期代偿回收金额
args[2]: 当期代偿金额
args[0]: 当期代偿回收金额
args[1]: 当期代偿金额
"""
try:
self.current_compensation_recovery_rate = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.current_compensation_recovery_rate = value
except TypeError or ZeroDivisionError:
self.current_compensation_recovery_rate = None
@ -195,11 +217,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
融资担保放大倍数()
公式: 融资担保放大倍数 融资担保责任余额 / 净资产
args[1]: 融资担保责任余额
args[2]: 净资产
args[0]: 融资担保责任余额
args[1]: 净资产
"""
try:
self.financing_guarantee_magnification = args[1] / args[2]
value = args[0] / args[1]
value = round(value, 2)
self.financing_guarantee_magnification = value
except TypeError or ZeroDivisionError:
self.financing_guarantee_magnification = None
@ -207,11 +231,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
行业集中度(%)
公式: 行业集中度 = 最大单一行业融资担保责任余额 / 融资担保责任余额
args[1]: 最大单一行业融资担保责任余额
args[2]: 融资担保责任余额
args[0]: 最大单一行业融资担保责任余额
args[1]: 融资担保责任余额
"""
try:
self.industry_concentration = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.industry_concentration = value
except TypeError or ZeroDivisionError:
self.industry_concentration = None
@ -219,12 +245,14 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
总资产收益率(%)
公式: 总资产收益率 = 净利润 / (期初资产总额+期末资产总额)/2
args[1]: 净利润
args[2]: 期初资产总额
args[3]: 期末资产总额
args[0]: 净利润
args[1]: 期初资产总额
args[2]: 期末资产总额
"""
try:
self.return_total_assets = (args[1] / (args[2]+args[3])/2) * 100
value = (args[0] / (args[1]+args[2])/2) * 100
value = round(value, 2)
self.return_total_assets = value
except TypeError or ZeroDivisionError:
self.return_total_assets = None
@ -232,13 +260,15 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
营业利润率(%)
公式: 营业利润率 =营业利润-投资收益-公允价值变动收益/ 营业收入
args[1]: 营业利润
args[2]: 投资收益
args[3]: 公允价值变动收益
args[4]: 营业收入
args[0]: 营业利润
args[1]: 投资收益
args[2]: 公允价值变动收益
args[3]: 营业收入
"""
try:
self.operating_margin = ((args[1]-args[2]-args[3]) / args[4]) * 100
value = ((args[0]-args[1]-args[2]) / args[3]) * 100
value = round(value, 2)
self.operating_margin = value
except TypeError or ZeroDivisionError:
self.operating_margin = None
@ -246,12 +276,14 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
净资产收益率(%)
公式: 净资产收益率 = 净利润 / (期初净资产+期末净资产)/2
args[1]: 净利润
args[2]: 期初净资产
args[3]: 期末净资产
args[0]: 净利润
args[1]: 期初净资产
args[2]: 期末净资产
"""
try:
self.roe = (args[1] / (args[2]+args[3])/2) * 100
value = (args[0] / (args[1]+args[2])/2) * 100
value = round(value, 2)
self.roe = value
except TypeError or ZeroDivisionError:
self.roe = None
@ -259,13 +291,15 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
实际资产负债率(%)
公式: 实际资产负债率 = (负债合计-未到期责任准备金-担保赔偿准备金) / 资产总额
args[1]: 负债合计
args[2]: 未到期责任准备金
args[3]: 担保赔偿准备金
args[4]: 资产总额
args[0]: 负债合计
args[1]: 未到期责任准备金
args[2]: 担保赔偿准备金
args[3]: 资产总额
"""
try:
self.actual_asset_liability_ratio = ((args[1]-args[2]-args[3]) / args[4]) * 100
value = ((args[0]-args[1]-args[2]) / args[3]) * 100
value = round(value, 2)
self.actual_asset_liability_ratio = value
except TypeError or ZeroDivisionError:
self.actual_asset_liability_ratio = None
@ -273,11 +307,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
资本充足率(%)
公式: 资本充足率 净资产 / 风险加权资产
args[1]: 净资产
args[2]: 风险加权资产
args[0]: 净资产
args[1]: 风险加权资产
"""
try:
self.capital_adequacy_ratio = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.capital_adequacy_ratio = value
except TypeError or ZeroDivisionError:
self.capital_adequacy_ratio = None
@ -285,10 +321,12 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
实收资本亿元
公式: 即实缴资本
args[1]: 实缴资本
args[0]: 实缴资本
"""
try:
self.paid_capital = args[1]
value = args[0]/10000
value = round(value, 2)
self.paid_capital = value
except TypeError or ZeroDivisionError:
self.paid_capital = None
@ -296,10 +334,12 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
担保业务收入(万元)
公式: 即当期担保业务收入
args[1]: 担保业务收入
args[0]: 担保业务收入
"""
try:
self.guarantee_business_income = args[1]
value = args[0]
value = round(value, 2)
self.guarantee_business_income = value
except TypeError or ZeroDivisionError:
self.guarantee_business_income = None
@ -307,11 +347,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
近三年累计担保代偿率(%)
公式: 近三年累计担保代偿率 近三年累计代偿金额 / 近三年累计解除担保责任金额
args[1]: 近三年累计代偿金额
args[2]: 近三年累计解除担保责任金额
args[0]: 近三年累计代偿金额
args[1]: 近三年累计解除担保责任金额
"""
try:
self.cumulative_guarantee_compensation_rate = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.cumulative_guarantee_compensation_rate = value
except TypeError or ZeroDivisionError:
self.cumulative_guarantee_compensation_rate = None
@ -319,11 +361,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
近三年累计代偿回收率(%)
公式: 近三年累计代偿回收率 近三年累计代偿回收金额 / 近三年累计代偿金额
args[1]: 近三年累计代偿回收金额
args[2]: 近三年累计代偿金额
args[0]: 近三年累计代偿回收金额
args[1]: 近三年累计代偿金额
"""
try:
self.cumulative_compensation_recovery_rate = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.cumulative_compensation_recovery_rate = value
except TypeError or ZeroDivisionError:
self.cumulative_compensation_recovery_rate = None
@ -331,11 +375,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
风险覆盖率(%)
公式: 风险覆盖率 担保赔偿准备金 / 近三年累计代偿金额
args[1]: 担保赔偿准备金
args[2]: 近三年累计代偿金额
args[0]: 担保赔偿准备金
args[1]: 近三年累计代偿金额
"""
try:
self.risk_coverage_ratio = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.risk_coverage_ratio = value
except TypeError or ZeroDivisionError:
self.risk_coverage_ratio = None
@ -343,14 +389,16 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
现金类资产代偿保障率(%)
公式: 现金类资产代偿保障率 (货币资金+可供出售金融资产+存出保证金-存入保证金) / 融资担保责任余额
args[1]: 货币资金
args[2]: 可供出售金融资产
args[3]: 存出保证金
args[4]: 存入保证金
args[5]: 融资担保责任余额
args[0]: 货币资金
args[1]: 可供出售金融资产
args[2]: 存出保证金
args[3]: 存入保证金
args[4]: 融资担保责任余额
"""
try:
self.cash_asset_compensation_rate = ((args[1]+args[2]+args[3]-args[4]) / args[5]) * 100
value = ((args[0]+args[1]+args[2]-args[3]) / args[4]) * 100
value = round(value, 2)
self.cash_asset_compensation_rate = value
except TypeError or ZeroDivisionError:
self.cash_asset_compensation_rate = None
@ -358,11 +406,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
保证金比率(%)
公式: 保证金比率 = 存入保证金 / 存出保证金
args[1]: 存入保证金
args[2]: 存出保证金
args[0]: 存入保证金
args[1]: 存出保证金
"""
try:
self.margin_ratio = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.margin_ratio = value
except TypeError or ZeroDivisionError:
self.margin_ratio = None
@ -370,11 +420,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
投资业务收入占比(%)
公式: 投资业务收入占比 = 投资业务收入 / 营业收入
args[1]: 投资业务收入
args[2]: 营业收入
args[0]: 投资业务收入
args[1]: 营业收入
"""
try:
self.proportion_investment_business_income = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.proportion_investment_business_income = value
except TypeError or ZeroDivisionError:
self.proportion_investment_business_income = None
@ -382,11 +434,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
投资收益增长率(%)
公式: 投资收益增长率 = 期末投资收益 / 期初投资收益
args[1]: 期末投资收益
args[2]: 期初投资收益
args[0]: 期末投资收益
args[1]: 期初投资收益
"""
try:
self.investment_income_growth_rate = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.investment_income_growth_rate = value
except TypeError or ZeroDivisionError:
self.investment_income_growth_rate = None
@ -394,11 +448,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
客户集中度(%)
公式: 客户集中度 前五大被担保企业融资担保责任余额 / 融资担保责任余额
args[1]: 前五大被担保企业融资担保责任余额
args[2]: 融资担保责任余额
args[0]: 前五大被担保企业融资担保责任余额
args[1]: 融资担保责任余额
"""
try:
self.customer_concentration = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.customer_concentration = value
except TypeError or ZeroDivisionError:
self.customer_concentration = None
@ -406,11 +462,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
担保业务收入占比(%)
公式: 担保业务收入占比 = 当期担保业务收入 / 营业收入
args[1]: 当期担保业务收入
args[2]: 营业收入
args[0]: 当期担保业务收入
args[1]: 营业收入
"""
try:
self.proportion_income_guarantee_business = (args[1] / args[2]) * 100
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.proportion_income_guarantee_business = value
except TypeError or ZeroDivisionError:
self.proportion_income_guarantee_business = None
@ -418,12 +476,14 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
I类资产占比(%)
公式: I类资产占比 = I类资产 /资产总额-应收代偿款
args[1]: I类资产
args[2]: 资产总额
args[3]: 应收代偿款
args[0]: I类资产
args[1]: 资产总额
args[2]: 应收代偿款
"""
try:
self.one_proportion_class_assets = (args[1] / (args[2]-args[3])) * 100
value = (args[0] / (args[1]-args[2])) * 100
value = round(value, 2)
self.one_proportion_class_assets = value
except TypeError or ZeroDivisionError:
self.one_proportion_class_assets = None
@ -431,12 +491,14 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
II类资产占比(%)
公式: II类资产占比 = II类资产 /资产总额-应收代偿款
args[1]: II类资产
args[2]: 资产总额
args[3]: 应收代偿款
args[0]: II类资产
args[1]: 资产总额
args[2]: 应收代偿款
"""
try:
self.two_proportion_class_assets = (args[1] / (args[2]-args[3])) * 100
value = (args[0] / (args[1]-args[2])) * 100
value = round(value, 2)
self.two_proportion_class_assets = value
except TypeError or ZeroDivisionError:
self.two_proportion_class_assets = None
@ -444,11 +506,13 @@ class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
"""
III类资产占比(%)
公式: III类资产占比 = III类资产 /资产总额-应收代偿款
args[1]: III类资产
args[2]: 资产总额
args[3]: 应收代偿款
args[0]: III类资产
args[1]: 资产总额
args[2]: 应收代偿款
"""
try:
self.three_proportion_class_assets = (args[1] / (args[2]-args[3])) * 100
value = (args[0] / (args[1]-args[2])) * 100
value = round(value, 2)
self.three_proportion_class_assets = value
except TypeError or ZeroDivisionError:
self.three_proportion_class_assets = None

View File

@ -2,6 +2,7 @@ from DBHelper.MongoHelperInstance import DB_GUA
from Modules.Models.FinancialIndicatorsModel import FinancialIndicatorsModel
from Modules.Rating.RatingObjects import RatingRecord
from Modules.Rating.RatingUtils import RatingUtils
from Utils import CommonUtil
class RatingImpl(object):
@ -77,70 +78,270 @@ class RatingImpl(object):
@staticmethod
def financial_analysis(**kwargs):
""""""
"""财务分析"""
rid = kwargs['rid']
cid = kwargs['cid']
report_date = kwargs['report_date']
data_c = DB_GUA.find_single_data(
paid_capital = DB_GUA.find_single_column(
"企业数据",
"工商信息",
{"企业ID": cid},
"实缴资本(万元)"
)
curr_financial_report = DB_GUA.find_single_data(
"企业数据",
"财务数据",
{"企业ID": cid, "报告期": report_date},
["资产负债表", "利润表", "补充数据表"]
)
data_l = DB_GUA.find_single_data(
last_financial_report = DB_GUA.find_single_data(
"企业数据",
"财务数据",
{"企业ID": cid, "报告期": RatingUtils.last_report_date(report_date)},
["资产负债表", "利润表", "补充数据表"]
)
ba_c = data_c["资产负债表"]
pr_c = data_c["利润表"]
ap_c = data_c["补充数据表"]
ba_c = curr_financial_report["资产负债表"]
pr_c = curr_financial_report["利润表"]
ap_c = curr_financial_report["补充数据表"]
ba_l = data_l["资产负债表"]
pr_l = data_l["利润表"]
ap_l = data_l["补充数据表"]
ba_l = last_financial_report["资产负债表"]
pr_l = last_financial_report["利润表"]
ap_l = last_financial_report["补充数据表"]
model = FinancialIndicatorsModel()
model.eval_guaranteed_insured_balance_growth_rate(ap_c["担保在保余额"], ap_l["担保在保余额"])
model.eval_guaranteed_revenue_growth_rate(ap_c["当期担保业务收入"], ap_c["上期担保业务收入"])
model.eval_growth_rate_of_total_assets(ba_c["资产总计"], ba_c["资产总计"])
model.eval_cash_assets_ratio(ap_c["货币资金"], ap_c["可供出售金融资产"], ap_c["存出保证金"], ap_c["存入保证金"], ap_c["资产总额"])
model.eval_current_ratio(ba_c["流动资产合计"], ba_c["流动负债合计"])
model.eval_compensation_reserve_ratio(ap_c["当期代偿金额"], ap_c["未到期责任准备金"], ap_c["担保赔偿准备金"])
model.eval_compensation_rate(ba_c["货币资金"], ba_c["可供出售金融资产"], ap_c["存出保证金"], ap_c["存入保证金"], ap_c["最大被担保企业融资担保责任余额"])
model.eval_risk_reserve_adequacy_ratio(ap_c["融资担保责任余额"], ap_c["担保赔偿准备金"], ap_c["未到期责任准备金"], ap_c["一般风险准备金"])
model.eval_single_customer_concentration(ap_c["最大被担保企业融资担保责任余额"], ap_c["融资担保责任余额"])
model.eval_current_guarantee_compensation_rate(ap_c["当期代偿金额"], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_current_compensation_recovery_rate(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_financing_guarantee_magnification(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_industry_concentration(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_return_total_assets(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_operating_margin(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_roe(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_actual_asset_liability_ratio(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_capital_adequacy_ratio(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_paid_capital(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_guarantee_business_income(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_cumulative_guarantee_compensation_rate(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_cumulative_compensation_recovery_rate(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_risk_coverage_ratio(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_cash_asset_compensation_rate(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_margin_ratio(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_proportion_investment_business_income(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_investment_income_growth_rate(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_customer_concentration(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_proportion_income_guarantee_business(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_one_proportion_class_assets(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_two_proportion_class_assets(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.eval_three_proportion_class_assets(ap_c[""], ap_c[""], ap_c[""], ap_c[""], ap_c[""])
model.rid = rid
model.cid = cid
model.report_date = report_date
model.fields_toggle()
model.eval_guaranteed_insured_balance_growth_rate(
ap_c["担保在保余额"],
ap_l["担保在保余额"]
)
model.eval_guaranteed_revenue_growth_rate(
ap_c["当期担保业务收入"],
ap_c["上期担保业务收入"]
)
model.eval_growth_rate_of_total_assets(
ba_c["非流动资产"]["资产总计"],
ba_c["非流动资产"]["资产总计"]
)
model.eval_cash_assets_ratio(
ba_c["流动资产"]["货币资金"],
ba_c["非流动资产"]["可供出售金融资产"],
ap_c["存出保证金"],
ap_c["存入保证金"],
ba_c["非流动资产"]["资产总计"]
)
model.eval_current_ratio(
ba_c["流动资产"]["流动资产合计"],
ba_c["流动负债"]["流动负债合计"]
)
model.eval_compensation_reserve_ratio(
ap_c["当期代偿金额"],
ap_c["未到期责任准备金"],
ap_c["担保赔偿准备金"]
)
model.eval_compensation_rate(
ba_c["流动资产"]["货币资金"],
ba_c["非流动资产"]["可供出售金融资产"],
ap_c["存出保证金"],
ap_c["存入保证金"],
ap_c["最大被担保企业融资担保责任余额"]
)
model.eval_risk_reserve_adequacy_ratio(
ap_c["融资担保责任余额"],
ap_c["担保赔偿准备金"],
ap_c["未到期责任准备金"],
ba_c["所有者权益"]["一般风险准备金"]
)
model.eval_single_customer_concentration(
ap_c["最大被担保企业融资担保责任余额"],
ap_c["融资担保责任余额"]
)
model.eval_current_guarantee_compensation_rate(
ap_c["当期代偿金额"],
ap_c["当期解除担保责任余额"]
)
model.eval_current_compensation_recovery_rate(
ap_c["当期代偿回收金额"],
ap_c["当期代偿金额"]
)
model.eval_financing_guarantee_magnification(
ap_c["融资担保责任余额"],
ba_c["所有者权益"]["所有者权益合计"]
)
model.eval_industry_concentration(
ap_c["最大单一行业融资担保责任余额"],
ap_c["融资担保责任余额"]
)
model.eval_return_total_assets(
pr_c["净利润"],
ba_l["非流动资产"]["资产总计"],
ba_c["非流动资产"]["资产总计"]
)
model.eval_operating_margin(
pr_c["营业利润"],
pr_c["投资收益"],
pr_c["公允价值变动收益"],
pr_c["营业总收入"]
)
model.eval_roe(
pr_c["净利润"],
ba_c["所有者权益"]["所有者权益合计"],
ba_l["所有者权益"]["所有者权益合计"]
)
model.eval_actual_asset_liability_ratio(
ba_c["非流动负债"]["负债合计"],
ap_c["未到期责任准备金"],
ap_c["担保赔偿准备金"],
ba_c["非流动资产"]["资产总计"]
)
model.eval_capital_adequacy_ratio(
ba_c["所有者权益"]["所有者权益合计"],
ap_c["风险加权资产"]
)
model.eval_paid_capital(
paid_capital
)
model.eval_guarantee_business_income(
ap_c["当期担保业务收入"]
)
model.eval_cumulative_guarantee_compensation_rate(
ap_c["近三年累计代偿金额"],
ap_c["近三年累计解除担保责任金额"]
)
model.eval_cumulative_compensation_recovery_rate(
ap_c["近三年累计代偿回收金额"],
ap_c["近三年累计代偿金额"]
)
model.eval_risk_coverage_ratio(
ap_c["担保赔偿准备金"],
ap_c["近三年累计代偿金额"]
)
model.eval_cash_asset_compensation_rate(
ba_c["流动资产"]["货币资金"],
ba_c["非流动资产"]["可供出售金融资产"],
ap_c["存出保证金"],
ap_c["存入保证金"],
ap_c["融资担保责任余额"]
)
model.eval_margin_ratio(
ap_c["存入保证金"],
ap_c["存出保证金"]
)
model.eval_proportion_investment_business_income(
pr_c["投资收益"],
pr_c["营业总收入"]
)
model.eval_investment_income_growth_rate(
pr_l["投资收益"],
pr_c["投资收益"]
)
model.eval_customer_concentration(
ap_c["前五大被担保企业融资担保责任余额"],
ap_c["融资担保责任余额"]
)
model.eval_proportion_income_guarantee_business(
ap_c["当期担保业务收入"],
pr_c["营业总收入"]
)
model.eval_one_proportion_class_assets(
ap_c["I类资产"],
ba_c["非流动资产"]["资产总计"],
ba_c["流动资产"]["应收代偿款"]
)
model.eval_two_proportion_class_assets(
ap_c["II类资产"],
ba_c["非流动资产"]["资产总计"],
ba_c["流动资产"]["应收代偿款"]
)
model.eval_three_proportion_class_assets(
ap_c["III类资产"],
ba_c["非流动资产"]["资产总计"],
ba_c["流动资产"]["应收代偿款"]
)
financial_indicators = model.fields_toggle()
DB_GUA.upsert_single_data(
"评级数据",
"财务分析",
{"评级ID": rid},
financial_indicators
)
return_data = {
"代偿能力": CommonUtil.sub_dict(
financial_indicators,
[
"代偿保障率(%)",
"代偿准备金比率(%)",
"现金类资产比率(%)",
"风险准备金充足率(%)",
"流动比率(%)",
"现金类资产代偿保障率(%)",
"保证金比率(%)"
]
),
"成长能力": CommonUtil.sub_dict(
financial_indicators,
[
"担保在保余额增长率(%)",
"担保收入增长率(%)",
"资产总额增长率(%)"
]
),
"担保资产质量": CommonUtil.sub_dict(
financial_indicators,
[
"客户集中度(%)",
"单一客户集中度(%)",
"当期担保代偿率(%)",
"融资担保放大倍数(倍)",
"行业集中度(%)",
"当期代偿回收率(%)",
"近三年累计担保代偿率(%)",
"近三年累计代偿回收率(%)",
"风险覆盖率(%)"
]
),
"企业规模": CommonUtil.sub_dict(
financial_indicators,
[
"实收资本(亿元)",
"担保业务收入(万元)"
]
),
"盈利能力": CommonUtil.sub_dict(
financial_indicators,
[
"总资产收益率(%)",
"营业利润率(%)",
"净资产收益率(%)",
"投资业务收入占比(%)",
"投资收益增长率(%)",
"担保业务收入占比(%)"
]
),
"资本结构": CommonUtil.sub_dict(
financial_indicators,
[
"实际资产负债率(%)",
"资本充足率(%)",
"I类资产占比(%)",
"II类资产占比(%)",
"III类资产占比(%)"
]
)
}
return return_data
@staticmethod
def risk_analysis(**kwargs):

View File

@ -57,16 +57,16 @@ def financial_analysis_routes(**kwargs):
"""财务分析"""
try:
RouteParamsCheck(req=request.args, params=['rid', 'cid', 'mode', 'report_date']).required()
RouteParamsCheck(req=request.args, params=['rid', 'cid', 'report_date']).required()
rid = request.args['rid']
cid = request.args['cid']
report_date = request.args['report_date']
impl = RatingImpl()
impl.financial_analysis(rid=rid, cid=cid, report_date=report_date)
result = impl.financial_analysis(rid=rid, cid=cid, report_date=report_date)
return "111"
return {"info": "财务分析", "result": result}
except AssertionError as e:
return {"info": e.__str__()}, 200
except AttrCheckError as e: