Understanding the FHLB Advance Rate Schedule
The Federal Home Loan Bank publishes its advance rate schedules through a couple of channels. Most people use it for compliance audits or internal reporting, and having a reliable way to pull historical data saves you a ton of manual work. The FHLB has six districts — Boston, Chicago, Des Moines, Indianapolis, Topeka, and Atlanta — and each one maintains its own rate tables. The rates change on a schedule tied to SOFR movements, and they roll out quarterly with effective dates you can cross-reference against your portfolio.
Fhlb Rate History Chart
When I first started digging into the historical data, I was frustrated by how fragmented the source material was. The FHLB website puts everything in PDFs that get updated in place, meaning there is no download button for a full spreadsheet. You end up clicking through month-by-month, saving files, and merging them yourself. I did this for about three weeks before someone pointed me to the FHLB Advance Rate Schedules page and I figured out the pattern. The useful trick is that the PDF filenames contain dates. Once you know the URL structure, you can script a pull of every attachment from the announcement pages and merge them into a single dataset. Here is the basic approach: go to the FHLB press release archive for each district, collect the PDF links, download them all, and use a tool like pdftotext or PyPDF2 to extract the tables. It takes about ten minutes to script once you understand the structure, and then you can rerun it whenever you need fresh data. I should say straight up that this does not always work cleanly. Some older PDFs from 2018 and earlier are scanned images, not text-based. When I hit those, pdftotext returned garbage characters. I ended up using OCR with Tesseract on just those files, which added about twenty minutes to the pipeline but got the data out.
There is also a secondary problem with the rate tables themselves. Each PDF uses slightly different column headers depending on the quarter. What one document calls "Loan Type" another calls "Advance Type." If you are building a chart or database from this, you need a mapping layer that normalizes those terms. I keep a simple lookup dictionary and it handles about 95 percent of the mismatches without manual intervention.
Get the Full Details

What the Rates Actually Mean
An advance rate is the percentage of collateral value the FHLB will lend against. So if you have $10 million in qualifying residential mortgages, the advance rate determines how much of that you can borrow. A 90 percent advance rate means you can pull up to $9 million. The rates vary by collateral type, term length, and sometimes by region. Most member institutions care about these numbers because their borrowing costs are directly tied to them. A shift from 90 percent to 85 percent on a particular collateral type changes your leverage calculations and your interest expense. I saw a community bank nearly miss a liquidity deadline once because someone assumed the rate had not changed when the quarterly update went into effect. They were three basis points off on their cost projection. It sounded small until you multiply it across a $500 million advance book.
Where to Find the Data
The official source is each district's website under their "Advances" or "Advance Rates" section. The main FHLB portal links to them from a central page. There is no single downloadable CSV, and the Federal Reserve does not aggregate this data into a public database, so you are stuck with the district-level PDFs unless you use a third-party service. Some financial data platforms like Bloomberg Terminal or Refinitiv have mapped the FHLB advance rates into their fixed income or banking data sets. If your organization has access to either of those, pulling a history chart is a matter of a few clicks. Without that access, the manual or scripted PDF approach is the route most people take.
Common Mistakes to Avoid
The biggest issue I see is people treating the effective date as the publication date. They are not the same. A rate published in March might have an effective date in April or even May. If you are backtesting a model or auditing past positions, you need to use the effective date, not the date the PDF was released. I learned this the hard way when reconciling Q2 2023 borrowing costs against the published schedule and finding a systematic two-week offset in every row. Another pitfall is assuming all districts use identical collateral classifications. They do not. Some FHLBs include home equity lines of credit in categories that others treat differently. If you are comparing rates across districts or consolidating multi-district data, you will get wrong answers if you do not align the collateral type mappings first. One more thing that catches people off guard: the FHLB occasionally revises past rates for correction purposes. These are rare but they happen, usually flagged in an errata notice linked from the same press release page. I missed a revision in 2021 that adjusted three columns for the Des Moines district, and it threw off an entire year of my historical chart by about 0.25 percent at the top end. Always check the notes section at the bottom of each PDF before you trust the raw numbers.

Building Your Own Chart
If you want a clean historical chart, I would suggest collecting the data into a simple DataFrame with columns for district, effective date, collateral type, advance rate, and term. A line chart grouped by collateral type over time is usually the most useful output, and tools like Python with matplotlib or even Excel work fine for that. The whole process from raw PDFs to a readable chart typically takes me about two hours the first time and maybe fifteen minutes after that since I have the extraction scripts running on autopilot. If you are doing this manually in a spreadsheet, budget four to six hours for a multi-year history, and expect to spend extra time cleaning up the inconsistencies I mentioned above. The data is there. It is just not organized in a way that makes it easy to work with, and the FHLB makes no apology about that. You either adapt to the format or you build a system that does the adaptation for you.