astro30
valinvest
Python

A value investing tool based on Warren Buffett, Joseph Piotroski and Benjamin Graham thoughts

Last updated Jul 3, 2026
194
Stars
39
Forks
6
Issues
+1
Stars/day
Attention Score
53
Language breakdown
No language data available.
Files click to expand
README


Valinvest

A value investing tool based on Warren Buffett, Joseph Piotroski and Benjamin Graham thoughts

Welcome to Valinvest

🔥 Important update 🔥

The Financial API used by valinvest to get financial data has been rewritten and now requires a API Key in order to make request. So, the first step now is to register on https://financialmodelingprep.com/login and get an API key. Keep it, you will need it to use valinvest ;)

✨tl;dr ✨

For a given stock ticker, valinvest calculates a score from 0 to 9. The higher the score, the better the company is according to the scoring methodology.
  • Install it
pip install valinvest
  • Calculate score
>>> import valinvest
>>> aapl = valinvest.Fundamental('AAPL', YOURAPIKEY)
>>> aapl.fscore()
6.8

Table of contents :books:

- Growth - Profitability - Debts - Market sensibility - Investment - Starbucks Corporation (SBUX) - Apple Inc. (AAPL)

Introduction

The aim of the package is to evaluate a stock according to his fundamentals by setting a score and identify buy and sells opportunies through technical indicators.

Methodology description

The scoring methodology is based on Joseph Piotroski's study (Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers). The F-Score is used to help financial investment decisions by finding the best value stocks on the market.

The Piostroski score is calculated based on 9 criteria divided into 3 groups:
>
#### Profitability
>
- Return on Assets (1 point if it is positive in the current year, 0 otherwise)
- Operating Cash Flow (1 point if it is positive in the current year, 0 otherwise)
- Change in Return of Assets (ROA) (1 point if ROA is higher in the current year compared to the previous one, 0 otherwise)
- Accruals (1 point if Operating Cash Flow/Total Assets is higher than ROA in the current year, 0 otherwise)
>
#### Leverage, Liquidity and Source of Funds
>
- Change in Leverage (long-term) ratio (1 point if the ratio is lower this year compared to the previous one, 0 otherwise)
- Change in Current ratio (1 point if it is higher in the current year compared to the previous one, 0 otherwise)
- Change in the number of shares (1 point if no new shares were issued during the last year)
>
#### Operating Efficiency
>
- Change in Gross Margin (1 point if it is higher in the current year compared to the previous one, 0 otherwise)
- Change in Asset Turnover ratio (1 point if it is higher in the current year compared to the previous one, 0 otherwise)
>

This software calculates an alternate version of the F-Score as follows:

Growth

  • Net Revenue
  • EBITDA
  • Earnings per share (EPS)

Profitability

  • CROIC
  • ROIC

Debts

  • EBITDA cover ratio
  • Debt coverage

Market sensibility

  • Beta

Investment

  • Equity buyback

Installation

pip install valinvest

Examples

Starbucks Corporation (SBUX)

| | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | Score | | ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | | REV_G | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | EBT_G | | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0.7 | | EPS_G | | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0.7 | | ROIC | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.1 | | CROIC | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0.9 | | 5YRS_BETA | | | | | | | | | | | | 1 | | EBITDA_COVER | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | DEBT_COST | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0.7 | | EQ_BUYBACK | | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0.6 | | F-SCORE | | | | | | | | | | | | 6.7 |

>>> import valinvest
>>> sbux = valinvest.Fundamental('SBUX')
>>> sbux.fscore()
6.7

Apple Inc. (AAPL)

| | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | Score | | ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | | REV_G | | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0.8 | | EBT_G | | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0.7 | | EPS_G | | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0.6 | | ROIC | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | CROIC | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 5YRS_BETA | | | | | | | | | | | | 0 | | EBITDA_COVER | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | DEBT_COST | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | EQ_BUYBACK | | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0.7 | | F-SCORE | | | | | | | | | | | | 6.8 |

>>> import valinvest
>>> aapl = valinvest.Fundamental('AAPL')
>>> aapl.fscore()
6.8

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Credits

This software uses code from several open source packages:

🔗 More in this category

© 2026 GitRepoTrend · astro30/valinvest · Updated daily from GitHub