-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
69 lines (46 loc) · 1.54 KB
/
main.py
File metadata and controls
69 lines (46 loc) · 1.54 KB
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
import yaml
from src.financial_model.revenue_model import RevenueModel
from src.valuation.dcf_model import DCFModel
from src.reporting.report_generator import ReportGenerator
from src.reporting.pdf_exporter import PDFExporter
def load_config():
with open("config/config.yaml", "r") as f:
return yaml.safe_load(f)
def run_pipeline():
config = load_config()
revenue_model = RevenueModel(
base_revenue=100,
growth_rate=config["forecast"]["revenue_growth"],
years=config["forecast"]["years"]
)
revenue_forecast = revenue_model.forecast()
fcff = [r * 0.15 for r in revenue_forecast]
dcf = DCFModel(
fcff,
config["valuation"]["wacc"],
config["valuation"]["terminal_growth"]
)
enterprise_value = dcf.compute_enterprise_value()
equity_value = enterprise_value * 0.8
price_target = equity_value / 100
# Generate report
report = ReportGenerator()
report.add_company_overview(
config["company"]["name"],
config["company"]["industry"],
"Automated research pipeline valuation."
)
report.add_financial_summary(
revenue=revenue_forecast,
ebitda=[r * 0.25 for r in revenue_forecast],
net_income=[r * 0.12 for r in revenue_forecast]
)
report.add_dcf_valuation(
enterprise_value,
equity_value,
price_target
)
report_data = report.generate()
PDFExporter().export(report_data, config["output"]["report_file"])
if __name__ == "__main__":
run_pipeline()