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()