Quandlex 0.1 released: Quandle API client for Elixir/Erlang

in utopian-io •  4 months ago

I'm releasing Quandlex, a new Elixir/Erlang library for Quandl API. Quandl provides unified access to multiple sources for financial, economic, and alternative datasets .

Links

Installation

The package can be installed by adding quandlex to your list of dependencies in mix.exs:

def deps do
  [
    {:quandlex, "~> 0.1.0"}
  ]
end

Quandlex.Timeseries

Quandlex.Timeseries includes several functions that match API endpoints:

  • get_data: returns both data and dataset metadata
  • get_dataset_metadata: returns only dataset metadata
  • get_database_metadata: returns database metadata
iex> {:ok, %{data: data, type: type}} = Quandlex.Timeseries.get_data("CHRIS", "MGEX_IH1")
iex> is_list(hd(data)) and is_list(data) and type == "Time Series"
true

iex> {:ok, %{name: name, id: id}} = Quandlex.Timeseries.get_database_metadata("CHRIS")
iex> name == "Wiki Continuous Futures" and id == 596
true

Response example


    {:ok,
      %{
       collapse: nil,
       column_index: nil,
       column_names: ["Date", "Open", "High", "Low", "Last", "Volume",
        "Open Interest"],
       data: [
         [~D[2019-04-30], nil, 486.0, 486.0, 486.0, 0.0, 0.0],
         [~D[2018-04-30], nil, 486.0, 486.0, 486.0, 0.0, 0.0],
         [~D[2018-04-27], nil, 474.0, 474.0, 474.0, 0.0, 0.0],
         [...],
         ...
       ],
       database_code: "CHRIS",
       database_id: 596,
       dataset_code: "MGEX_IH1",
       description: "Historical Futures Prices: Minneapolis HRWI Hard Red Wheat Futures, Continuous Contract #1. Non-adjusted price based on spot-month continuous contract calculations. Raw data from MGEX.",
       end_date: "2019-04-30",
       frequency: "daily",
       id: 9774107,
       limit: nil,
       name: "Minneapolis HRWI Hard Red Wheat Futures, Continuous Contract #1 (IH1) (Front Month)",
       newest_available_date: "2019-04-30",
       oldest_available_date: "2005-01-03",
       order: nil,
       premium: false,
       refreshed_at: "2018-05-08T18:27:06.846Z",
       start_date: "2005-01-03",
       transform: nil,
       type: "Time Series"
      }}

Quandlex.Forex

Quandlex.Forex is a utility module that makes fetching historical data of foreign exchange rates simpler and easier.

Quandl provides free (albeit limited for non-registered users) data of forex rates sourced from Bank of England, Federal Reserve and European Central Bank.

More about Quandle Forex API

You can use get_rates/2 or get_rates/3 function without wasting time on searching for special currency codes for every bank database.

For example, instead of using Quandlex.Timeseries.get_data("BOE", "XUDLJYD") you can call Quandlex.Forex.get_rates("USD", "JPY", source: "BOE")

Examples

iex> {:ok, %{data: data, type: type, database_code: database_code}} = Quandlex.Forex.get_rates("HKD", "USD")
iex> database_code === "FRED" and is_list(data) and type == "Time Series"
true

iex> {:ok, %{data: data, type: type, database_code: database_code}} = Quandlex.Forex.get_rates("HKD", "USD", source: "BOE")
iex> database_code === "BOE" and is_list(data) and type == "Time Series"
true

iex> {:ok, %{data: data, type: type, database_code: database_code}} = Quandlex.Forex.get_rates("THB", "EUR", source: "ECB")
iex> database_code === "ECB" and is_list(data) and type == "Time Series"
true

Response example

  {:ok,
  %{
   collapse: nil,
   column_index: nil,
   column_names: ["Date", "Value"],
   data: [
     [~D[2018-05-18], 7.8498],
     [~D[2018-05-17], 7.8496],
     [~D[2018-05-16], 7.8499],
     [...],
     ...
   ],
   database_code: "FRED",
   database_id: 118,
   dataset_code: "DEXHKUS",
   description: "Hong Kong Dollars to One U.S. Dollar Not Seasonally Adjusted, Noon buying rates in New York City for cable transfers payable in foreign currencies. ",
   end_date: "2018-05-18",
   frequency: "daily",
   id: 121063,
   limit: nil,
   name: "Hong Kong / U.S. Foreign Exchange Rate",
   newest_available_date: "2018-05-18",
   oldest_available_date: "1981-01-02",
   order: nil,
   premium: false,
   refreshed_at: "2018-05-27T03:10:46.002Z",
   start_date: "1981-01-02",
   transform: nil,
   type: "Time Series"
  }}
  """

Roadmap

  • [ ] Add datatables module
  • [ ] Add structs for return values
  • [ ] Investigate developer experience improvements using rate limiting utilities and caching

(*`□)<炎炎炎炎

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you for your contribution.

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Hey @ontofractal
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Contributing on Utopian
Learn how to contribute on our website or by watching this tutorial on Youtube.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!