summaryrefslogtreecommitdiff
path: root/src/teradata/__main__.py
blob: d439b35b8c1bdb022403b890c61d3c1c6cdfeb07 (plain)
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()