forked from MetaGLM/FinGLM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen_formulas.py
71 lines (67 loc) · 3.62 KB
/
gen_formulas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import re
formulas = """
研发经费与利润比值=研发费用/净利润,0
研发经费与利润的比值=研发费用/净利润,0
研发经费与营业收入比值=研发费用/营业收入,0
研发人员占职工人数比例=研发人员数/职工总数,0
研发人员占职工人数的比例=研发人员数/职工总数,0
流动比率=流动资产合计/流动负债合计,0
速动比率=(流动资产合计-存货)/流动负债合计,0
硕士及以上人员占职工人数比例=(硕士人数 + 博士及以上人数)/职工总数,0
研发经费占费用比例=研发费用/(销售费用+财务费用+管理费用+研发费用),0
研发经费占费用的比例=研发费用/(销售费用+财务费用+管理费用+研发费用),0
营业利润率=营业利润/营业收入,1
资产负债比率=负债合计/资产总计,1
现金比率=货币资金/流动负债合计,1
非流动负债比率=非流动负债合计/负债合计,1
流动负债比率=流动负债合计/负债合计,1
净资产收益率=净利润/所有者权益合计,1
净利润率=净利润/营业收入,1
营业成本率=营业成本/营业收入,1
管理费用率=管理费用/营业收入,1
财务费用率=财务费用/营业收入,1
毛利率=(营业收入-营业成本)/营业收入,1
净资产增长率=(所有者权益合计-上年所有者权益合计)/上年所有者权益合计,1
三费比重=(销售费用+管理费用+财务费用)/营业收入,1
投资收益占营业收入比率=投资收益/营业收入,1
销售费用增长率=(销售费用-上年销售费用)/上年销售费用,1
财务费用增长率=(财务费用-上年财务费用)/上年财务费用,1
管理费用增长率=(管理费用-上年管理费用)/上年管理费用,1
研发费用增长率=(研发费用-上年研发费用)/上年研发费用,1
总负债增长率=(负债合计-上年负债合计)/上年负债合计,1
流动负债增长率=(流动负债合计-上年流动负债合计)/上年流动负债合计,1
货币资金增长率=(货币资金-上年货币资金)/上年货币资金,1
固定资产增长率=(固定资产-上年固定资产)/上年固定资产,1
无形资产增长率=(无形资产-上年无形资产)/上年无形资产,1
总资产增长率=(资产总计-上年资产总计)/上年资产总计,1
营业收入增长率=(营业收入-上年营业收入)/上年营业收入,1
营业利润增长率=(营业利润-上年营业利润)/上年营业利润,1
净利润增长率=(净利润-上年净利润)/上年净利润,1
现金及现金等价物增长率=(期末现金及现金等价物余额-上年期末现金及现金等价物余额)/上年期末现金及现金等价物余额,1
投资收益增长率=(投资收益-上年投资收益)/上年投资收益,1
每股收益=净利润/股份总数,0
每股净资产=所有者权益合计/股份总数,0
每股经营现金流量=经营活动产生的现金流量净额/股份总数,0
"""
for line in formulas.split("\n"):
if not line:
continue
formula, is_percent = line.split(",")
formula = formula.replace(" ", "").strip()
subs = [i for i in re.split("[=/()+-]", formula) if i != ""]
used_subs = set()
dic = {}
dic["target"] = subs[0]
dic["sub"] = []
for sub in subs[1:]:
if sub not in used_subs:
dic["sub"].append(sub)
used_subs.add(sub)
dic["sub"] = sorted(dic["sub"], key=lambda x: len(x), reverse=True)
dic["raw_formula"] = formula.split("=")[1]
dic["is_percent"] = bool(int(is_percent))
# sign_formula = dic["raw_formula"]
# for k in dic["sub"]:
# sign_formula = sign_formula.replace(k, f"v['{k}']")
# dic["sign_formula"] = sign_formula
print(str(dic) + ",")