def main():

    # Connect to database
    db = mysql.connect(host = "localhost", user = "******", passwd = "Jn2790472015$", database = "data")
    cursor = db.cursor()

    # API Key and client connection
    key = "d25I_1rdsjEHIan3ZoLXiGv_3mfcLY0wRkDpv9"
    client = RESTClient(key)

    # Get  headers and declare list of unique identifiers found in polygon ticker data
    headers = getHeaders(client)
    potential_codes = ['cik', 'figiuid', 'scfigi', 'cfigi', 'figi']
    
    # Declare page - set to 1 to start loop on first page (50 items max per page as per Polygon documentation)
    page = 1
    
    # Continue to generate API requests with increasing page number while length of the API response remains non-zero 
    while (page == 1 or len(resp.tickers) > 0):
        resp = client.reference_tickers(page=page)
        page += 1

        # For page of results clean the data and serialize to list for insert statement
        for result in resp.tickers:
            data_line = []
            keys = cleanTickerKeys(result)
            
            # Lining up JSON values with serialized headers
            for header in headers:
                if header in keys:
                    if header in potential_codes:
                        data_line.append(result['codes'][header])
                    else:
                        data_line.append(result[header])
                else:
                    data_line.append('NULL')
            
            # Attempt to run MySQL insert statement, if it fails skip and continue
            try:
                cursor.execute(tickerInsertStatement(headers,data_line))
                db.commit()
                print(f'{data_line[1]} ({data_line[0]}): Successfully inserted')
            except:
                print('SQL Error')
                pass
예제 #2
0
class PolygonInterface:
    def __init__(self, key):
        self.client = RESTClient(key.polygon_api_key)

    def map_polygon_fs_to_fs_entity(self, polygon_financial_statements):
        return [
            FinancialStatement(
                ticker=polygon_fs["ticker"],
                period=polygon_fs["period"],
                calendar_date=polygon_fs["calendarDate"],
                report_period=polygon_fs["reportPeriod"],
                updated=polygon_fs["updated"],
                accumulated_other_comprehensive_income=polygon_fs[
                    "accumulatedOtherComprehensiveIncome"
                ],
                assets=polygon_fs["assets"],
                assets_average=polygon_fs["assets"],
                assets_current=polygon_fs["assets"],
                asset_turnover=polygon_fs["assets"],
                assets_non_current=polygon_fs["assets"],
                book_value_per_share=polygon_fs["assets"],
                capital_expenditure=polygon_fs["assets"],
                cash_and_equivalents=polygon_fs["assets"],
                cash_and_equivalentsUSD=polygon_fs["assets"],
                cost_of_revenue=polygon_fs["assets"],
                consolidated_income=polygon_fs["assets"],
                current_ratio=polygon_fs["assets"],
                debt_to_equity_ratio=polygon_fs["assets"],
                debt=polygon_fs["assets"],
                debt_current=polygon_fs["assets"],
                debt_non_current=polygon_fs["assets"],
                debtUSD=polygon_fs["assets"],
                deferred_revenue=polygon_fs["assets"],
                depreciation_amortization_and_accretion=polygon_fs["assets"],
                deposits=polygon_fs["assets"],
                dividend_yield=polygon_fs["assets"],
                dividends_per_basic_common_share=polygon_fs["assets"],
                earning_before_interest_taxes=polygon_fs["assets"],
                earnings_before_interest_taxes_depreciation_amortization=polygon_fs[
                    "assets"
                ],
                EBITDA_margin=polygon_fs["assets"],
                earnings_before_interest_taxes_depreciation_amortizationUSD=polygon_fs[
                    "assets"
                ],
                earning_before_interest_taxesUSD=polygon_fs["assets"],
                earnings_before_tax=polygon_fs["assets"],
                earnings_per_basic_share=polygon_fs["assets"],
                earnings_per_diluted_share=polygon_fs["assets"],
                earnings_per_basic_shareUSD=polygon_fs["assets"],
                shareholders_equity=polygon_fs["assets"],
                average_equity=polygon_fs["assets"],
                shareholders_equityUSD=polygon_fs["assets"],
                enterprise_value=polygon_fs["assets"],
                enterprise_value_overEBIT=polygon_fs["assets"],
                enterprise_value_overEBITDA=polygon_fs["assets"],
                free_cash_flow=polygon_fs["assets"],
                free_cash_flow_per_share=polygon_fs["assets"],
                foreign_currencyUSD_exchange_Rate=polygon_fs["assets"],
                gross_profit=polygon_fs["assets"],
                gross_margin=polygon_fs["assets"],
                goodwill_and_intangible_assets=polygon_fs["assets"],
                interest_expense=polygon_fs["assets"],
                invested_Capital=polygon_fs["assets"],
                invested_capital_average=polygon_fs["assets"],
                inventory=polygon_fs["assets"],
                investments=polygon_fs["assets"],
                investments_Current=polygon_fs["assets"],
                investments_non_current=polygon_fs["assets"],
                total_liabilities=polygon_fs["assets"],
                current_liabilities=polygon_fs["assets"],
                liabilities_non_current=polygon_fs["assets"],
                market_capitalization=polygon_fs["assets"],
                net_cash_flow=polygon_fs["assets"],
                net_cash_flow_business_acquisitions_disposals=polygon_fs["assets"],
                issuance_equity_shares=polygon_fs["assets"],
                issuance_debt_securities=polygon_fs["assets"],
                payment_dividends_other_cash_distributions=polygon_fs["assets"],
                net_cash_flow_from_financing=polygon_fs["assets"],
                net_cash_flow_from_investing=polygon_fs["assets"],
                net_cash_flow_investment_acquisitions_disposals=polygon_fs["assets"],
                net_cash_flow_from_operations=polygon_fs["assets"],
                effect_of_exchange_rate_changes_on_cash=polygon_fs["assets"],
                net_income=polygon_fs["assets"],
                net_income_common_stock=polygon_fs["assets"],
                net_income_common_stockUSD=polygon_fs["assets"],
                net_loss_income_from_discontinued_operations=polygon_fs["assets"],
                net_income_to_non_controlling_interests=polygon_fs["assets"],
                profit_margin=polygon_fs["assets"],
                operating_expenses=polygon_fs["assets"],
                operating_income=polygon_fs["assets"],
                trade_and_non_trade_payables=polygon_fs["assets"],
                payout_ratio=polygon_fs["assets"],
                price_to_book_value=polygon_fs["assets"],
                price_earnings=polygon_fs["assets"],
                price_to_earnings_ratio=polygon_fs["assets"],
                property_plant_equipment_net=polygon_fs["assets"],
                preferred_dividends_income_statement_impact=polygon_fs["assets"],
                share_price_adjusted_close=polygon_fs["assets"],
                price_sales=polygon_fs["assets"],
                price_to_sales_ratio=polygon_fs["assets"],
                trade_and_non_trade_receivables=polygon_fs["assets"],
                accumulated_retained_earnings_deficit=polygon_fs["assets"],
                revenues=polygon_fs["assets"],
                revenuesUSD=polygon_fs["assets"],
                research_and_development_expense=polygon_fs["assets"],
                return_on_average_assets=polygon_fs["assets"],
                return_on_average_equity=polygon_fs["assets"],
                return_on_invested_capital=polygon_fs["assets"],
                return_on_sales=polygon_fs["assets"],
                share_based_compensation=polygon_fs["assets"],
                selling_general_and_administrative_expense=polygon_fs["assets"],
                share_factor=polygon_fs["assets"],
                shares=polygon_fs["assets"],
                weighted_average_shares=polygon_fs["assets"],
                weighted_average_shares_diluted=polygon_fs["assets"],
                sales_per_share=polygon_fs["assets"],
                tangible_asset_value=polygon_fs["assets"],
                tax_assets=polygon_fs["assets"],
                income_tax_expense=polygon_fs["assets"],
                tax_liabilities=polygon_fs["assets"],
                tangible_assets_book_value_per_share=polygon_fs["assets"],
                working_capital=polygon_fs["assets"],
            )
            for polygon_fs in polygon_financial_statements
        ]

    def get_polygon_financial_statement(self, symbol, limit=1, type_="Y"):
        financial_statements = self.client.reference_stock_financials(
            symbol=symbol,
            limit=limit,
            type=type_,
        ).results

        return self.map_polygon_fs_to_fs_entity(financial_statements)

    def get_polygon_company_list(
        self,
        sort="ticker",
        type="cs",
        market="stocks",
        locale="us",
        perpage=50,
        page=1,
        active="true",
    ):
        response = self.client.reference_tickers(
            sort=sort,
            type=type,
            market=market,
            locale=locale,
            perpage=perpage,
            page=page,
            active=active,
        )
        if response.status != "OK":
            raise Exception

        return response.tickers

    def get_market_status_now(self):
        market_status = self.client.reference_market_status()

        return market_status