Retrieve Historical Prices from MSN Money in Excel

Retrieve Historical Prices from MSN Money in Excel

Overview

The MsnMoneyHistoricalPrices provider retrieves historical daily, weekly, and monthly price data from MSN Money directly into Microsoft Excel.

It supports downloading raw OHLCV data as well as calculated changes and adjusted prices.

You can use this data to:

  • Build historical price charts
  • Analyze adjusted returns and volatility
  • Compare raw and adjusted prices
  • Compute custom signals and trading strategies

Use the following RTD formulas for daily, weekly, or monthly data:

=RTD("market.rtd",,"MsnMoneyHistoricalPrices","<Symbol>",[<Date>],"<Data Field>")
=RTD("market.rtd",,"MsnMoneyHistoricalPricesWeekly","<Symbol>",[<Date>],"<Data Field>")
=RTD("market.rtd",,"MsnMoneyHistoricalPricesMonthly","<Symbol>",[<Date>],"<Data Field>")

Examples:

=RTD("market.rtd",,"MsnMoneyHistoricalPrices","AAPL","2024-12-31","Close")
=RTD("market.rtd",,"MsnMoneyHistoricalPrices","AAPL",,"Close")

Here:

  • <Symbol> is the MSN instrument code.
  • <Data Field> is one of the available data fields (see list below).

How to Find MSN Symbols

  1. Visit MSN Money.
  2. Search for a stock (e.g., Apple Inc.).
  3. Copy the ID after fi-, such as a1mou2, from the URL:
https://www.msn.com/en-us/money/stockdetails/nas-aapl/fi-a1mou2

The Date parameter can be a valid Excel date or a string in yyyy-mm-dd format. If Date is omitted or set to 0, the formula returns data for the last trading date.

Use the Formula Builder to generate formulas and customize separators and layout.

By default, data refreshes every 12 hours. To change this interval, use the formula:

=RTD("market.rtd",,"MsnMoneyHistoricalPrices","rtd_RefreshInterval",126060)

Notes on Calculated Fields

  • AdjClose returns Close values and is included for compatibility with the Yahoo Finance data set.

  • AverageVolume returns the average daily volume over a specified number of days.
    This enables you to compare recent activity to historical norms (e.g., 10-day vs. 50-day average volume).

  • TradingDay allows you to retrieve trading dates by index.
    For example, you can get the 5th most recent trading day and then use that date in further formulas or charts.

Data Fields and Excel Formulas

Data FieldExcel Formula
Symbol=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Symbol")
Date=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Date")
Open=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Open")
High=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"High")
Low=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Low")
Close=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Close")
Volume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Volume")
PrevDate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PrevDate")
PrevOpen=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PrevOpen")
PrevHigh=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PrevHigh")
PrevLow=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PrevLow")
PrevClose=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PrevClose")
PrevVolume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PrevVolume")
Change=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Change")
ChangeInPercent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"ChangeInPercent")
Synonyms:
Previous Open=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous Open")
PreviousOpen=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PreviousOpen")
Prev Open=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev Open")
Previous High=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous High")
PreviousHigh=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PreviousHigh")
Prev High=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev High")
Previous Low=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous Low")
PreviousLow=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PreviousLow")
Prev Low=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev Low")
Previous Close=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous Close")
PreviousClose=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PreviousClose")
Prev Close=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev Close")
Previous Volume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous Volume")
PreviousVolume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PreviousVolume")
Prev Volume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev Volume")
Previous Date=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous Date")
PreviousDate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PreviousDate")
Prev Date=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev Date")
Previous Adj Close=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous Adj Close")
Previous AdjClose=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Previous AdjClose")
PreviousAdjClose=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PreviousAdjClose")
Prev Adj Close=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev Adj Close")
Prev AdjClose=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Prev AdjClose")
PrevAdjClose=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PrevAdjClose")
Adj Change=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Adj Change")
AdjChange=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"AdjChange")
Change in Percent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Change in Percent")
PercentChange=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PercentChange")
Percent Change=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Percent Change")
ChangePercent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"ChangePercent")
Change Percent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Change Percent")
% Change=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"% Change")
Adj Change in Percent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Adj Change in Percent")
AdjChange in Percent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"AdjChange in Percent")
AdjChange Percent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"AdjChange Percent")
PercentAdjChange=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"PercentAdjChange")
Percent Adj Change=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Percent Adj Change")
Percent AdjChange=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Percent AdjChange")
AdjChangePercent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"AdjChangePercent")
Adj Change Percent=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"Adj Change Percent")
% Adj Change=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"% Adj Change")
% AdjChange=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"% AdjChange")
RTD server values:
rtd_LastUpdate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"rtd_LastUpdate")
rtd_LastUpdateDate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"rtd_LastUpdateDate")
rtd_LastUpdateTime=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"rtd_LastUpdateTime")
rtd_LastError=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"rtd_LastError")
rtd_LastMessage=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"rtd_LastMessage")

Aggregate Functions

Data FieldExcel Formula
Date=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"Date")
Day=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"Day")
AverageVolume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"AverageVolume")
Synonyms:
Average Volume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"Average Volume")
AvgVolume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"AvgVolume")
Avg Volume=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"Avg Volume")
AvgVol=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"AvgVol")
Avg Vol=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"Avg Vol")
RTD server values:
rtd_LastUpdate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"rtd_LastUpdate")
rtd_LastUpdateDate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"rtd_LastUpdateDate")
rtd_LastUpdateTime=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"rtd_LastUpdateTime")
rtd_LastError=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"rtd_LastError")
rtd_LastMessage=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],[Days],"rtd_LastMessage")

Trading Days

Data FieldExcel Formula
Date=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"TradingDay",[Day])
RTD server values:
rtd_LastUpdate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"TradingDay","rtd_LastUpdate")
rtd_LastUpdateDate=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"TradingDay","rtd_LastUpdateDate")
rtd_LastUpdateTime=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"TradingDay","rtd_LastUpdateTime")
rtd_LastError=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"TradingDay","rtd_LastError")
rtd_LastMessage=RTD("market.rtd",,"MsnMoneyHistoricalPrices",[Symbol],"TradingDay","rtd_LastMessage")

This website is using cookies. By continuing to browse, you give us your consent to our use of cookies as explained in our Cookie Policy.