Bulk Historical FX Rate Downloader

This free Excel spreadsheet downloads multiple FX rate histories from a web service. You can then plot and analyze the exchange rate data, and backtest your trading strategies with Excel’s broad suite of tools and functions.

It’s a companion tool to another spreadsheet that lets you import bulk historical stock prices for many stock tickers.

You don’t need to be a rocket scientist to use the spreadsheet.

Simply specify two dates, and a series of currency-pairs (via their 3-letter currency codes). Also let the spreadsheet know whether you want the bid, ask or mid rates with a drop-down menu.

Spreadsheet that downloads Bulk Historical Forex Rates

Clicking the Get Forex Data button starts some clever VBA.  For every currency-pair, the spreadsheet connects to a web service and downloads the historical exchange rates.

Each data set in placed in its own sheet. The sheet name is simply the concatenated currency codes, so you can easily find the data you’re looking for.

Currency Codes in  Excel

Each sheet has the daily bid rates between the two dates, in date-ascending order.

Historical FX Rates in Excel for GBP-EUR

There’s some smarts and error-checking programmed into the VBA. For example, the code will skip over any blanks or typos in the list of currency codes.

So what can you do with the exchange rate histories, now that they’re in an analysis platform? Well, you could calculate the correlation matrix of several currency-pairs, plot the RSI and look for buy-sell signals, and more. All these analyses can be automated in VBA.


Get Excel Spreadsheet to Download Multiple Historical FX Rates

18 thoughts on “Bulk Historical FX Rate Downloader

  1. Hey there, this is a great workbook and exactly what I have been looking for but unfortunately the values which are coming back for the USD to ZAR exchange rates are not accurate?
    Where are these values being pulled from?

    Is it possible to get the VBA code?

      1. Samir,

        Is there any way you could include:

        1) the volume of currency traded on a given day
        2) set up a bulk download and write to CSV as you have for bulk stock options

        This would be phenomenal.


  2. Hi Just to say that this is an excellent tool. I will use it for information and also as a lesson in how to create extremely useful VBA.

    Thanks all the way from London to where ever you are

  3. Hi Samir

    Well done. Downloaded your excel sheet. Thought that I could adjust the dates and it would drag it all down. Must have misunderstood you. Any how no matter. Still Great. Please tell me what the cost is — as you say a few dollars.

    All the best Mark

  4. Hi Samir
    have looked at the sheets you are selling and this in not included but marked free elsewhere. Perhaps it is me but i can alter the entries and replace with new up to date. Please could you direct me.


  5. data is incorrect….

    I have 28 pairs split up properly in 2 columns and i have chosen 5 days. All of the days show prices that are close to the open of the day, but are not correct. i am comparing to IBFX broker data feed on MetaTrader 4 platform.

    would be helpful tool if it could gather OHLC & volume data, even on just a daily timeframe. oh well.

  6. Hello Samir Khan,

    You do a great work! I’m interested in buying the permission to the VBA code. Please respond to my email address.

  7. Hi Samir,

    This is a fantastic tool! Is there any way to update so that it pulls the “Ask” rates rather than the “Bid” rates.

    Thank you in advance for for your help!



        1. Hai, The same i want to do in web page. How can i proceed? Can i use your API?
          I want the same which is in the EXCEL?

  8. Hi Samir, this is great, could you tell me where you are pulling the data from? or what time the quotes are taken? Only reason I ask is that if you look at close prices the data, for say GBPUSD, is off by 70pips for yesterday, 154 pips for the day before – are the rates this worksheet pulls opening prices?


  9. Hai, The same i want to do in web page. How can i proceed? Can i use your API?
    I want the same which is in the EXCEL?

Leave a Reply

Your email address will not be published. Required fields are marked *

What is 7 + 7 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)