Exemplo n.º 1
0
    def test_upsert_new_ebit(self):
        current_date = "2019-03-30"
        stock_uri = "ab_inbev-Aktie"
        ebit = "0.32"
        lev_02_score = "1"

        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            database=cst.TEST_DATABASE,
            current_date=current_date,
            stock_uri=stock_uri,
            lev_02_val=ebit,
            lev_02_sco=lev_02_score,
        )

        self.assertEqual(
            ebit,
            str(
                db.get_item(
                    table=cst.TABLE_LEVERMANN,
                    column=cst.COLUMN_LEV02_VALUE,
                    condition=[cst.COLUMN_DATE, "2019-03-30"],
                    database=cst.TEST_DATABASE,
                )),
        )
Exemplo n.º 2
0
def write_stock_estimates_data_to_db():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    file_list = [
        cst.PATH_STOCK_ESTIMATES + stock[:-6] + cst.HTML_EXTENSION
        for stock in stock_list
    ]
    for file in file_list:
        stock_uri = file.split("/")[-1][:-5] + "-Aktie"
        stock_estimate_soup = scrap.get_soup_code_from_file(file)

        if stock_estimate_soup is None:
            logger.warning(
                "Write Stock Estimate Data to DB: Soup is None for %s" %
                str(file))
            continue

        try:
            eps_0, eps_p1 = parse.get_result_per_share_current_and_next_year(
                stock_estimate_soup)

            db.upsert_item(
                table=cst.TABLE_COMPANY_DATA,
                primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
                current_date=date.get_current_date(),
                stock_uri=stock_uri,
                eps_0=eps_0,
                eps_p1=eps_p1)
        except:
            logger.exception(
                "Write Stock Estimate Data to DB: Exception for stock: %s" %
                stock_uri)
Exemplo n.º 3
0
    def test_upsert_new_kgv5(self):
        current_date = "2019-03-30"
        stock_uri = "ab_inbev-Aktie"
        kgv5 = "24.91"
        lev_04_score = "-1"

        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            database=cst.TEST_DATABASE,
            current_date=current_date,
            stock_uri=stock_uri,
            lev_04_val=kgv5,
            lev_04_sco=lev_04_score,
        )

        self.assertEqual(
            kgv5,
            str(
                db.get_item(
                    table=cst.TABLE_LEVERMANN,
                    column=cst.COLUMN_LEV04_VALUE,
                    condition=[cst.COLUMN_DATE, "2019-03-30"],
                    database=cst.TEST_DATABASE,
                )),
        )
Exemplo n.º 4
0
def write_stock_last_quarterly_figures_date_to_db():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    file_list = [
        cst.PATH_STOCK_DATES + stock[:-6] + cst.HTML_EXTENSION
        for stock in stock_list
    ]
    for file in file_list:
        stock_uri = file.split("/")[-1][:-5] + "-Aktie"
        stock_targets_soup = scrap.get_soup_code_from_file(file)

        if stock_targets_soup is None:
            logger.warning(
                "Write Stock Quaterlyfigures Data to DB: Soup is None for %s" %
                str(file))
            continue
        try:
            last_figures_date = parse.get_last_quarterly_figures_date(
                stock_targets_soup)
            if last_figures_date is None:
                continue
            else:
                # db.write_single_stock_dates_data_to_db(stock_uri, last_figures_date)
                db.upsert_item(
                    table=cst.TABLE_STOCK_DATES,
                    primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
                    current_date=last_figures_date,
                    quarterly="Quarterly/Yearly",
                )

        except:
            logger.exception(
                "Write Stock Quaterly Data to DB: Exception for stock: %s" %
                stock_uri)
Exemplo n.º 5
0
def write_stock_targets_data_to_db():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    file_list = [
        cst.PATH_STOCK_TARGETS + stock[:-6] + cst.HTML_EXTENSION
        for stock in stock_list
    ]
    for file in file_list:
        stock_uri = file.split("/")[-1][:-5] + "-Aktie"
        stock_targets_soup = scrap.get_soup_code_from_file(file)

        if stock_targets_soup is None:
            logger.warning(
                "Write Stock Targets Data to DB: Soup is None for %s" %
                str(file))
            continue

        try:
            buy, hold, sell = parse.get_analyst_ratings(stock_targets_soup)
            db.upsert_item(
                table=cst.TABLE_COMPANY_DATA,
                primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
                current_date=date.get_current_date(),
                stock_uri=stock_uri,
                analyst_buy=buy,
                analyst_hold=hold,
                analyst_sell=sell,
            )

        except:
            logger.exception(
                "Write Stock Targets Data to DB: Exception for stock: %s" %
                stock_uri)
Exemplo n.º 6
0
    def test_upsert_existing_single_balance_data_to_db(self):
        current_date = "2019-03-09"
        stock_uri = "ab_inbev-Aktie"
        equity_capital = 121541.00
        earnings_at = 3702.48
        operative_result = 14520.88

        db.upsert_item(
            table=cst.TABLE_COMPANY_DATA,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            database=cst.TEST_DATABASE,
            current_date=current_date,
            stock_uri=stock_uri,
            equity_capital=equity_capital,
            earnings_after_tax=earnings_at,
            operative_result=operative_result,
        )

        self.assertEqual(
            "3702.48",
            str(
                db.get_item(
                    table=cst.TABLE_COMPANY_DATA,
                    column=cst.COLUMN_EARNINGS_AT,
                    condition=[cst.COLUMN_EQUITY_CAPITAL, 121541.00],
                    database=cst.TEST_DATABASE,
                )),
        )
Exemplo n.º 7
0
    def test_upsert_existing_roe(self):
        current_date = "2019-03-23"
        stock_uri = "ab_inbev-Aktie"
        return_on_equity = "0.08"
        lev_01_score = "-1"

        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            database=cst.TEST_DATABASE,
            current_date=current_date,
            stock_uri=stock_uri,
            lev_01_val=return_on_equity,
            lev_01_sco=lev_01_score,
        )

        self.assertEqual(
            return_on_equity,
            str(
                db.get_item(
                    table=cst.TABLE_LEVERMANN,
                    column=cst.COLUMN_LEV01_VALUE,
                    condition=[cst.COLUMN_DATE, "2019-03-23"],
                    database=cst.TEST_DATABASE,
                )),
        )
Exemplo n.º 8
0
def write_stock_balance_data_to_db():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    file_list = [
        cst.PATH_STOCK_BALANCE + stock[:-6] + cst.HTML_EXTENSION
        for stock in stock_list
    ]
    for file in file_list:
        stock_uri = file.split("/")[-1][:-5] + "-Aktie"
        stock_balance_soup = scrap.get_soup_code_from_file(file)

        if stock_balance_soup is None:
            logger.warning(
                "Write Stock Balance Data to DB: Soup is None for %s" %
                str(file))
            continue

        if not parse.is_data_available(stock_balance_soup):
            logger.warning(
                "Write Stock Balance Data to DB: No Data Available for %s" %
                str(file))
            continue

        try:
            earnings_after_tax = parse.get_current_value_of_attribute(
                stock_balance_soup, cst.TEXT_RESULT_AFTER_TAX)
            operative_result = parse.get_current_value_of_attribute(
                stock_balance_soup, cst.TEXT_OPERATIVE_RESULT)
            sales_revenue = parse.get_current_value_of_attribute(
                stock_balance_soup, cst.TEXT_SALES_REVENUE)
            balance = parse.get_current_value_of_attribute(
                stock_balance_soup, cst.TEXT_BALANCE)
            equity_capital = parse.get_current_value_of_attribute(
                stock_balance_soup, cst.TEXT_EQUITY_CAPITAL)
            eps_m3, eps_m2, eps_m1 = parse.get_result_per_share_last_three_years(
                stock_balance_soup)

            db.upsert_item(
                table=cst.TABLE_COMPANY_DATA,
                primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
                current_date=date.get_current_date(),
                stock_uri=stock_uri,
                equity_capital=equity_capital,
                earnings_after_tax=earnings_after_tax,
                operative_result=operative_result,
                sales_revenue=sales_revenue,
                balance=balance,
                eps_m3=eps_m3,
                eps_m2=eps_m2,
                eps_m1=eps_m1)

        except:
            logger.exception(
                "Write Stock Balance Data to DB: Exception for stock: %s" %
                stock_uri)
            continue
Exemplo n.º 9
0
def levermann_03():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    for stock in stock_list:

        # equity_capital = db.get_equity_capital(stock)
        equity_capital = db.get_item(
            table=cst.TABLE_COMPANY_DATA,
            column=cst.COLUMN_EQUITY_CAPITAL,
            condition=[cst.COLUMN_STOCK_URI, stock],
            order=[cst.COLUMN_DATE, cst.DESC],
        )

        # balance = db.get_balance(stock)
        balance = db.get_item(
            table=cst.TABLE_COMPANY_DATA,
            column=cst.COLUMN_BALANCE,
            condition=[cst.COLUMN_STOCK_URI, stock],
            order=[cst.COLUMN_DATE, cst.DESC],
        )

        if equity_capital is None or balance is None or balance == 0:
            logger.info(
                "Calculate Lev03: Equity Capital or Balance is None or 0 for stock: %s"
                % stock)
            continue

        equity_ratio = round(equity_capital / balance, 2)

        if db.check_is_financial_company(stock):
            if equity_ratio > 0.10:
                lev_03_score = 1
            elif equity_ratio < 0.05:
                lev_03_score = -1
            else:
                lev_03_score = 0
        else:
            if equity_ratio > 0.25:
                lev_03_score = 1
            elif equity_ratio < 0.15:
                lev_03_score = -1
            else:
                lev_03_score = 0

        # db.save_equity_ratio_to_db(stock, equity_ratio, lev_03_score)
        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            current_date=date.get_current_date(),
            stock_uri=stock,
            lev_03_val=equity_ratio,
            lev_03_sco=lev_03_score,
        )
Exemplo n.º 10
0
def levermann_02():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    for stock in stock_list:

        # operative_result = db.get_operative_result(stock)
        operative_result = db.get_item(
            table=cst.TABLE_COMPANY_DATA,
            column=cst.COLUMN_OPERATIVE_RESULT,
            condition=[cst.COLUMN_STOCK_URI, stock],
            order=[cst.COLUMN_DATE, cst.DESC],
        )

        # sales_revenue = db.get_sales_revenue(stock)
        sales_revenue = db.get_item(
            table=cst.TABLE_COMPANY_DATA,
            column=cst.COLUMN_SALES_REVENUE,
            condition=[cst.COLUMN_STOCK_URI, stock],
            order=[cst.COLUMN_DATE, cst.DESC],
        )

        if operative_result is None or sales_revenue is None or sales_revenue == 0:
            logger.info(
                "Calculate Lev02: Operative Result or Sales Revenue is None for stock: %s"
                % stock)
            continue

        ebit = round(operative_result / sales_revenue, 2)

        if db.check_is_financial_company(stock):
            logger.info("Calculate Lev02: %s is financial Stock" % stock)
            ebit = 0
            lev_02_score = 0
        else:
            if ebit > 0.12:
                lev_02_score = 1
            elif ebit < 0.06:
                lev_02_score = -1
            else:
                lev_02_score = 0

        # db.save_ebit_to_db(stock, ebit, lev_02_score)
        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            current_date=date.get_current_date(),
            stock_uri=stock,
            lev_02_val=ebit,
            lev_02_sco=lev_02_score,
        )
Exemplo n.º 11
0
def levermann_06():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    for stock in stock_list:
        ratings = db.get_analyst_ratings(stock)
        if ratings is None:
            logger.info("Calculate Lev06: Rating is None for stock: %s" %
                        stock)
            continue
        rating_count = sum(ratings)

        if rating_count == 0:
            logger.info("Calculate Lev06: Zero Rating for stock: %s" % stock)
            rating = 0
            lev_06_score = 0
        else:
            rating = (1 * ratings[0] + 2 * ratings[1] +
                      3 * ratings[2]) / rating_count
            is_small_cap = db.is_small_cap(stock)

            if is_small_cap and 0 < rating_count <= 5 and 1.0 <= rating <= 1.5:
                lev_06_score = 1
            elif is_small_cap and 0 < rating_count <= 5 and 1.5 < rating < 2.5:
                lev_06_score = 0
            elif is_small_cap and 0 < rating_count <= 5 and 2.5 <= rating <= 3.0:
                lev_06_score = -1

            elif 1.0 <= rating <= 1.5:
                lev_06_score = -1
            elif 1.5 < rating < 2.5:
                lev_06_score = 0
            elif 2.5 <= rating <= 3.0:
                lev_06_score = 1

            else:
                lev_06_score = 5

        # db.save_rating_to_db(stock, round(rating, 2), lev_06_score)
        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            current_date=date.get_current_date(),
            stock_uri=stock,
            lev_06_val=round(rating, 2),
            lev_06_sco=lev_06_score,
        )
Exemplo n.º 12
0
    def test_upsert_new_targets(self):
        current_date = "2019-03-09"
        stock_uri = "ab_inbev-Aktie"
        buy, hold, sell = 7, 1, 0

        db.upsert_item(
            table=cst.TABLE_COMPANY_DATA,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            stock_uri=stock_uri,
            current_date=current_date,
            analyst_buy=buy,
            analyst_hold=hold,
            analyst_sell=sell,
            database=cst.TEST_DATABASE,
        )

        self.assertEqual(
            buy,
            db.get_item(
                table=cst.TABLE_COMPANY_DATA,
                column=cst.COLUMN_ANALYST_BUY,
                condition=[cst.COLUMN_DATE, "2019-03-09"],
                database=cst.TEST_DATABASE,
            ),
        )

        self.assertEqual(
            hold,
            db.get_item(
                table=cst.TABLE_COMPANY_DATA,
                column=cst.COLUMN_ANALYST_HOLD,
                condition=[cst.COLUMN_DATE, "2019-03-09"],
                database=cst.TEST_DATABASE,
            ),
        )

        self.assertEqual(
            sell,
            db.get_item(
                table=cst.TABLE_COMPANY_DATA,
                column=cst.COLUMN_ANALYST_SELL,
                condition=[cst.COLUMN_DATE, "2019-03-09"],
                database=cst.TEST_DATABASE,
            ),
        )
Exemplo n.º 13
0
def levermann_01():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    for stock in stock_list:

        # earnings_before_tax = db.get_earnings_after_tax(stock)
        earnings_before_tax = db.get_item(
            table=cst.TABLE_COMPANY_DATA,
            column=cst.COLUMN_EARNINGS_AT,
            condition=[cst.COLUMN_STOCK_URI, stock],
            order=[cst.COLUMN_DATE, cst.DESC],
        )

        # equity_capital = db.get_equity_capital(stock)
        equity_capital = db.get_item(
            table=cst.TABLE_COMPANY_DATA,
            column=cst.COLUMN_EQUITY_CAPITAL,
            condition=[cst.COLUMN_STOCK_URI, stock],
            order=[cst.COLUMN_DATE, cst.DESC],
        )

        if earnings_before_tax is None or equity_capital is None or equity_capital == 0:
            logger.info(
                "Calculate Lev01: Earnings before Tax or Equity Capital is None for stock: %s"
                % stock)
            continue

        return_on_equity = round(earnings_before_tax / equity_capital, 2)

        if return_on_equity > 0.2:
            lev_01_score = 1
        elif return_on_equity < 0.1:
            lev_01_score = -1
        else:
            lev_01_score = 0

        # db.save_roe_to_db(stock, return_on_equity, lev_01_score)
        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            current_date=date.get_current_date(),
            stock_uri=stock,
            lev_01_val=return_on_equity,
            lev_01_sco=lev_01_score,
        )
Exemplo n.º 14
0
def write_stock_overview_data_to_db():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    file_list = [
        cst.PATH_STOCK_OVERVIEW + stock + cst.HTML_EXTENSION
        for stock in stock_list
    ]
    for file in file_list:
        stock_uri = file.split("/")[-1][:-5]
        stock_overview_soup = scrap.get_soup_code_from_file(file)
        if stock_overview_soup is None:
            logger.warning(
                "Write Stock Overview Data to DB: Stock Overview Soup is None for %s"
                % str(file))
            continue

        market_cap = parse.get_market_cap(stock_overview_soup)
        if market_cap is None:
            logger.warning(
                "Write Stock Overview Data to DB: Market Cap is None for %s" %
                str(file))
            market_cap = -1.00

        stock_indices = str(parse.get_listed_indizes(stock_overview_soup))
        stock_sectors = str(parse.get_sectors(stock_overview_soup))
        market_place = parse.get_market_place(stock_overview_soup)

        db.upsert_item(table=cst.TABLE_COMPANY_DATA,
                       primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
                       stock_uri=stock_uri,
                       market_cap=market_cap,
                       current_date=date.get_current_date(),
                       stock_indices=stock_indices,
                       stock_sectors=stock_sectors)

        db.update_item(table=cst.TABLE_STOCKS,
                       primary_keys=cst.COLUMN_URI,
                       uri=stock_uri,
                       market_place=market_place)

        stock_history_list = parse.get_historic_stock_prices_from_overview(
            stock_overview_soup)
        if stock_history_list is not None:
            db.write_stock_overview_history_to_db(stock_history_list,
                                                  stock_uri)
Exemplo n.º 15
0
    def test_upsert_new_single_balance_data_to_db(self):
        current_date = "2019-03-23"
        stock_uri = "coca-cola-Aktie"
        earnings_at = 6434.00
        operative_result = 9652.00
        sales_revenue = 31697.00
        balance = 83216.00
        equity_capital = 19058.00
        eps_m3 = 1.51
        eps_m2 = 0.29
        eps_m1 = 1.51

        db.upsert_item(
            table=cst.TABLE_COMPANY_DATA,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            database=cst.TEST_DATABASE,
            current_date=current_date,
            stock_uri=stock_uri,
            earnings_after_tax=earnings_at,
            operative_result=operative_result,
            sales_revenue=sales_revenue,
            balance=balance,
            equity_capital=equity_capital,
            eps_m3=eps_m3,
            eps_m2=eps_m2,
            eps_m1=eps_m1,
        )

        self.assertEqual(
            "1.51",
            str(
                db.get_item(
                    table=cst.TABLE_COMPANY_DATA,
                    column=cst.COLUMN_EPS_M3,
                    condition=[cst.COLUMN_STOCK_URI, "coca-cola-Aktie"],
                    database=cst.TEST_DATABASE,
                )),
        )
Exemplo n.º 16
0
    def test_upsert_existing_single_overview_data_to_db(self):
        stock_uri = "bechtle-Aktie"
        market_cap = "3230.00"
        current_date = "2019-03-16"
        stock_indices = ["TecDAX", "MDAX", "Prime All Share"]

        stock_sectors = [
            "IT-Dienstleister",
            "IT-Beratung Hardware",
            "Dienstleistungen",
            "Internethandel (B2B, B2C)",
            "Informationstechnologie",
        ]

        db.upsert_item(
            table=cst.TABLE_COMPANY_DATA,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            database=cst.TEST_DATABASE,
            stock_uri=stock_uri,
            market_cap=market_cap,
            current_date=current_date,
            stock_indices=str(stock_indices),
            stock_sectors=str(stock_sectors),
        )

        asserted_data = ["['TecDAX', 'MDAX', 'Prime All Share']"]

        self.assertEqual(
            asserted_data,
            db.get_list(
                table=cst.TABLE_COMPANY_DATA,
                columns=cst.COLUMN_INDICES,
                condition=[cst.COLUMN_STOCK_URI, "bechtle-Aktie"],
                database=cst.TEST_DATABASE,
            ),
        )
Exemplo n.º 17
0
def levermann_04_05():
    stock_list = db.get_list(table=cst.TABLE_STOCKS, columns=cst.COLUMN_URI)
    for stock in stock_list:

        # current_stock_price = db.get_latest_stock_price(stock)
        current_stock_price = db.get_item(
            table=cst.TABLE_STOCKS_HISTORIES,
            column=cst.COLUMN_CLOSING_VALUE,
            condition=[cst.COLUMN_STOCK_URI, stock],
            order=[cst.COLUMN_DATE, cst.DESC],
        )
        eps = db.get_latest_eps(stock)

        if current_stock_price is None or eps is None:
            logger.info("Calculate Lev04/05: Current Stockprice is None: %s" %
                        stock)
            continue
        if eps is None:
            logger.info("Calculate Lev04/05: EPS is None for stock: %s" %
                        stock)
            continue
        if None in eps:
            logger.info("Calculate Lev04/05: Any Nones in EPS for stock: %s" %
                        stock)
            continue

        eps_0 = eps[3]

        kgv5 = float(current_stock_price) / (sum(eps) /
                                             5) if sum(eps) != 0 else 9999.99
        kgv5 = 9999.99 if kgv5 > 9999.99 else kgv5

        kgv0 = float(current_stock_price) / eps_0 if eps_0 != 0 else 14
        kgv0 = 9999.99 if kgv0 > 9999.99 else kgv0

        if 0 < kgv5 < 12:
            lev_04_score = 1
        elif 12 < kgv5 < 16:
            lev_04_score = 0
        elif kgv5 <= 0 or kgv5 >= 16:
            lev_04_score = -1
        else:
            lev_04_score = 0

        # db.save_kgv5_to_db(stock, round(kgv5, 2), lev_04_score)
        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            current_date=date.get_current_date(),
            stock_uri=stock,
            lev_04_val=round(kgv5, 2),
            lev_04_sco=lev_04_score,
        )

        if 0 < kgv0 < 12:
            lev_05_score = 1
        elif 12 < kgv0 < 16:
            lev_05_score = 0
        elif kgv0 <= 0 or kgv0 >= 16:
            lev_05_score = -1
        else:
            lev_05_score = 0

        # db.save_kgv0_to_db(stock, round(kgv0, 2), lev_05_score)
        db.upsert_item(
            table=cst.TABLE_LEVERMANN,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            current_date=date.get_current_date(),
            stock_uri=stock,
            lev_05_val=round(kgv0, 2),
            lev_05_sco=lev_05_score,
        )
Exemplo n.º 18
0
    def test_upsert_new_single_overview_data_to_db(self):
        current_date = "2019-03-23"
        stock_uri = "coca-cola-Aktie"
        market_cap = "171390.00"
        stock_indices = [
            "Dow Jones",
            "S&P 500",
            "S&P 100",
            "NYSE US 100",
            "IGPA",
            "BX Swiss - USA",
        ]
        stock_sectors = '["Getränke / Tabak"]'

        db.upsert_item(
            table=cst.TABLE_COMPANY_DATA,
            primary_keys=[cst.COLUMN_STOCK_URI, cst.COLUMN_DATE],
            database=cst.TEST_DATABASE,
            stock_uri=stock_uri,
            market_cap=market_cap,
            current_date=current_date,
            stock_indices=str(stock_indices),
            stock_sectors=str(stock_sectors),
        )

        asserted_company_data_content_after = [
            [
                "3i-Aktie", '["FTSE 100", "FTSE Allshare"]',
                '["Finanzdienstleister"]'
            ],
            [
                "ab_inbev-Aktie",
                '["EURO STOXX 50", "STOXX 50", "BEL 20", "EURONEXT 100", "EURO STOXX", "Next CAC 70", "BX Swiss -  EMEA"]',
                '["Getränke / Tabak"]',
            ],
            [
                "ab_inbev-Aktie",
                '["STOXX 50", "EURO STOXX 50", "BEL 20", "EURONEXT 100", "EURO STOXX", "Next CAC 70", "BX Swiss -  EMEA"]',
                '["Getränke / Tabak"]',
            ],
            [
                "bechtle-Aktie",
                '["TecDAX", "MDAX", "Prime All Share", "LMDAX", "Technology All Share", "HDAX", "LTecDAX", "CDAX", "MDAX Kursindex", "TecDAX Kursindex", "BX Swiss - EMEA", "DAXglobal Sarasin Sustainability Germany Index EUR", "QIX Deutschland", "DAXglobal Sarasin Sustainability Germany", "Schatten-Index-SDAX", "Schatten-Index-TecDAX"]',
                '["IT-Dienstleister", "IT-Beratung Hardware", "Dienstleistungen", "Internethandel (B2B, B2C)", "Informationstechnologie"]',
            ],
            [
                "cellcom_israel-Aktie",
                '["TA-100"]',
                '["Telekommunikation", "Mobilkommunikation", "Netzbetreiber (Carrier)", "IT-Dienstleister"]',
            ],
            [
                "coca-cola-Aktie",
                "['Dow Jones', 'S&P 500', 'S&P 100', 'NYSE US 100', 'IGPA', 'BX Swiss - USA']",
                '["Getränke / Tabak"]',
            ],
        ]

        self.assertEqual(
            asserted_company_data_content_after,
            db.get_list(
                table=cst.TABLE_COMPANY_DATA,
                columns=[
                    cst.COLUMN_STOCK_URI, cst.COLUMN_INDICES,
                    cst.COLUMN_SECTORS
                ],
                database=cst.TEST_DATABASE,
            ),
        )