diff options
| author | Mikka Petterson <m.petterson@student.maastrichtuniversity.nl> | 2026-10-14 07:45:20 +0200 |
|---|---|---|
| committer | Mikka Petterson <m.petterson@student.maastrichtuniversity.nl> | 2026-10-14 07:45:20 +0200 |
| commit | 0bcc5be35b6a99109bd04925c22890347c9d6e88 (patch) | |
| tree | fdd88728ad1747268b0a02aba0de08a3af6a52b2 /src/teradata/__main__.py | |
Diffstat (limited to 'src/teradata/__main__.py')
| -rw-r--r-- | src/teradata/__main__.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/teradata/__main__.py b/src/teradata/__main__.py new file mode 100644 index 0000000..d439b35 --- /dev/null +++ b/src/teradata/__main__.py @@ -0,0 +1,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() |
