tfse-model-api-v0.2/apps/RatingModel.py

77 lines
2.5 KiB
Python
Raw Normal View History

2021-11-15 04:07:20 +08:00
import copy
import pandas as pd
2021-11-15 15:36:26 +08:00
from lib.Indicators import *
2021-11-15 04:07:20 +08:00
class RatingModel:
"""
"""
def __init__(self, param):
# 所属行业
2021-11-17 04:50:21 +08:00
self.industry = param['行业']
# 评价期间
self.period = param['评价期间']
2021-11-15 15:36:26 +08:00
# 数据模板 data_model
2021-11-17 04:50:21 +08:00
self.data_model = param['数据模板']
2021-11-15 04:07:20 +08:00
# 指标结果(财务)
2021-11-17 04:50:21 +08:00
self.indicators = self.financial_elements()
2021-11-15 04:07:20 +08:00
# 指标百分比
self.percentages = ''
# 指标评分结果
self.ratings = ''
def business_elements(self):
"""
经营要素
"""
pass
def financial_elements(self):
"""
财务要素
"""
2021-11-17 04:50:21 +08:00
ele = dict()
2021-11-15 15:36:26 +08:00
dm = self.data_model['财务数据']
2021-11-17 04:50:21 +08:00
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
2021-11-15 04:07:20 +08:00
def risk_elements(self):
"""
风险要素
"""
pass
2021-11-15 15:36:26 +08:00
def req_percent(self):
"""
计算指标百分比
"""
self.business_elements()
self.risk_elements()
def req_rating(self):
"""
计算评级结果
2021-11-17 04:50:21 +08:00
"""
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)