update 财务要素分析

This commit is contained in:
P3ngSaM 2022-04-20 23:40:45 +08:00
parent 57d7b6d165
commit 254230fc37
3 changed files with 126 additions and 9 deletions

View File

@ -416,11 +416,38 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
'速动比率', '营业增长率', '总资产增长率', '技术投入比率']
periods = list(
pd.DataFrame(rating_input['财务填报']['资产负债表']).sort_values('报告期', ascending=False)['报告期'][0:2].values)
df_recent_2year = pd.DataFrame(self.db.find_single_data('综信评价数据', '财指结果', {'企业ID': rating_result['企业ID']},
search)).sort_values('年报期', ascending=False)[0:2]
df_recent_2year = pd.DataFrame(self.db.find_all_data('综信评价数据', '财指结果', {'企业ID': rating_result['企业ID']},
search)).sort_values('年报期', ascending=False)[0:2]
df_this = df_recent_2year[0:1]
df_last = df_recent_2year[1:2]
data_last = list(json.loads(df_last[['净资产收益率', '存货周转率', '已获利息倍数', '应收账款周转率', '总资产周转率', '总资产增长率', '总资产报酬率',
'技术投入比率', '营业增长率', '资产负债率', '速动比率']].T.to_json()).values())
url = "http://api.fecribd.com/tfse_rating/rating/financial_score"
headers = {'token': "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5", "content-type": "application/json"}
data = {"财务指标": data_last, "所属行业": industry}
score_last_origin = json.loads(requests.post(url=url, headers=headers, data=json.dumps(data)).text)[
'result']
score_avg = {
"盈利能力": 8,
"资产质量": 9,
"债务风险": 9,
"经营增长": 9
}
score_actl = {
"盈利能力": rating_result['财务评分']['盈利能力']['合计'],
"资产质量": rating_result['财务评分']['资产质量']['合计'],
"债务风险": rating_result['财务评分']['债务风险']['合计'],
"经营增长": rating_result['财务评分']['经营增长']['合计']
}
score_last = {
"盈利能力": score_last_origin['盈利能力']['合计'],
"资产质量": score_last_origin['资产质量']['合计'],
"债务风险": score_last_origin['债务风险']['合计'],
"经营增长": score_last_origin['经营增长']['合计']
}
df = pd.DataFrame({'今年值': score_actl, '去年值': score_last, "平均值": score_avg})
def result_head():
"""基本信息"""
self.cid = rating_result['企业ID']
@ -461,7 +488,96 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
def compare_to_year():
"""财务得分年度比较"""
self.compare_to_years = list()
def score_actl_script():
"""今年财务得分"""
compare = self.CompareToYears()
score_index = compare.FinancialScoreIndex()
score_index.profitability = rating_result['财务评分']['盈利能力']['合计']
score_index.asset_quality = rating_result['财务评分']['资产质量']['合计']
score_index.debt_risk = rating_result['财务评分']['债务风险']['合计']
score_index.business_growth = rating_result['财务评分']['经营增长']['合计']
compare.year = df_this['年报期'][0]
compare.index = score_index.dict_to_save()
self.compare_to_years.append(compare.dict_to_save())
def score_last_script():
"""去年财务得分"""
compare = self.CompareToYears()
score_index = compare.FinancialScoreIndex()
score_index.profitability = score_last_origin['盈利能力']['合计']
score_index.asset_quality = score_last_origin['资产质量']['合计']
score_index.debt_risk = score_last_origin['债务风险']['合计']
score_index.business_growth = score_last_origin['经营增长']['合计']
compare.year = df_last['年报期'][1]
compare.index = score_index.dict_to_save()
self.compare_to_years.append(compare.dict_to_save())
score_actl_script()
score_last_script()
def compare_to_industry():
"""财务得分同行比较"""
compare_industry = self.CompareToIndustry()
def company_level():
"""公司水平"""
company = compare_industry.CompanyScore()
company.profitability = rating_result['财务评分']['盈利能力']['合计']
company.asset_quality = rating_result['财务评分']['资产质量']['合计']
company.debt_risk = rating_result['财务评分']['债务风险']['合计']
company.business_growth = rating_result['财务评分']['经营增长']['合计']
compare_industry.company_score = company
def average_level():
"""平均水平"""
average = compare_industry.AverageScore()
average.profitability = 8
average.asset_quality = 9
average.debt_risk = 9
average.business_growth = 9
compare_industry.average_score = average
company_level()
average_level()
def delta_to_year():
"""财务得分较去年变化"""
delat_data = json.loads((df['今年值']/df['去年值']-1).apply(lambda x: '{}%'.format(round(x*100, 2))).T.to_json())
delat = self.DeltaToYears()
delat.profitability = delat_data['盈利能力']
delat.asset_quality = delat_data['资产质量']
delat.debt_risk = delat_data['债务风险']
delat.business_growth = delat_data['经营增长']
self.delta_to_years = delat
def delta_to_industry():
"""财务扽分交同行差异"""
delat_data = json.loads((df['今年值']/df['平均值']-1).apply(lambda x: '{}%'.format(round(x * 100, 2))).T.to_json())
delat = self.DeltaToIndustry()
delat.profitability = delat_data['盈利能力']
delat.asset_quality = delat_data['资产质量']
delat.debt_risk = delat_data['债务风险']
delat.business_growth = delat_data['经营增长']
self.delta_to_industry = delat
def _main_():
result_head()
index_detail()
compare_to_year()
compare_to_industry()
delta_to_year()
delta_to_industry()
result = self.dict_to_save()
self.db.upsert_single_data(
'企业数据',
'财务要素分析',
{"评价ID": self.rid},
result
)
_main_()
class BusinessAnalysisImpl(BusinessElementsAnalysis):

View File

@ -381,7 +381,7 @@ class FinancialElementsAnalysis(SpecObject):
class CompareToYears(SpecObject):
"""财务得分年度比较"""
class FinancialAnalysisIndex(SpecObject):
class FinancialScoreIndex(SpecObject):
"""指标"""
profitability = ValidateAttr(field='profitability', type=(int, float))
asset_quality = ValidateAttr(field='asset_quality', type=(int, float))
@ -396,7 +396,7 @@ class FinancialElementsAnalysis(SpecObject):
}
year = ValidateAttr(field='year', type=str, func=Validate.date_format)
index = ValidateAttr(field='index', instance_list=FinancialAnalysisIndex)
index = ValidateAttr(field='index', type=FinancialScoreIndex)
fields_map = {
"year": "年度",
@ -486,7 +486,7 @@ class FinancialElementsAnalysis(SpecObject):
update_time = ValidateAttr(field='update_time', func=Validate.time_format)
rid = ValidateAttr(field='rid', type=str, length=8)
report_date = ValidateAttr(field='report_date', type=str, func=Validate.date_format)
compare_to_years = ValidateAttr(field='compare_to_years', length=2, type=CompareToYears)
compare_to_years = ValidateAttr(field='compare_to_years', length=2, instance_list=CompareToYears)
compare_to_industry = ValidateAttr(field='compare_to_industry', type=CompareToIndustry)
delta_to_years = ValidateAttr(field='delta_to_years', type=DeltaToYears)
delta_to_industry = ValidateAttr(field='delta_to_industry', type=DeltaToIndustry)

View File

@ -44,12 +44,13 @@ def general_rating():
-
"""
try:
credit_analysis = CreditAnalysisImpl()
credit_analysis.rid = request.json['rid']
credit_analysis.cc_rating_etl()
# credit_analysis = CreditAnalysisImpl()
# credit_analysis.rid = request.json['rid']
# credit_analysis.cc_rating_etl()
financial_analysis = FinancialAnalysisImpl()
financial_analysis.rid = request.json['rid']
financial_analysis.financial_analysis_etl()
company_index.risk_analysis_etl()
# company_index.risk_analysis_etl()
return {"info": "数据准备完成"}, 200
except ReturnConditionCheckFailed as e:
e.log_error()