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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
from os import getenv
from edgar import set_identity
lazy from dotenv import load_dotenv
lazy from loguru import logger
from .picklers import register
lazy from .isolated import isolated
lazy from .plots import (
plot_all_tickers,
plot_assets_and_roa,
plot_earnings_reaction,
plot_eps,
plot_revenue_and_profitability,
plot_stock_price,
plot_tdc_vs_nasdaq,
plot_valuation_comparison,
)
lazy from .sec import get_financials, get_periodic_filing_dates
lazy from .stock import Tickers, get_stock_data, get_valuation_snapshot
lazy from .svg import split_all_svgs
def main() -> None:
# Revenue/Income/Cloud ARR, Assets/ROA, EPS
logger.info("Plotting Revenue/Income/Cloud ARR, Assets/ROA and EPS...")
with isolated() as env:
env.financials = get_financials("TDC", start="2011-01-01")
plot_revenue_and_profitability(env.financials)
plot_assets_and_roa(env.financials)
plot_eps(env.financials)
# TDC vs ^IXIC
logger.info("Plotting TDC vs ^IXIC...")
with isolated() as env:
env.tickers = get_stock_data(
["TDC", "^IXIC"],
start="2007-10-01",
)
env.tickers = Tickers(env.tickers["Close"].dropna())
plot_tdc_vs_nasdaq(env.tickers.cumulative_returns)
# All tickers
logger.info("Plotting all tickers...")
with isolated() as env:
env.tickers = get_stock_data(
["TDC", "^IXIC", "^NDX", "IYW", "THNQ", "SNOW"],
start="2007-10-01", # 2023-01-01
)
env.tickers = Tickers(env.tickers["Close"].dropna())
# plot_tdc_vs_nasdaq(env.tickers.cumulative_returns)
plot_all_tickers(env.tickers.normalized)
# TDC Ticker since IPO
logger.info("Plotting TDC stock market price since IPO...")
with isolated() as env:
env.tickers = get_stock_data(["TDC"], start="2007-10-01").xs(
"TDC", level=1, axis=1
)
plot_stock_price(
env.tickers, ticker="TDC", sma_windows=(50, 200), show_open=False
)
# Market Reaction since SEC reform (2011)
logger.info("Plotting TDC market reaction since SEC reform...")
with isolated() as env:
env.tickers = get_stock_data(["TDC"], start="2011-01-01").xs(
"TDC", level=1, axis=1
)
env.filings = get_periodic_filing_dates("TDC", start="2011-01-01")
plot_earnings_reaction(
env.tickers, env.filings, ticker="TDC", reaction_window_days=3
)
logger.info("Plotting TDC vs. SNOW")
with isolated() as env:
env.tdc = get_valuation_snapshot("TDC")
env.snow = get_valuation_snapshot("SNOW")
plot_valuation_comparison(env.tdc, env.snow)
logger.info("Splitting all SVGs into a data and outline layer...")
split_all_svgs()
if __name__ == "__main__":
load_dotenv()
register()
identity = getenv("SEC_EDGAR_IDENTITY")
if identity is None:
raise ValueError("Environment variable 'SEC_EDGAR_IDENTITY' is not set")
set_identity(identity)
main()
|