diff --git a/apps/RatingModel.py b/apps/RatingModel.py index 79202d2..25f14aa 100644 --- a/apps/RatingModel.py +++ b/apps/RatingModel.py @@ -11,13 +11,13 @@ class RatingModel: def __init__(self, param): # 所属行业 - self.industry = param['industry'] - # 报告期 - self.period = param['period'] + self.industry = param['行业'] + # 评价期间 + self.period = param['评价期间'] # 数据模板 data_model - self.data_model = param['data_model'] + self.data_model = param['数据模板'] # 指标结果(财务) - self.indicators = '' + self.indicators = self.financial_elements() # 指标百分比 self.percentages = '' # 指标评分结果 @@ -33,11 +33,21 @@ class RatingModel: """ 财务要素 """ - elements = dict() + ele = dict() dm = self.data_model['财务数据'] - elements['净资产收益率'] = roe(dm['净利润'][0], dm['所有者权益合计'][0], dm['所有者权益合计'][1]) - elements['总资产报酬率'] = roa(dm['利润总额'][0], dm['利息支出'][0], dm['资产总计'][0], dm['资产总计'][1]) - elements['总资产周转率'] = tat(dm['营业收入'][0], dm['资产总计'][0], dm['资产总计'][1]) + b, e = self.period['上期'], self.period['当期'] + ele['净资产收益率'] = roe(dm[e]['净利润'], dm[e]['所有者权益合计'], dm[b]['所有者权益合计']) + ele['总资产报酬率'] = roa(dm[e]['利润总额'], dm[e]['计入财务费的利息支出'], dm[e]['资产总计'], dm[b]['资产总计']) + ele['总资产周转率'] = tat(dm[e]['营业收入'], dm[e]['资产总计'], dm[b]['资产总计']) + ele['应收账款周速度'] = acrt(dm[e]['营业收入'], dm[e]['应收账款']) + ele['存货周转率'] = ivtt(dm[e]['营业成本'], dm[e]['存货'], dm[b]['存货']) + ele['资产负债率'] = dbar(dm[e]['负债合计'], dm[e]['资产总计']) + ele['已获利息倍数'] = icm(dm[e]['利润总额'], dm[e]['计入财务费的利息支出'], dm[e]['资本化利息支出'], dm[e]['短期借款'], dm[e]['长期借款']) + ele['速动比率'] = qkr(dm[e]['流动资产合计'], dm[e]['存货'], dm[e]['流动负债合计']) + ele['营业增长率'] = bgr(dm[e]['营业收入'], dm[b]['营业收入']) + ele['总资产增长率'] = tagr(dm[e]['资产总计'], dm[b]['资产总计']) + ele['技术投入比率'] = tio(dm[e]['研发费用'], dm[e]['营业收入']) + return ele def risk_elements(self): """ @@ -52,8 +62,15 @@ class RatingModel: self.business_elements() self.risk_elements() - def req_rating(self): """ 计算评级结果 - """ \ No newline at end of file + """ + pass + + +if __name__ == '__main__': + import json + with open("../static/test_data/demo01.json", "r", encoding="utf-8") as f: + data = json.load(f) + RatingModel(data) diff --git a/lib/Indicators.py b/lib/Indicators.py index 06f7ade..05b40b6 100644 --- a/lib/Indicators.py +++ b/lib/Indicators.py @@ -91,18 +91,27 @@ def dbar(param1, param2): return value -def icm(param1, param2): +def icm(param1, param2, param3, param4, param5): """ ZH: 利息保障倍数 EN: Interest Cover Multiplier Parameters: - param1 - float 息税前利润 - param2 - float 利息支出 + param1 - float 利润总额 + param2 - float 计入财务费用的利息支出 + param3 - float 资本化利息支出 + param4 - float 短期借款 + param5 - float 长期借款 Returns: value - float 利息保障倍数 """ - value = round(param1 / param2, 2) - return value + if (param2 + param3) == 0: + value = param1 / (param4 * 0.043 + param5 * 0.049) + value = round(value, 2) + return value + else: + value = (param1 + param2) / (param2 + param3) + value = round(value, 2) + return value def qkr(param1, param2, param3): @@ -124,12 +133,12 @@ def qkr(param1, param2, param3): def bgr(param1, param2): """ - ZH: 计算营业增长率 + ZH: 营业增长率 EN: Business Growth Rate Unit: % Parameters: - param1 - float 营业收入(当期) - param2 - float 营业收入(上期) + param1 - float 期末营业收入 + param2 - float 期初营业收入 Returns: value - float 营业增长率 """ @@ -144,8 +153,8 @@ def tagr(param1, param2): EN: Total Assets Growth Rate Unit: % Parameters: - param2 - float 资产总计(当期) - param3 - float 资产总计(上期) + param2 - float 期末资产总计 + param3 - float 期初资产总计 Returns: value - float 总资产增长率 """ @@ -163,7 +172,7 @@ def tio(param1, param2): param1 - float 研发费用 param2 - float 营业收入 Returns: - value - type 技术投入率 + value - type 技术投入比率 """ value = round(param1 / param2 * 100, 2) return value diff --git a/static/test_data/demo01.json b/static/test_data/demo01.json new file mode 100644 index 0000000..5f1178f --- /dev/null +++ b/static/test_data/demo01.json @@ -0,0 +1,62 @@ +{ + "行业": "制造业-电子工业", + "评价期间": { + "上期": "2020-12-31", + "当期": "2021-09-30" + }, + "数据模板": { + "经营数据": { + + }, + "财务数据": { + "2020-12-31": { + "应收账款": 11293523722.88, + "存货": 13224640950.39, + "流动资产合计": 112864989321.68, + "资产总计": 156618426940.59, + "短期借款": 6335080182.17, + "长期借款": 6068163254.20, + "流动负债合计": 54977189803.22, + "负债合计": 87423710523.70, + "所有者权益合计": 69194716416.89, + "营业收入": 50319487697.20, + "营业成本": 36349153592.22, + "利润总额": 6982553409.24, + "净利润": 6103918052.46, + "研发费用": 3569377694.03, + "计入财务费的利息支出": 0, + "资本化利息支出": 0 + }, + "2021-09-30": { + "应收账款": 14340032235.16, + "存货": 34961665056.94, + "流动资产合计": 149294839099.23, + "资产总计": 249151796229.37, + "短期借款": 8648141083.60, + "长期借款": 17159358715.27, + "流动负债合计": 114496862624.12 , + "负债合计": 168969358306.53, + "所有者权益合计": 80182437922.84, + "营业收入": 73361545522.20, + "营业成本": 53179031934.71, + "利润总额": 10873688199.30, + "净利润": 9144981503.45, + "研发费用": 4594923266.82, + "计入财务费的利息支出": 0, + "资本化利息支出": 0 + } + }, + "风险数据": { + "司法风险": { + + }, + "经营风险": { + + }, + "周边风险": { + + } + } + } + +} \ No newline at end of file diff --git a/test/__init__.py b/test/__init__.py deleted file mode 100644 index e69de29..0000000