Skip to content

andoludo/bearish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

96 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐻 Bearish

Bearish is a package for querying financial and price data from various equities across different countries, and persisting it into a well-structured SQLite database for further data analysis and stock screening.


🎯 Use Case

This package is intended for active retail investors with a strong passion for data analysis, who require well-structured, clean, and large datasets locally to:

  • Run custom technical and fundamental analysis
  • Perform in-depth data analysis
  • Identify patterns and investment insights
  • Build custom screeners

Bearish is not designed for real-time trading, but for extensive analysis of historical and current financial data.


🌍 Global Scope

Bearish is designed to collect large-scale data from exchanges in different countries. It fetches data politely β€” meaning it does not make large-scale concurrent API calls and instead respects the rate limits and policies of each data provider. So, patience is required during large data retrieval.

The data fetched includes:

  • Historical price data
  • Company fundamentals
  • Balance sheets, income statements, and more

All data is stored in a local SQLite database from which you can query, analyze, and build insights.


πŸ“Š Data Sources

Bearish pulls data from multiple sources:

Ticker information is enriched using additional sources like yFinance, FMP, etc.
Bearish is also extensible β€” you can add support for any data source or API.

By default, Bearish relies primarily on yFinance due to limitations in free-tier APIs of other providers. However, if you have a premium subscription, you can use other sources more fully.


πŸ“₯ Installation

Install Bearish with pip:

pip install bearishpy

πŸš€ Fetch & Store Data

πŸ›οΈ Country-Level Data

Fetch and store stock data for selected countries:

bearish run /path/to/sqlite/db Belgium France --api-keys=config.json

βœ… This command:

  • Loads tickers from FinanceDatabase and InvestPy
  • Filters relevant equities from the selected countries
  • Enriches the data with fundamentals and prices
  • Stores everything in your local SQLite database

⏱️ This operation can take some time depending on the size of the country’s exchange β€” data is fetched "politely", not in bulk.

Once your database is populated, future updates are quicker.

img.png


The config.json contains the API keys of the different providers (if needed):

{
  "FMPAssets": "your Financial Modeling Prep API key",
  "FMP": "your Financial Modeling Prep API key",
  "AlphaVantage": "your Alphavantage API key",
  "Tiingo": "your Tiingo API key"
}

πŸ”„ Updating Data

πŸ’΅ Update Prices

To update only the price data:

bearish prices /path/to/sqlite/db Belgium France --api-keys=config.json

img_2.png

🧾 Update Financials

To update financial and fundamental data:

bearish financials /path/to/sqlite/db Belgium France --api-keys=config.json

img_1.png

🎯 Fetch Specific Tickers

To fetch and store data for specific tickers:

bearish run /path/to/sqlite/db US --filters NVDA,TSLA,RHM.DE --api-keys=config.json

You must always provide the country where each ticker is traded along with the desired tickers as filters.


πŸ“š Summary

Feature Description
🌍 Country-level support Fetch equities from any exchange
🧠 Fundamental data Balance sheets, cash flow, income statements
πŸ“‰ Price history Up-to-date historical prices
πŸ—„οΈ Local database Data saved in SQLite for offline analysis
πŸ”Œ Extensible Plug in your own APIs or providers
πŸ§ͺ Designed for analysis Ideal for custom screeners and research

πŸ› οΈ Contributing

Contributions are welcome! Feel free to open issues or submit pull requests to improve Bearish.


πŸ“„ License

Bearish is released under the MIT License.