22
$\begingroup$

FinancialData["name"] and FinancialData["name", start] return respectively; the last known price, and the daily closing values for dates from start until the current date, for the financial entity - "name". One of the possible entities quoted is "Currency exchange rates" and while the Documentation's claims hold for the first case ...

Column[{
DateString[],
FinancialData[{"AUD", "USD"}],
WolframAlpha["AUD/USD", {{"Result", 1}, "Plaintext"},"PodStates" -> {"Result__More accuracy"}],
1/CountryData["Australia", "ExchangeRate"]
}]

(*
"Sat 26 Apr 2014 07:03:11"
0.9274
"$0.9282  (US dollars)"
$0.838801
*)

it doesn't appear to for the second ...

FinancialData[{"AUD", "USD"}, {2013}]
(* 
 Missing["NotAvailable"]
 *)

The Wolfram | Alpha query included above graphs a handful of previous years so some historical data can be extracted but clearly not in the systematic, fine-grained way one might expect from using FinancialData.

There is no mention of this particular missing data in the Documentation although apparently there can be periodic issues with the data sources and while directly accessing these sources offers a possible workaround, this only applies if the sources themselves provide API's for this historical data (which doesn't appear to be the case for one such source - Yahoo! Finance)

The documentation goes on to say:

FinancialDataprovides gateways to external financial data sources. Its use is subject to any restrictions associated with those sources, and may require additional licensing.

This is perhaps one such instance although few other claimed currency properties seem to be available and/or relevant (at least with my connection?)

With[{props = FinancialData[{"AUD", "USD"}, #] & /@ FinancialData[{"AUD", "USD"}, "Properties"]}, 
StringForm["`1` out of `2` of FinancialData's Currency Exchange properties available", 
Count[props, Except[_Missing | _FinancialData | {_Missing, ___}]],Length@props]]

(*
 4 out of 74 of FinancialData's Currency Exchange properties available
*)
$\endgroup$
10
  • 3
    $\begingroup$ The range of computational data available in Mathematica promises much but not making explicit current scope limitations is IMO unfortunate. Part of the power of the Wolfram Language lies in its generality and uniformity so it's a reasonable expectation that unless notified otherwise this will extend to data sources. Where it does not, either because curation is not yet possible or else subject to further licensing, making these explicit (perhaps graphically and/or through additional licensing instructions) would greatly assist users scoping out potential applications. $\endgroup$ Apr 26, 2014 at 0:32
  • 3
    $\begingroup$ The motivation of accessing this data comes from several recent hunches that the Australian dollar is significantly overvalued (anticipating a fall to ~80c by 2015 for future hunch-judgers) but don't particularly trust my intuition when it comes to predicting notorious currency movements - nor for that matter Australia's Reserve Bank or this country's economists. Whether big data-driven finance models can prove to be any less Sisyphean, Faustian or even King-Cnut-like is debatable but going there would at least appear inadvisable without access to such historical data. $\endgroup$ Apr 26, 2014 at 0:34
  • 2
    $\begingroup$ Indeed both questions seem highly related although they are posed differently. Some of the answers in that question are quite ingenious, but so are the ones provided here by the community. Can they be merged? $\endgroup$
    – Manuel
    Feb 1, 2016 at 4:53
  • $\begingroup$ The only problem with a merge is the additional work required to make the answers here make sense for the question there; if the authors do not mind this I will happily perform the merge. $\endgroup$
    – Mr.Wizard
    Feb 1, 2016 at 6:31
  • $\begingroup$ Bloomberg charges $2k/month per seat to their terminals, and have more than a thousand ppl in R&D. $\endgroup$ Feb 1, 2016 at 19:07

6 Answers 6

15
$\begingroup$

You can get exchange rates from the Federal Reserve using their data download package maker at:- http://www.federalreserve.gov/datadownload/

See the link for Exchange Rates and International Data.

The package maker produces a download link that can be used as shown.

startdate = "12/31/1995";
enddate = DateString[{"Month", "/", "Day", "/", "Year"}];

fxdownload = Import@StringJoin[
    "http://www.federalreserve.gov/datadownload/Output.aspx?rel=H10&series=91c3fa18b51a37d6c8bb96f5263c9409&lastObs=&from=",
    startdate, "&to=", enddate,
    "&filetype=csv&label=include&layout=seriescolumn"];
fxdata = Drop[fxdownload, 6];
datelistfx = Cases[fxdata, {_, _?NumberQ}];
datelistfx[[All, 1]] = Join[ToExpression@StringSplit[#, "-"],
      {0, 0, 0.}] & /@ datelistfx[[All, 1]];

DateListPlot[datelistfx, Joined -> True,
 PlotLabel -> StringJoin["Daily AUD/USD from ",
   DateString[datelistfx[[1, 1]], {"Day", "/", "Month", "/", "Year"}], " to ",
   DateString[datelistfx[[-1, 1]], {"Day", "/", "Month", "/", "Year"}]]]

enter image description here

$\endgroup$
10
$\begingroup$

Mathematica 10 has a way to do this: http://www.wolfram.com/mathematica/new-in-10/dimensional-variables/convert-currencies-using-historical-exchange-rates.html

The relevant new functions in Mathematica 10 are DatedUnit[] and InflationAdjust[]. If I wanted to convert 1 USD to EUR using the January 1, 2015 exchange rate, for example, I would execute:

InflationAdjust[
  Quantity[1, DatedUnit["USDollars", {2015, 1, 1}]],
  DatedUnit["Euros", {2015, 1, 1}]
]

Then I could run QuantityMagnitude[] on the result to get just the numeric value.

$\endgroup$
0
9
$\begingroup$

Mathematica's FinancialData (and the economic data in CountryData, for that matter) promise much but for serious work you are often better off going to other sources. That way you are more likely to get more detailed metadata so you know what you re looking at.

In your specific case you are better off going to the Reserve Bank of Australia’s web site, and using Import to extract their historical data in XLS format: http://www.rba.gov.au/statistics/hist-exchange-rates/index.html

While you are there, have a look at http://www.rba.gov.au/publications/rdp/2011/2011-05.html and http://www.rba.gov.au/foi/disclosure-log/rbafoi-131412.html

$\endgroup$
1
  • $\begingroup$ Wow! Those Aussies know their job!:) $\endgroup$ Apr 26, 2014 at 22:17
8
$\begingroup$

You also can use:

Financial data from Quandl in Wolfram Language using QuandlLink

<< QuandlLink`

AUDvsUSDrates = QuandlFinancialData["CURRFX/AUDUSD",
    startDate -> "1995-1-1", endDate -> "2015-5-1"];

DateListPlot[Transpose[{#[[All, 1]], #[[All, 2, 1]]} &@Rest[AUDvsUSDrates]], 
 PlotTheme -> "Detailed"]

enter image description here

$\endgroup$
5
$\begingroup$

You may derive data from WolframAlfa request (10Y period). Copy the Pod Plot (de facto Graphics) and get InputForm: enter image description here

Let's give the name rate to the result. We are looking for rate[[1, 2, 1, ;;-3]] part of data, which is the list with each element of the form {AbsoluteTime, exchange_rate * 100}. Note that I deleted last 3 elements (;;-3).

So, we just need to convert AbsoluteTime to DateList and adjust exchange rates:

dates = (DateList /@ rate[[1, 2, 1, ;; -3, 1]])[[;; , 1 ;; 3]];
exchange = rate[[1, 2, 1, ;; -3, 2]]/100;

data = Thread[{dates, exchange}]

To check the data:

DateListPlot[data]

enter image description here

I hope that helps.

$\endgroup$
1
  • $\begingroup$ @Mr.Wizard, I am fine with the idea but not familiar with merge technique, so please feel free to do whatever is needed. $\endgroup$
    – garej
    Feb 1, 2016 at 6:44
2
$\begingroup$

This is an extended comment rather than an answer.

There is some limited statistical data available by calling WolframAlpha. You have a choice of several formats for this data.

WolframAlpha["FinancialData[{\"AUD\",\"USD\"},{2013}]", {{"History", 1}, 
  "FormattedData"}, PodStates -> {"History__Last 10 years"}]

enter image description here

WolframAlpha["FinancialData[{\"AUD\",\"USD\"},{2013}]", {{"History", 1}, 
  "ComputableData"}, PodStates -> {"History__Last 10 years"}]

(*  {Missing["NotAvailable"], {{"10-year  minimum", 
   Quantity[1825.68, "AustralianDollars"]}, {"10-year  maximum", 
   Quantity[3335.82, "AustralianDollars"]}, {"10-year  average", 
   Quantity[2312.59, "AustralianDollars"]}}}  *)

WolframAlpha["FinancialData[{\"AUD\",\"USD\"},{2013}]", {{"History", 1}, 
  "QuantityData"}, PodStates -> {"History__Last 10 years"}]

(*  {Quantity[1825.68, "AustralianDollars"], 
 Quantity[3335.82, "AustralianDollars"], 
 Quantity[2312.59, "AustralianDollars"]}  *)

WolframAlpha["FinancialData[{\"AUD\",\"USD\"},{2013}]", {{"History", 1}, 
  "NumberData"}, PodStates -> {"History__Last 10 years"}]

(*  {1825.68, 3335.82, 2312.59}  *)
$\endgroup$
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.