Last updated: September 2026
This page describes where our data comes from, how often we update it, how we calculate the figures we display, and what we do not measure. The goal is verifiability: every claim on RetailBonds.in should be traceable to a public source.
Data sources
We aggregate data from the following primary sources:
- RBI Retail Direct portal (rbiretaildirect.org.in) — Central Government Securities, State Development Loans, Treasury Bills available to retail investors. Refreshed: daily.
- NSE Capital Market segment — Government securities (nseindia.com) — Last traded price and traded volume for G-Secs, State Development Loans and T-Bills. Feeds sovereign bond pages and the yield curve. Refreshed: daily.
- RBI Treasury Bill auction results (rbi.org.in) — Cut-off yields for 91-, 182- and 364-day T-Bills. Anchors the short end of the yield curve. Refreshed: weekly.
- RBI outstanding G-Sec list and RBI DBIE (data.rbi.org.in) — Exact maturity dates for G-Secs and older SDLs. Exchange symbols carry only the maturity year, so these lists are the source of the date. The G-Sec list is refreshed monthly; the DBIE export is imported periodically. A bond with no confirmed date shows no YTM rather than one computed from a guessed date.
- RBI SDL auction results (rbi.org.in) — Weekly "State Government Securities – Full Auction Result" press releases and the matching auction notices. They power /sdl-auctions and set the maturity of newly issued SDLs: SDLs repay in one go, so maturity = settlement date (from the notice) + tenor (from the result). The settlement must fall within 10 days before the exchange-listed issue date, which separates two SDLs a state issued with the same coupon and year. Checked against 284 DBIE-confirmed SDLs with no mismatches; anything ambiguous is left unset. Each auction is also linked to the SDL it sold (state, coupon, maturity year and listed issue date must all agree; a re-issue is matched on the original issue date RBI states), and the SDL’s page lists every auction’s cut-off and weighted-average yield. These are auction results on the auction date, not the yield at which the bond trades today. Refreshed: weekly (Wednesday).
- Rating agencies — Nine credit rating agencies are SEBI-registered (SEBI register, September 2026): CRISIL Ratings (IN/CRA/001/1999), India Ratings & Research (IN/CRA/002/1999), CARE Ratings (IN/CRA/004/1999), Brickwork Ratings (IN/CRA/005/2008), Acuité Ratings & Research (IN/CRA/006/2011), Infomerics Valuation and Rating (IN/CRA/007/2015), ICRA (IN/CRA/008/15), ACER Credit Rating (IN/CRA/009/2025) and CredStone Ratings (IN/CRA/010/2026). Ratings in our data today come from CRISIL, ICRA, CARE, India Ratings, Acuité, Brickwork and Infomerics; no ratings from ACER or CredStone appear in the filings we ingest yet (as of October 2026). Ratings are shown as each agency publishes them, and bond pages list every agency's current rating with its date. We do not rank agencies by quality; where a list or filter needs one rating per bond, the rule is set out under One rating per bond. See SEBI's register.
- Coupon types — A missing coupon is usually not missing data. We label each bond: fixed; cumulative (public NCD options that pay everything at maturity — matched to the offer document by issuer, option number and allotment date, with the issue's effective yield); zero coupon (issued at a discount, including T-Bills); or market-linked (payout set by an index). Most unlisted privately placed structured debentures have no public terms, so their coupon shows "—". Refreshed: nightly.
- Issuer health card — A checklist of published facts on each issuer page, not a score, rating or credit opinion: current agency ratings and whether agencies are 2+ notches apart; upgrades vs downgrades, watch placements, negative outlooks and "issuer not cooperating" actions in the last 12 months (from CRISIL’s published rating actions, and other agencies’ actions as listed companies filed them with NSE); payment record from NSE interest and redemption disclosures (tracked since 17 Jul 2026; "late" = paid more than 3 days after due, since next-working-day payment is allowed; TDS deductions are not shortfalls); bonds marked defaulted; exchange trading in the last 30 days; filings in the last 90 days.
- BSE Bond Platform (bseindia.com) — Listed corporate bonds, PSU bonds, and Non-Convertible Debentures traded on BSE. Refreshed: daily for listings and ratings snapshot.
- CRISIL rating actions (crisilratings.com) — Rating reaffirmations, upgrades, downgrades, and withdrawals published by CRISIL, with CRISIL’s rationale. Refreshed: daily.
- NSE Debt Centralised Database (nseindia.com) — Interest payment, redemption payment, and credit rating disclosures broadcast by listed issuers under SEBI LODR Regulation 52(4)/60. Shown on bond and issuer pages as "Reg52(4)" — real disclosed events, not a projected schedule. The credit rating disclosures are also our source for rating actions by agencies other than CRISIL (since late August 2026): the action type (reaffirm, upgrade, downgrade, new, withdrawn) is as the company reported it, one filing becomes one action per issuer, agency, date and grade, and a disclosure dated more than 30 days before NSE published it is left out. Issuers that don’t file with NSE are not covered, and CRISIL’s actions come from CRISIL itself. Refreshed: daily.
- SEBI public filings — Bond offer documents and prospectuses. Used for conflict resolution when sources disagree.
- BSE NCD public-issue filings — DRHP and prospectus pipeline for retail NCD offers (/ncd-calendar). Where the prospectus cover Issue Programme prints concrete dates, we extract subscription open/close onto /ncd-subscription. Shelf prospectuses that only say “as specified in the Tranche Prospectus” stay blank until a Tranche PDF (often inside a ZIP) is parsed. We never invent bidding dates.
We do not source data from paid feeds (Bloomberg, Refinitiv, etc.) at this time. Our coverage therefore has gaps: instruments that are not listed on BSE/NSE may be absent. Current ratings come from seven agencies (CRISIL, ICRA, CARE, India Ratings, Acuité, Brickwork and Infomerics), but rating actions — the upgrade, downgrade and watch history on /ratings, issuer timelines and email alerts — come from CRISIL only today. Action history from other agencies will be added as their feeds come online.
Update frequency
Data flows into our database via scheduled scrapers running on our infrastructure:
- RBI Retail Direct auction news: daily at 00:30 IST
- CRISIL rating actions: daily at 01:00 IST
- BSE bond instrument master: daily at 01:30 IST
- NSE G-Sec / SDL / T-Bill prices: daily at 02:30 IST
- Sovereign yield curve snapshot: daily at 02:57 IST, after the price scrapes
- RBI T-Bill auction results: weekly, Thursday 06:00 IST
- NSE Reg52(4) interest/redemption/credit-rating disclosures: daily at 02:47–02:49 IST
- BSE NCD public-issue filings + prospectus term/subscription-window extract: daily (off-market hours)
All scrapes run outside Indian market hours. Stale data is a real risk. If a fetch fails repeatedly, we display a warning on the affected page rather than show outdated figures silently.
Validation and quality
For every scraper, we run automated health checks on expected record counts, schema integrity, and range sanity on yields and dates. When a check fails, the source is flagged and reviewed before its output reaches our screener or detail pages.
We retain raw snapshots of every scraping run for debugging and audit purposes. These snapshots are compressed and stored on-server; they are not publicly accessible.
What we do not measure
- Real-time prices. Our prices reflect the most recent fetch and may lag the actual market by hours or days. For real-time pricing, use the exchange feed or a SEBI-registered OBPP.
- Suitability for individual investors. We do not assess whether any bond is appropriate for your specific financial situation, goals, or risk tolerance.
- Forward-looking ratings or recommendations. We display credit ratings as published by the rating agencies. We do not issue our own ratings or buy/sell recommendations.
- Off-market and private placements. Our scope is publicly listed and publicly accessible securities only.
Calculation conventions
Our calculations follow FIMMDA (Fixed Income Money Market and Derivatives Association of India) standards where applicable:
- Yield to Maturity (YTM): Calculated using the bond’s stated day-count convention with the bond’s stated compounding frequency. Each bond detail page displays the specific conventions used. Try it in the YTM calculator.
- Modified duration: Macaulay duration divided by (1 + periodic YTM).
- Accrued interest: From the last coupon date to the assumed settlement date using the bond’s stated day-count.
- G-Sec and SDL prices: NSE’s traded price for these includes accrued interest (a “dirty” price — it drops by about half the annual coupon on each coupon date). We store it as the dirty price, subtract accrued interest (30/360, semi-annual) to get the clean price, and compute YTM from the clean price.
- Spread: Bond’s YTM minus the G-Sec yield at the same remaining tenor, read off our published sovereign yield curve by straight-line interpolation between the two nearest tenor buckets.
- Indicative yield (EST): For a rated bond with no recent trade, the screener shows an estimate marked EST: the G-Sec yield at the bond’s remaining tenor plus the median spread of bonds with the same rating that traded in the last 60 days. The medians are taken over three tenor ranges (up to 3 years, 3–7 years, over 7 years) and placed at the typical tenor of the bonds in each range (about 1.5, 4.5 and 9 years). Between those points the spread is read off a straight line, so a bond a few months longer does not jump to another range’s median. A “+” or “−” rating modifier moves it by 15 bps. A range with fewer than three traded bonds uses a fixed starting spread for that rating. It is an estimate from other bonds’ trades, not a price for this bond.
- Tax-free bonds: Bonds whose issuer documents describe them as tax-free (interest exempt from income tax) carry a “Tax-free” tag. Their pre-tax yield sits well below taxable bonds and G-Secs, so we leave them out of the rating-band spread medians and do not estimate an indicative YTM for them.
- Qualified ratings: A bond with a current agency rating marked CE (credit enhanced), SO (structured obligation) or PP-MLD (principal-protected market-linked debenture) is left out of the rating-band spread medians, and we do not estimate an indicative YTM for it. A CE or SO rating rests on a guarantee or the structure of the deal rather than the issuer alone, and a PP-MLD rating covers credit risk but not the market-linked payout, so their yields don’t reflect the plain grade. The qualifiers are explained below.
Where our calculations differ from a source’s published figure, the difference is usually a convention choice (day-count or settlement date). We aim to be explicit and consistent rather than match a specific source’s number exactly.
Sovereign yield curve
The yield curve is built once per trading day from secondary-market trades. Retail prints on the exchange are noisy, so several filters run before a trade counts:
- Price and yield sanity. A G-Sec or SDL trade counts only if its clean price is between ₹80 and ₹130 and its YTM between 0.5% and 15%. Trades that fail, whose YTM cannot be solved, or (for G-Secs) that sit more than 150 bp away from the curve at their tenor are rejected when we ingest them.
- No odd lots. Trades under 500 bonds (₹50,000 face value) are left out. Small retail prints can move a short bond’s YTM by 50–100 bp.
- Known maturity only. A bond whose exact maturity date we don’t yet have is left out.
- Tenor buckets. Each trade is placed in the nearest of ten buckets (3M, 6M, 1Y, 2Y, 3Y, 5Y, 7Y, 10Y, 15Y, 30Y).
- Short end from T-Bills. The 3M, 6M and 1Y buckets use RBI T-Bill auction cut-off yields only. Short-dated G-Sec prints swing too much to anchor them. Each auction yield is an official RBI figure, so these buckets skip the outlier filter below; they still need at least 3 auction yields in the window.
- Recent window. A bucket with at least 10 qualifying trades in the last 7 days uses only those, so it tracks the market when yields move. Thinner buckets use the last 30 days.
- Outliers and minimum sample. Trades more than 4 median absolute deviations from the bucket median are dropped, and the bucket’s value is the median of what remains. A bucket with fewer than 3 surviving trades shows “—”.
Each tenor is the median of many bonds, not the price of a single benchmark bond, so figures can differ by a few basis points from benchmark-bond yields quoted elsewhere. It is a descriptive reference for comparison, not an official rate. FBIL publishes the official benchmark valuations.
Issuer name normalization
The same issuer often appears with different names across sources ("Power Finance Corporation Limited", "PFC Ltd", "Power Finance Corp"). We use fuzzy name matching (rapidfuzz token-set ratio, threshold 85) to collapse these into a single issuer record, caching confirmed matches as aliases. Every match is logged for audit. False positives at the 85–90 score band are a known limitation; we correct them as discovered.
Issuer sectors
Exchanges and rating agencies do not publish a sector for most bond issuers, so the sector shown on issuer pages and in the directory is our own inference. A language model reads the issuer name and up to three of its bond names and picks one sector from a fixed list, only when a business word in the name supports it, and it must quote the words it relied on. Answers below a confidence threshold, or whose quoted words are not in the name, are discarded and the issuer stays "Uncategorized". An independent model audited a random sample of the accepted answers, spread across sectors, and about 96% were judged correct; the rest are borderline cases such as property developers with unusual names. For about 90 large issuers whose names carry no business word (for example REC Limited or Damodar Valley Corporation), the sector comes from two different models' knowledge of that specific company, and is used only where both name the same sector. It is a convenience label, not an official industry classification, and it can be wrong. Tell us at the address below if you spot an error.
One rating per bond
Many bonds are rated by more than one agency, and the agencies do not always agree. Bond pages show every agency’s current rating with its date. The screener, rating filters, rating pages, comparison tables and counts need a single rating per bond, so they all use the same rule:
- Recent ratings first. A rating counts as recent when its date is within the last 15 months. This follows the Reserve Bank of India’s 2026 standardised-approach Directions for banks, which accept an external rating only if the agency has reviewed it at least once in the previous 15 months.
- The lowest recent rating is shown. When two or more recent ratings differ, we show the lower one. Banks under the same RBI Directions apply the more conservative of two ratings, and Bloomberg’s bond indices use the lower of two ratings. If two agencies give the same grade, the order CRISIL, ICRA, CARE, India Ratings, then the others only decides which agency’s name appears.
- No recent rating. The newest rating on file is shown, with its date, and the bond page marks it as more than 15 months old. Our sources may not have captured a later review.
- Dates. The date is the one the source gives: the agency’s release, the exchange filing, or BSE’s listing file. For ratings taken from NSE’s bond listing, which gives no rating date, we show the day we first saw the rating and never treat it as recent.
- Tiers. AAA, AA (AA+, AA, AA-), A (A+, A, A-), BBB (BBB+, BBB, BBB-) and below BBB. A bond sits in exactly one tier, the tier of the rating shown for it. Short-term ratings (A1+ to A4) are not placed in a tier.
- Qualifiers. Some ratings carry a qualifier from the agency, and we show it next to the grade: CE (credit enhanced, relying on support such as a guarantee from another entity), SO (structured obligation, the older name for such ratings), PP-MLD (principal-protected market-linked debenture, where the rating covers credit risk and not the market-linked payout) and Exp (India Ratings’ expected rating, given before the final documents). Tiers use the grade itself, so “AAA (CE)” sits in the AAA tier but is always shown with its CE.
This rule decides which published rating is displayed. It is not our own rating or opinion of the bond.
Handling missing data
When a field is unknown, we display “—” rather than guess. We do not impute coupon rates, maturity dates, or ratings.
Handling conflicting data
When two sources disagree, we display the SEBI filing as authoritative and log the discrepancy. We do not silently average or pick the more attractive number.
Reporting errors
If you find a data error, email [email protected] with the ISIN, the field in question, and the source supporting the correction. We acknowledge corrections within two business days.
Limitations and transparency
RetailBonds.in is a small independent operation, not a regulated data provider. Our coverage will have gaps. Our refresh frequencies will occasionally lag. Our calculations rest on convention choices that other providers may make differently. We will get things wrong, and when we do, we will fix them publicly rather than quietly.