(26-5-03)基于OpenAI和LangChain的上市公司估值系统:定量分析(Quantitative Analysis)(3)计算估值

10.5.4  计算估值

(1)在本项目中,分别使用了基于股息和自由现金流的方法计算股票的估值。针对不同情景(正常和经济衰退),分别进行了计算。通过这些计算,可以帮助投资者评估股票的合理价格,并制定相应的投资策略。

    dict_values_for_bi = {}

    stock_value_div_ttm_fixed = dividends_valuation(EARNINGS_TTM, GROWTH_FIXED, cagr, growth_eps_5y, growth_5y,
                                                    riskfree, industry_payout, cost_of_equity,
                                                    target_cost_of_equity, growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_div_norm_fixed = dividends_valuation(EARNINGS_NORM, GROWTH_FIXED, cagr, growth_eps_5y, growth_5y,
                                                     riskfree, industry_payout, cost_of_equity,
                                                     target_cost_of_equity, growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_div_ttm_ttm = dividends_valuation(EARNINGS_TTM, GROWTH_TTM, cagr, growth_eps_5y, growth_5y, riskfree,
                                                  industry_payout, cost_of_equity, target_cost_of_equity,
                                                  growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_div_norm_norm = dividends_valuation(EARNINGS_NORM, GROWTH_NORM, cagr, growth_eps_5y, growth_5y, riskfree,
                                                    industry_payout, cost_of_equity,
                                                    target_cost_of_equity, growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_div_ttm_fixed_recession = dividends_valuation(EARNINGS_TTM, GROWTH_FIXED, cagr, growth_eps_5y, growth_5y,
                                                    riskfree, industry_payout, cost_of_equity,
                                                    target_cost_of_equity, growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)
    stock_value_div_norm_fixed_recession = dividends_valuation(EARNINGS_NORM, GROWTH_FIXED, cagr, growth_eps_5y, growth_5y,
                                                     riskfree, industry_payout, cost_of_equity,
                                                     target_cost_of_equity, growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)
    stock_value_div_ttm_ttm_recession = dividends_valuation(EARNINGS_TTM, GROWTH_TTM, cagr, growth_eps_5y, growth_5y, riskfree,
                                                  industry_payout, cost_of_equity, target_cost_of_equity,
                                                  growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)
    stock_value_div_norm_norm_recession = dividends_valuation(EARNINGS_NORM, GROWTH_NORM, cagr, growth_eps_5y, growth_5y, riskfree,
                                                    industry_payout, cost_of_equity,
                                                    target_cost_of_equity, growth_eps_last, eps_5y, payout_5y, ttm_eps_adj,
                                                    reinvestment_eps_last, fx_rate, survival_prob, liquidation_per_share, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)

    stock_value_fcff_ttm_fixed = fcff_valuation(EARNINGS_TTM, GROWTH_FIXED, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                                target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                                debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                                target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                                liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_fcff_norm_fixed = fcff_valuation(EARNINGS_NORM, GROWTH_FIXED, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                                 target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                                 debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                                 target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                                 liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_fcff_ttm_ttm = fcff_valuation(EARNINGS_TTM, GROWTH_TTM, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                              target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                              debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                              target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                              liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_fcff_norm_norm = fcff_valuation(EARNINGS_NORM, GROWTH_NORM, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                                target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                                debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                                target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                                liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, dict_values_for_bi=dict_values_for_bi)
    stock_value_fcff_ttm_fixed_recession = fcff_valuation(EARNINGS_TTM, GROWTH_FIXED, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                                          target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                                          debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                                          target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                                          liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)
    stock_value_fcff_norm_fixed_recession = fcff_valuation(EARNINGS_NORM, GROWTH_FIXED, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                                           target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                                           debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                                           target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                                           liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)
    stock_value_fcff_ttm_ttm_recession = fcff_valuation(EARNINGS_TTM, GROWTH_TTM, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                                        target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                                        debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                                        target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                                        liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)
    stock_value_fcff_norm_norm_recession = fcff_valuation(EARNINGS_NORM, GROWTH_NORM, cagr, riskfree, ttm_revenue, ttm_ebit_adj,
                                                          target_operating_margin, mr_tax_benefits, tax_rate, sales_capital_5y, target_sales_capital,
                                                          debt_equity, target_debt_equity, unlevered_beta, final_erp, cost_of_debt,
                                                          target_cost_of_debt, mr_cash, mr_securities, debt_mkt, mr_minority_interest, survival_prob, mr_shares,
                                                          liquidation_value, growth_last, growth_5y, revenue_5y, ebit_5y, fx_rate, mr_property, mr_sbc, debug=debug, recession=True, dict_values_for_bi=dict_values_for_bi)

执行后会会输出:

===== Dividends Valuation - EARNINGS_TTM + GROWTH_FIXED + recession:False =====
expected_growth [0.1074 0.101  0.0946 0.0881 0.0817 0.0753 0.0689 0.0625 0.0561 0.0497

 0.0433]

earnings_per_share [6.0673, 6.6799, 7.3116, 7.9561, 8.6064, 9.2546, 9.8924, 10.5106, 11.1, 11.6513, 12.1552]

payout_ratio [0.0867 0.1734 0.2601 0.3468 0.4335 0.5202 0.6069 0.6935 0.7802 0.8669

 0.9536]
###省略部分输出结果
cost_of_capital [0.13007303944488582, 0.1300431538207438, 0.13001336342016462, 0.1299836677887606, 0.1299540664750306, 0.12992455903033706, 0.12989514500888305, 0.12986582396769025, 0.12983659546657647, 0.12980745906813357, 0.12977841433770582]

cumulative WACC [1.130073039444886, 1.2770313015420927, 1.4430624362484106, 1.6306369845601636, 1.8425448916483385, 2.081936724189349, 2.3523701968772435, 2.6578626907717444, 3.002950533759182, 3.3927559122537567, 3.833062394780926]

present value [25761416.44331457, 24895720.67192729, 30371497.058220774, -5626645.969449993, -19044099.093171094, -20582665.42125352, 31225188.95732479, 32235887.09764502, 32526419.718413804, 32117106.30522833, 31061573.360930156]

terminal value 1317943752.34

PV of FCFF during growth 163879825.76819995

PV of terminal value 343835715.83

Value of operating assets 507715541.60016966

Value of cash and property 110880000.0
firm value 618595541.6

debt outstanding 23519939.49

equity value 592937602.12

stock value (price curr) 43.88

stock value (fin curr) 43.88

上面的输出结果展示了股息估值模型的计算结果,其中包括了预期增长率、每股收益、股息支付比率等参数。通过计算成本资本、现金流量贴现值、终端价值等指标,最终得出了公司的股票价值。在当前和财务调整后的情况下,计算结果显示了股票的合理价格为43.88美元。

(2)下面的这段代码计算了自由现金流(FCFF)和股利的估值期望值。首先,将不同情景下的FCFF和股利估值值组成列表,并设定了衰退概率。然后,通过对不同情景下的估值值进行加权平均,得到了FCFF和股利的估值期望值,从而更全面地考虑了衰退风险。

fcff_values_list = [stock_value_fcff_ttm_fixed, stock_value_fcff_norm_fixed, stock_value_fcff_ttm_ttm,
                       stock_value_fcff_norm_norm]
fcff_recession_values_list = [stock_value_fcff_ttm_fixed_recession, stock_value_fcff_norm_fixed_recession,
                                          stock_value_fcff_ttm_ttm_recession, stock_value_fcff_norm_norm_recession]
div_values_list = [stock_value_div_ttm_fixed, stock_value_div_norm_fixed, stock_value_div_ttm_ttm,
                   stock_value_div_norm_norm]
div_recession_values_list = [stock_value_div_ttm_fixed_recession, stock_value_div_norm_fixed_recession,
                                         stock_value_div_ttm_ttm_recession, stock_value_div_norm_norm_recession]

recession_probability = 0.5
fcff_value = summary_valuation(fcff_values_list)
fcff_recession_value = summary_valuation(fcff_recession_values_list)
ev_fcff = fcff_value * (1 - recession_probability) + fcff_recession_value * recession_probability
div_value = summary_valuation(div_values_list)
div_recession_value = summary_valuation(div_recession_values_list)
ev_dividends = div_value * (1 - recession_probability) + div_recession_value * recession_probability

(3)计算自由现金流(FCFF)和股利的估值差异,以及股票的清算价值与当前价格之间的差异。根据不同的情况进行了条件判断,如果估值值大于0,则计算出价格与估值之间的百分比差异;如果估值值小于等于0,则将差异值设置为10,这可能表示着一种异常情况。

fcff_delta = price_per_share / ev_fcff - 1 if fcff_value > 0 else 10
div_delta = price_per_share / ev_dividends - 1 if div_value > 0 else 10
liquidation_delta = price_per_share / liquidation_per_share - 1 if liquidation_per_share > 0 else 10

(4)请看下面的的代码,用于打印输出计算的估值数据,主要包括:

  1. FCFF值列表,包括四个不同情景下的FCFF值。
  2. 带有经济衰退情景的FCFF值列表。
  3. 股利值列表,包括四个不同情景下的股利值。
  4. 带有经济衰退情景的股利值列表。
  5. 每股价格。
  6. FCFF估值结果。
  7. FCFF偏差。
  8. 股利估值结果。
  9. 股利偏差。
print("FCFF values")
print([round(x, 2) for x in fcff_values_list])
print("\nFCFF values w/ Recession")
print([round(x, 2) for x in fcff_recession_values_list])
print("\n\nDiv values")
print([round(x, 2) for x in div_values_list])
print("\nDiv values w/ Recession")
print([round(x, 2) for x in div_recession_values_list])

print("\n\n\n")

print("Price per Share", price_per_share)
print("FCFF Result", ev_fcff)
print("FCFF Deviation", fcff_delta)
print("Dividends Result", ev_dividends)
print("Dividends Deviation", div_delta)

执行后会输出:

FCFF values
[59.31, 54.0, 75.09, 71.83]

FCFF values w/ Recession

[42.92, 39.34, 46.93, 43.88]

Div values

[49.63, 48.94, 79.39, 82.64]

Div values w/ Recession

[35.41, 34.92, 48.82, 49.95]

Price per Share 120.97

FCFF Result 54.48574881278017

FCFF Deviation 1.2202135904503764

Dividends Result 53.31465660538761

Dividends Deviation 1.2689820717662768

通过打印这些数值,可以更好地了解不同情景下的估值结果,并评估市场价格与估值之间的差异。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值