-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Description
Describe bug
priceToBook value for Infosys Ticker INFY.NS ( https://finance.yahoo.com/quote/INFY.NS/ ) is returned by the API is given below. it is 573 but that is wrong, the web app shows the right values but the API returns different value.
"bookValue": 2.67,
"priceToBook": 573.55804,
"currentPrice": 1531.4,
"financialCurrency": "USD",
"currency": "INR",
Below is the observation done by chatgpt -
🧐 Observations
bookValue = 2.67
This should normally mean Book Value per Share (BVPS).
But clearly 2.67 is not in INR, because Infosys BVPS (from filings) is around ₹230.
It looks like yfinance is mixing USD values for fundamentals while showing INR prices.
currentPrice = 1531.4 (INR)
This is the live NSE share price in rupees.
priceToBook = 573.55804
If you compute:
1531.4
2.67
≈
573.5
2.67
1531.4
≈573.5
→ Exactly matches the JSON field.
So yfinance is dividing an INR price (₹1531) by a USD book value (2.67), which makes no sense.
✅ Correct Calculation
If we take Infosys’s real BVPS ≈ ₹231 (INR) from filings:
P/B
1531.4
231
≈
6.63
P/B=
231
1531.4
≈6.63
That’s the correct number (and matches Screener, Smart-Investing, etc.).
Main issue seems to be the money values are not in the same currency format.
Simple code that reproduces your problem
import yfinance as yf
symbol = 'INFY.NS'
ticker = yf.Ticker(symbol)
info = ticker.info
print(f"Info for {symbol}: {info}")
Debug log from yf.enable_debug_mode()
NA
Bad data proof
No response
yfinance
version
0.2.65
Python version
No response
Operating system
No response