guarantee-admin-api-v0.2/Modules/Models/FinancialIndicatorsModel.py

583 lines
22 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
财务指标模型
"""
from Modules.Company.CompanyObject import FinancialData
from Utils.ValidateUtil import ValidateAttr, Validate
class FinancialIndicatorsModel(FinancialData.FinancialIndicator):
rid = ValidateAttr(field="rid", type=str)
cid = ValidateAttr(field="cid", type=str)
report_date = ValidateAttr(field="report_date", func=Validate.date_format)
fields_map = {
"rid": "评级ID",
"cid": "企业ID",
"report_date": "报告期",
"guaranteed_insured_balance_growth_rate": "担保在保余额增长率(%)",
"guaranteed_revenue_growth_rate": "担保收入增长率(%)",
"growth_rate_of_total_assets": "资产总额增长率(%)",
"cash_assets_ratio": "现金类资产比率(%)",
"current_ratio": "流动比率(%)",
"compensation_reserve_ratio": "代偿准备金比率(%)",
"compensation_rate": "代偿保障率(%)",
"risk_reserve_adequacy_ratio": "风险准备金充足率(%)",
"single_customer_concentration": "单一客户集中度(%)",
"current_guarantee_compensation_rate": "当期担保代偿率(%)",
"current_compensation_recovery_rate": "当期代偿回收率(%)",
"financing_guarantee_magnification": "融资担保放大倍数(倍)",
"industry_concentration": "行业集中度(%)",
"return_total_assets": "总资产收益率(%)",
"operating_margin": "营业利润率(%)",
"roe": "净资产收益率(%)",
"actual_asset_liability_ratio": "实际资产负债率(%)",
"capital_adequacy_ratio": "资本充足率(%)",
"paid_capital": "实收资本(亿元)",
"guarantee_business_income": "担保业务收入(万元)",
"cumulative_guarantee_compensation_rate": "近三年累计担保代偿率(%)",
"cumulative_compensation_recovery_rate": "近三年累计代偿回收率(%)",
"risk_coverage_ratio": "风险覆盖率(%)",
"cash_asset_compensation_rate": "现金类资产代偿保障率(%)",
"margin_ratio": "保证金比率(%)",
"proportion_investment_business_income": "投资业务收入占比(%)",
"investment_income_growth_rate": "投资收益增长率(%)",
"one_proportion_class_assets": "I类资产占比(%)",
"customer_concentration": "客户集中度(%)",
"proportion_income_guarantee_business": "担保业务收入占比(%)",
"two_proportion_class_assets": "II类资产占比(%)",
"three_proportion_class_assets": "III类资产占比(%)"
}
def eval_guaranteed_insured_balance_growth_rate(self, *args):
"""
担保在保余额增长率(%)
公式: 担保在保余额增长率 = (期末担保在保余额 - 期初担保在保余额) / 期初担保在保余额
args[0]: 期末担保在保余额
args[1]: 期初担保在保余额
"""
try:
value = ((args[0]-args[1]) / args[1]) * 100
value = round(value, 2)
self.guaranteed_insured_balance_growth_rate = value
except TypeError:
self.guaranteed_insured_balance_growth_rate = None
except ZeroDivisionError:
self.guaranteed_insured_balance_growth_rate = None
def eval_guaranteed_revenue_growth_rate(self, *args):
"""
担保收入增长率(%)
公式: 担保收入增长率 =(当期担保业务收入-上期担保业务收入)/ 上期担保业务收入
args[0]: 当期担保业务收入
args[1]: 上期担保业务收入
"""
try:
value = ((args[0]-args[1]) / args[1]) * 100
value = round(value, 2)
self.guaranteed_revenue_growth_rate = value
except TypeError:
self.guaranteed_revenue_growth_rate = None
except ZeroDivisionError:
self.guaranteed_revenue_growth_rate = None
def eval_growth_rate_of_total_assets(self, *args):
"""
资产总额增长率(%)
公式: 资产总额 = (期末资产总额 - 期初资产总额) / 期初资产总额
args[0]: 期末资产总额
args[1]: 期初资产总额
"""
try:
value = ((args[0] - args[1]) / args[1]) * 100
value = round(value, 2)
self.growth_rate_of_total_assets = value
except TypeError:
self.growth_rate_of_total_assets = None
except ZeroDivisionError:
self.growth_rate_of_total_assets = None
def eval_cash_assets_ratio(self, *args):
"""
现金类资产比率(%)
公式: 现金类资产比率=(货币资金+可供出售金融资产+存出保证金-存入保证金) / 资产总额
args[0]: 货币资金
args[1]: 可供出售金融资产
args[2]: 存出保证金
args[3]: 存入保证金
args[4]: 资产总额
"""
try:
value = ((args[0]+args[1]+args[2]-args[3]) / args[4]) * 100
value = round(value, 2)
self.cash_assets_ratio = value
except TypeError:
self.cash_assets_ratio = None
except ZeroDivisionError:
self.cash_assets_ratio = None
def eval_current_ratio(self, *args):
"""
流动比率(%)
公式: 流动比率 流动资产合计 / 流动负债合计
args[0]: 流动资产合计
args[1]: 流动负债合计
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.current_ratio = value
except TypeError:
self.current_ratio = None
except ZeroDivisionError:
self.current_ratio = None
def eval_compensation_reserve_ratio(self, *args):
"""
代偿准备金比率(%)
公式: 代偿准备金比率 = 当期代偿金额 /(未到期责任准备金+担保赔偿准备金)
args[0]: 当期代偿金额
args[1]: 未到期责任准备金
args[2]: 担保赔偿准备金
"""
try:
value = (args[0] / (args[1]+args[2])) * 100
value = round(value, 2)
self.compensation_reserve_ratio = value
except TypeError:
self.compensation_reserve_ratio = None
except ZeroDivisionError:
self.compensation_reserve_ratio = None
def eval_compensation_rate(self, *args):
"""
代偿保障率(%)
公式: 代偿保障率 (货币资金+可供出售金融资产+存出保证金-存入保证金) / 最大被担保企业融资担保责任余额
args[0]: 货币资金
args[1]: 可供出售金融资产
args[2]: 存出保证金
args[3]: 存入保证金
args[4]: 最大被担保企业融资担保责任余额
"""
try:
value = ((args[0]+args[1]+args[2]-args[3]) / args[4]) * 100
value = round(value, 2)
self.compensation_rate = value
except TypeError:
self.compensation_rate = None
except ZeroDivisionError:
self.compensation_rate = None
def eval_risk_reserve_adequacy_ratio(self, *args):
"""
风险准备金充足率(%)
公式: 风险准备金充足率=担保风险准备金余额 / 融资担保责任余额
其中:担保风险准备金余额=担保赔偿准备金+未到期责任准备金+一般风险准备金
args[0]: 担保赔偿准备金
args[1]: 未到期责任准备金
args[2]: 一般风险准备金
args[3]: 融资担保责任余额
"""
try:
value = ((args[0]+args[1]+args[2]) / args[3]) * 100
value = round(value, 2)
self.risk_reserve_adequacy_ratio = value
except TypeError:
self.risk_reserve_adequacy_ratio = None
except ZeroDivisionError:
self.risk_reserve_adequacy_ratio = None
def eval_single_customer_concentration(self, *args):
"""
单一客户集中度(%)
公式: 单一客户集中度 = 最大被担保企业融资担保责任余额 / 融资担保责任余额
args[0]: 最大被担保企业融资担保责任余额
args[1]: 融资担保责任余额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.single_customer_concentration = value
except TypeError:
self.single_customer_concentration = None
except ZeroDivisionError:
self.single_customer_concentration = None
def eval_current_guarantee_compensation_rate(self, *args):
"""
当期担保代偿率(%)
公式: 当期担保代偿率 = 当期代偿金额 / 当期解除担保责任余额
args[0]: 当期代偿金额
args[1]: 当期解除担保责任余额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.current_guarantee_compensation_rate = value
except TypeError:
self.current_guarantee_compensation_rate = None
except ZeroDivisionError:
self.current_guarantee_compensation_rate = None
def eval_current_compensation_recovery_rate(self, *args):
"""
当期代偿回收率(%)
公式: 当期代偿回收率 = 当期代偿回收金额 / 当期代偿金额
args[0]: 当期代偿回收金额
args[1]: 当期代偿金额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.current_compensation_recovery_rate = value
except TypeError:
self.current_compensation_recovery_rate = None
except ZeroDivisionError:
self.current_compensation_recovery_rate = None
def eval_financing_guarantee_magnification(self, *args):
"""
融资担保放大倍数(倍)
公式: 融资担保放大倍数 融资担保责任余额 / 净资产
args[0]: 融资担保责任余额
args[1]: 净资产
"""
try:
value = args[0] / args[1]
value = round(value, 2)
self.financing_guarantee_magnification = value
except TypeError:
self.financing_guarantee_magnification = None
except ZeroDivisionError:
self.financing_guarantee_magnification = None
def eval_industry_concentration(self, *args):
"""
行业集中度(%)
公式: 行业集中度 = 最大单一行业融资担保责任余额 / 融资担保责任余额
args[0]: 最大单一行业融资担保责任余额
args[1]: 融资担保责任余额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.industry_concentration = value
except TypeError:
self.industry_concentration = None
except ZeroDivisionError:
self.industry_concentration = None
def eval_return_total_assets(self, *args):
"""
总资产收益率(%)
公式: 总资产收益率 = 净利润 / (期初资产总额+期末资产总额)/2
args[0]: 净利润
args[1]: 期初资产总额
args[2]: 期末资产总额
"""
try:
value = (args[0] / (args[1]+args[2])/2) * 100
value = round(value, 2)
self.return_total_assets = value
except TypeError:
self.return_total_assets = None
except ZeroDivisionError:
self.return_total_assets = None
def eval_operating_margin(self, *args):
"""
营业利润率(%)
公式: 营业利润率 =(营业利润-投资收益-公允价值变动收益)/ 营业收入
args[0]: 营业利润
args[1]: 投资收益
args[2]: 公允价值变动收益
args[3]: 营业收入
"""
try:
value = ((args[0]-args[1]-args[2]) / args[3]) * 100
value = round(value, 2)
self.operating_margin = value
except TypeError:
self.operating_margin = None
except ZeroDivisionError:
self.operating_margin = None
def eval_roe(self, *args):
"""
净资产收益率(%)
公式: 净资产收益率 = 净利润 / (期初净资产+期末净资产)/2
args[0]: 净利润
args[1]: 期初净资产
args[2]: 期末净资产
"""
try:
value = (args[0] / (args[1]+args[2])/2) * 100
value = round(value, 2)
self.roe = value
except TypeError:
self.roe = None
except ZeroDivisionError:
self.roe = None
def eval_actual_asset_liability_ratio(self, *args):
"""
实际资产负债率(%)
公式: 实际资产负债率 = (负债合计-未到期责任准备金-担保赔偿准备金) / 资产总额
args[0]: 负债合计
args[1]: 未到期责任准备金
args[2]: 担保赔偿准备金
args[3]: 资产总额
"""
try:
value = ((args[0]-args[1]-args[2]) / args[3]) * 100
value = round(value, 2)
self.actual_asset_liability_ratio = value
except TypeError:
self.actual_asset_liability_ratio = None
except ZeroDivisionError:
self.actual_asset_liability_ratio = None
def eval_capital_adequacy_ratio(self, *args):
"""
资本充足率(%)
公式: 资本充足率 净资产 / 风险加权资产
args[0]: 净资产
args[1]: 风险加权资产
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.capital_adequacy_ratio = value
except TypeError:
self.capital_adequacy_ratio = None
except ZeroDivisionError:
self.capital_adequacy_ratio = None
def eval_paid_capital(self, *args):
"""
实收资本(亿元)
公式: 即实缴资本
args[0]: 实缴资本
"""
try:
value = args[0]/10000
value = round(value, 2)
self.paid_capital = value
except TypeError:
self.paid_capital = None
except ZeroDivisionError:
self.paid_capital = None
def eval_guarantee_business_income(self, *args):
"""
担保业务收入(万元)
公式: 即当期担保业务收入
args[0]: 担保业务收入
"""
try:
value = args[0]
value = round(value, 2)
self.guarantee_business_income = value
except TypeError:
self.guarantee_business_income = None
except ZeroDivisionError:
self.guarantee_business_income = None
def eval_cumulative_guarantee_compensation_rate(self, *args):
"""
近三年累计担保代偿率(%)
公式: 近三年累计担保代偿率 近三年累计代偿金额 / 近三年累计解除担保责任金额
args[0]: 近三年累计代偿金额
args[1]: 近三年累计解除担保责任金额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.cumulative_guarantee_compensation_rate = value
except TypeError:
self.cumulative_guarantee_compensation_rate = None
except ZeroDivisionError:
self.cumulative_guarantee_compensation_rate = None
def eval_cumulative_compensation_recovery_rate(self, *args):
"""
近三年累计代偿回收率(%)
公式: 近三年累计代偿回收率 近三年累计代偿回收金额 / 近三年累计代偿金额
args[0]: 近三年累计代偿回收金额
args[1]: 近三年累计代偿金额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.cumulative_compensation_recovery_rate = value
except TypeError:
self.cumulative_compensation_recovery_rate = None
except ZeroDivisionError:
self.cumulative_compensation_recovery_rate = None
def eval_risk_coverage_ratio(self, *args):
"""
风险覆盖率(%)
公式: 风险覆盖率 担保赔偿准备金 / 近三年累计代偿金额
args[0]: 担保赔偿准备金
args[1]: 近三年累计代偿金额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.risk_coverage_ratio = value
except TypeError:
self.risk_coverage_ratio = None
except ZeroDivisionError:
self.risk_coverage_ratio = None
def eval_cash_asset_compensation_rate(self, *args):
"""
现金类资产代偿保障率(%)
公式: 现金类资产代偿保障率 (货币资金+可供出售金融资产+存出保证金-存入保证金) / 融资担保责任余额
args[0]: 货币资金
args[1]: 可供出售金融资产
args[2]: 存出保证金
args[3]: 存入保证金
args[4]: 融资担保责任余额
"""
try:
value = ((args[0]+args[1]+args[2]-args[3]) / args[4]) * 100
value = round(value, 2)
self.cash_asset_compensation_rate = value
except TypeError:
self.cash_asset_compensation_rate = None
except ZeroDivisionError:
self.cash_asset_compensation_rate = None
def eval_margin_ratio(self, *args):
"""
保证金比率(%)
公式: 保证金比率 = 存入保证金 / 存出保证金
args[0]: 存入保证金
args[1]: 存出保证金
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.margin_ratio = value
except TypeError:
self.margin_ratio = None
except ZeroDivisionError:
self.margin_ratio = None
def eval_proportion_investment_business_income(self, *args):
"""
投资业务收入占比(%)
公式: 投资业务收入占比 = 投资业务收入 / 营业收入
args[0]: 投资业务收入
args[1]: 营业收入
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.proportion_investment_business_income = value
except TypeError:
self.proportion_investment_business_income = None
except ZeroDivisionError:
self.proportion_investment_business_income = None
def eval_investment_income_growth_rate(self, *args):
"""
投资收益增长率(%)
公式: 投资收益增长率 = 期末投资收益 / 期初投资收益
args[0]: 期末投资收益
args[1]: 期初投资收益
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.investment_income_growth_rate = value
except TypeError:
self.investment_income_growth_rate = None
except ZeroDivisionError:
self.investment_income_growth_rate = None
def eval_customer_concentration(self, *args):
"""
客户集中度(%)
公式: 客户集中度 前五大被担保企业融资担保责任余额 / 融资担保责任余额
args[0]: 前五大被担保企业融资担保责任余额
args[1]: 融资担保责任余额
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.customer_concentration = value
except TypeError:
self.customer_concentration = None
except ZeroDivisionError:
self.customer_concentration = None
def eval_proportion_income_guarantee_business(self, *args):
"""
担保业务收入占比(%)
公式: 担保业务收入占比 = 当期担保业务收入 / 营业收入
args[0]: 当期担保业务收入
args[1]: 营业收入
"""
try:
value = (args[0] / args[1]) * 100
value = round(value, 2)
self.proportion_income_guarantee_business = value
except TypeError:
self.proportion_income_guarantee_business = None
except ZeroDivisionError:
self.proportion_income_guarantee_business = None
def eval_one_proportion_class_assets(self, *args):
"""
I类资产占比(%)
公式: I类资产占比 = I类资产 /(资产总额-应收代偿款)
args[0]: I类资产
args[1]: 资产总额
args[2]: 应收代偿款
"""
try:
value = (args[0] / (args[1]-args[2])) * 100
value = round(value, 2)
self.one_proportion_class_assets = value
except TypeError:
self.one_proportion_class_assets = None
except ZeroDivisionError:
self.one_proportion_class_assets = None
def eval_two_proportion_class_assets(self, *args):
"""
II类资产占比(%)
公式: II类资产占比 = II类资产 /(资产总额-应收代偿款)
args[0]: II类资产
args[1]: 资产总额
args[2]: 应收代偿款
"""
try:
value = (args[0] / (args[1]-args[2])) * 100
value = round(value, 2)
self.two_proportion_class_assets = value
except TypeError:
self.two_proportion_class_assets = None
except ZeroDivisionError:
self.two_proportion_class_assets = None
def eval_three_proportion_class_assets(self, *args):
"""
III类资产占比(%)
公式: III类资产占比 = III类资产 /(资产总额-应收代偿款)
args[0]: III类资产
args[1]: 资产总额
args[2]: 应收代偿款
"""
try:
value = (args[0] / (args[1]-args[2])) * 100
value = round(value, 2)
self.three_proportion_class_assets = value
except TypeError:
self.three_proportion_class_assets = None
except ZeroDivisionError:
self.three_proportion_class_assets = None