{"id":27741537,"url":"https://github.com/sbacarob/vantagex","last_synced_at":"2026-03-13T14:32:25.758Z","repository":{"id":62430683,"uuid":"155001399","full_name":"sbacarob/vantagex","owner":"sbacarob","description":"Elixir wrapper for Alpha Vantage","archived":false,"fork":false,"pushed_at":"2019-12-28T18:45:35.000Z","size":60,"stargazers_count":8,"open_issues_count":8,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-23T00:59:32.600Z","etag":null,"topics":["alpha-vantage","elixir","hacktoberfest2020"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sbacarob.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-27T19:28:01.000Z","updated_at":"2025-08-26T05:09:13.000Z","dependencies_parsed_at":"2022-11-01T20:30:40.866Z","dependency_job_id":null,"html_url":"https://github.com/sbacarob/vantagex","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sbacarob/vantagex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbacarob%2Fvantagex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbacarob%2Fvantagex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbacarob%2Fvantagex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbacarob%2Fvantagex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbacarob","download_url":"https://codeload.github.com/sbacarob/vantagex/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbacarob%2Fvantagex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30468304,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpha-vantage","elixir","hacktoberfest2020"],"created_at":"2025-04-28T16:20:44.673Z","updated_at":"2026-03-13T14:32:25.733Z","avatar_url":"https://github.com/sbacarob.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vantagex\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Docs](https://img.shields.io/badge/api-docs-green.svg?style=flat)](https://hexdocs.pm/vantagex/0.1.5) [![Hex.pm Version](https://img.shields.io/hexpm/v/vantagex.svg?style=flat)](https://hex.pm/packages/vantagex)\n\n#### Elixir wrapper for Alpha Vantage API\n\n[Alpha Vantage](https://alphavantage.co) offers free financial APIs in JSON and CSV formats, providing access to realtime and historical stock data. As well as forex and cryptocurrency feeds, and 50+ technical indicators.\n\n## Roadmap\n\nHere's the complete (desired) list of features. Checked items are the ones already implemented.\n\n- [x] Base API with support for all of the Alpha Vantage API params but nothing else\n- [x] Dedicated module for Timeseries functions\n- [x] Dedicated module for Forex functions\n- [x] Dedicated module for the cryptocurrencies functions\n- [x] Dedicated module for the indicators functions\n- [ ] 'Watch' option for stocks\n\n## Installation\n\nFirst, add :vantagex to your deps list in your `mix.exs` file\n\n```elixir\ndef deps do\n  [\n    {:vantagex, \"~\u003e 0.1\"}\n  ]\nend\n```\n\nThen, make sure to add your Alpha Vantage API key to your config files `config.exs` or environment specific, like `dev.exs`\n\n\u003e If you don't have an Alpha Vantage API key, you can get one for free [here](https://www.alphavantage.co/support/#api-key)\n\n```elixir\nconfig :vantagex,\n  api_key: \"YOUR_API_KEY\"\n```\n\nFinally run `$ mix deps.get` and you should be good to go.\n\n## Time Series functions\n\nYou can call Alpha Vantage's Time Series functions with the `Vantagex.TimeSeries` module:\n\n```elixir\niex\u003e Vantagex.TimeSeries.daily_adjusted(\"GOOG\")\n%{\n  \"Meta Data\" =\u003e %{\n    \"1. Information\" =\u003e \"Daily Time Series with Splits and Dividend Events\",\n    \"2. Symbol\" =\u003e \"GOOG\",\n    \"3. Last Refreshed\" =\u003e \"2019-02-08 16:00:01\",\n    \"4. Output Size\" =\u003e \"Compact\",\n    \"5. Time Zone\" =\u003e \"US/Eastern\"\n  },\n  \"Time Series (Daily)\" =\u003e %{\n    \"2018-11-12\" =\u003e %{\n      \"1. open\" =\u003e \"1061.3900\",\n      \"2. high\" =\u003e \"1062.1200\",\n      \"3. low\" =\u003e \"1031.0000\",\n      \"4. close\" =\u003e \"1038.6300\",\n      \"5. adjusted close\" =\u003e \"1038.6300\",\n      \"6. volume\" =\u003e \"1471758\",\n      \"7. dividend amount\" =\u003e \"0.0000\",\n      \"8. split coefficient\" =\u003e \"1.0000\"\n    },\n    \"2018-12-06\" =\u003e %{\n      \"1. open\" =\u003e \"1034.2600\",\n      \"2. high\" =\u003e \"1071.2000\",\n      \"3. low\" =\u003e \"1030.7700\",\n      \"4. close\" =\u003e \"1068.7300\",\n      \"5. adjusted close\" =\u003e \"1068.7300\",\n      \"6. volume\" =\u003e \"2769225\",\n      \"7. dividend amount\" =\u003e \"0.0000\",\n      \"8. split coefficient\" =\u003e \"1.0000\"\n    },\n    ...\n  }\n}\n```\n\nThese functions take the ticker symbol and accept an optional opts object, allowed options are `:outputsize` and `:datatype`. The only function that requires an extra argument is `intraday/3`, which expects the interval as an integer value:\n\n```elixir\niex\u003e Vantagex.TimeSeries.intraday(\"GOOG\", 5) # 5 minute interval\n%{\n  \"Meta Data\" =\u003e %{\n    \"1. Information\" =\u003e \"Intraday (5min) open, high, low, close prices and volume\",\n    \"2. Symbol\" =\u003e \"GOOG\",\n    \"3. Last Refreshed\" =\u003e \"2019-02-08 16:00:00\",\n    \"4. Interval\" =\u003e \"5min\",\n    \"5. Output Size\" =\u003e \"Compact\",\n    \"6. Time Zone\" =\u003e \"US/Eastern\"\n  },\n  \"Time Series (5min)\" =\u003e %{\n    \"2019-02-07 15:50:00\" =\u003e %{\n      \"1. open\" =\u003e \"1096.2900\",\n      \"2. high\" =\u003e \"1096.6400\",\n      \"3. low\" =\u003e \"1095.5500\",\n      \"4. close\" =\u003e \"1095.9720\",\n      \"5. volume\" =\u003e \"22465\"\n    },\n    \"2019-02-07 14:40:00\" =\u003e %{\n      \"1. open\" =\u003e \"1093.5500\",\n      \"2. high\" =\u003e \"1093.9301\",\n      \"3. low\" =\u003e \"1092.7000\",\n      \"4. close\" =\u003e \"1093.0000\",\n      \"5. volume\" =\u003e \"11702\"\n    },\n    ...\n  }\n}\n```\n\n### Output format\n\nAs you may notice, these functions return an Elixir Map. This is the default option. However, you can get plaintext JSON or CSV responses, by specifying the `:datatype` option:\n\n```elixir\niex\u003e Vantagex.TimeSeries.intraday(\"GOOG\", 5, datatype: :csv)\n\"timestamp,open,high,low,close,volume\\r\\n2019-02-04 16:00:00,1130.7800,1132.4301,1130.5000,1132.4301,122109\\r\\n2019-02-04 15:55:00,1129.9800,1130.7900,1129.3140,1130.4685,52596\\r\\n2019-02-04 15:50:00,1129.2600,1130.2520,1128.8500,1129.8600,50110\\r\\n2019-02-04 15:45:00,1126.7550,1129.4750,1126.7550,1129.4100,33314\\r\\n2019-02-04 15:40:00,1127.7600,1127.7600,1125.3700,1126.4900,42554\\r\\n2019-02-04 15:35:00,1130.2900,1130.2900,1127.7006,1127.7006,36706\\r\\n2019-02-04 15:30:00,1131.1500,1131.5450,1130.3400,1130.6600,17684\\r\\n2019-02-04 15:25:00,1131.5900,1132.0100,1130.6899,1130.9900,20110\\r\\n2019-02-04 15:20:00,1130.7800,1131.7999,1130.7130,1131.3280,19301\\r\\n2019-02-04 15:15:00,1129.8400,1131.5500,1129.8400,1130.5072,36392\\r\\n2019-02-04 15:10:00,1129.0200,1130.1187,1128.0400,1130.1187,25009\\r\\n2019-02-04 15:05:00,1129.9000,1129.9998,1128.9301,1129.1600,15658\\r\\n2019-02-04 15:00:00,1130.0000,1130.4399,1129.7700,1130.0699,21459\\r\\n2019-02-04 14:55:00,1128.5500,1129.9000,1128.5500,1129.9000,41086\\r\\n2019-02-04 14:50:00,1128.8400,1128.9718,1127.8025,1128.3900,14609\\r\\n2019-02-04 14:45:00,1127.6191,1129.0000,1127.6191,1128.5900,12154\\r\\n...\"\n```\n\nFor more information, see the module's documentation.\n\n## Forex functions.\n\nYou can call Alpha Vantage's forex functions using the `Vantagex.Forex` module\n\n```elixir\niex\u003e Vantagex.Forex.intraday(\"USD\", \"COP\", 5)\n%{\n  \"Meta Data\" =\u003e %{\n    \"1. Information\" =\u003e \"FX Intraday (5min) Time Series\",\n    \"2. From Symbol\" =\u003e \"USD\",\n    \"3. To Symbol\" =\u003e \"COP\",\n    \"4. Last Refreshed\" =\u003e \"2019-02-17 22:40:00\",\n    \"5. Interval\" =\u003e \"5min\",\n    \"6. Output Size\" =\u003e \"Compact\",\n    \"7. Time Zone\" =\u003e \"UTC\"\n  },\n  \"Time Series FX (5min)\" =\u003e %{\n    \"2019-02-17 17:45:00\" =\u003e %{\n      \"1. open\" =\u003e \"3130.0000\",\n      \"2. high\" =\u003e \"3130.0000\",\n      \"3. low\" =\u003e \"3130.0000\",\n      \"4. close\" =\u003e \"3130.0000\"\n    },\n    ...\n  }\n}\n```\n\nThese functions take two currencies (their ISO 4217 code. e.g. \"USD\"), as well as options to set\ndatatype and outputsize, just like TimeSeries.\n\nThe only function from `Vantagex.Forex` that requires an extra argument is `intraday/4`, which expects\nan integer that determines the interval in minutes, as shown in the example above.\n\nOutput format works the same as TimeSeries.\n\nFor more information, see the module's documentation.\n\n## Cryptocurrencies functions.\n\nYou can call Alpha Vantage's cryptocurrencies functions using the `Vantagex.Cryptocurrencies` module\n\n```elixir\niex\u003e Vantagex.Cryptocurrencies.daily(\"BTC\", \"USD\")\n%{\n  \"Meta Data\" =\u003e %{\n    \"1. Information\" =\u003e \"Daily Prices and Volumes for Digital Currency\",\n    \"2. Digital Currency Code\" =\u003e \"BTC\",\n    \"3. Digital Currency Name\" =\u003e \"Bitcoin\",\n    \"4. Market Code\" =\u003e \"USD\",\n    \"5. Market Name\" =\u003e \"United States Dollar\",\n    \"6. Last Refreshed\" =\u003e \"2019-03-09 (end of day)\",\n    \"7. Time Zone\" =\u003e \"UTC\"\n  },\n  \"Time Series (Digital Currency Daily)\" =\u003e %{\n    \"2017-07-13\" =\u003e %{\n      \"1a. open (USD)\" =\u003e \"2397.70831714\",\n      \"1b. open (USD)\" =\u003e \"2397.70831714\",\n      \"2a. high (USD)\" =\u003e \"2429.55116636\",\n      \"2b. high (USD)\" =\u003e \"2429.55116636\",\n      \"3a. low (USD)\" =\u003e \"2329.24694466\",\n      \"3b. low (USD)\" =\u003e \"2329.24694466\",\n      \"4a. close (USD)\" =\u003e \"2353.72968273\",\n      \"4b. close (USD)\" =\u003e \"2353.72968273\",\n      \"5. volume\" =\u003e \"73837.90295505\",\n      \"6. market cap (USD)\" =\u003e \"173794463.89599040\"\n    },\n    \"2018-11-12\" =\u003e %{\n      \"1a. open (USD)\" =\u003e \"6404.47988049\",\n      \"1b. open (USD)\" =\u003e \"6404.47988049\",\n      \"2a. high (USD)\" =\u003e \"6435.95061677\",\n      \"2b. high (USD)\" =\u003e \"6435.95061677\",\n      \"3a. low (USD)\" =\u003e \"6359.81993277\",\n      \"3b. low (USD)\" =\u003e \"6359.81993277\",\n      \"4a. close (USD)\" =\u003e \"6375.86047086\",\n      \"4b. close (USD)\" =\u003e \"6375.86047086\",\n      \"5. volume\" =\u003e \"57756.07950395\",\n      \"6. market cap (USD)\" =\u003e \"368244704.26095134\"\n    },\n  ...\n  }\n}\n```\n\nThese functions take the digital or crypto currency and the market, as well as options to set\ndatatype and outputsize, just like TimeSeries.\n\n## Technical Indicators functions\n\nYou can call Alpha Vantage's techincal indicators functions using the `Vantagex.TechnicalIndicators` module.\n\nAll of the functions under this module take all of the API parameters that are required, and an additional `opts` keyword list which can be used to pass extra parameters available to the functions.\n\nSo, for instance, if you wanted to call the Bollinger bands API for the close values of the `\"GOOG\"` stock, with `:daily` intervals, and a window of `20`, with a standard deviation of `1` both up and down, you would do it like this:\n\n```elixir\nVantagex.TechnicalIndicators.bbands(\"GOOG\", :daily, 20, :close, nbdevup: 1, nbdevdn: 1)\n```\n\nAs you can see in [Alpha Vantage's docs for this function](https://www.alphavantage.co/documentation/#bbands), for this function `symbol`, `interval`, `time_period`, and `series_type` are required parameters, that's why you pass those four values in. And then you have `nbdevup`, `nbdevdn`, `matype`, and `datatype` as optional parameters, thus, you pass those in the `opts` list. The `function` name and the `apikey` are also required, but those shouldn't be passed in, since they are already pulled from the config.\n\nThis would produce a response like this:\n\n```elixir\n%{\n  \"Meta Data\" =\u003e %{\n    \"1: Symbol\" =\u003e \"GOOG\",\n    \"2: Indicator\" =\u003e \"Bollinger Bands (BBANDS)\",\n    \"3: Last Refreshed\" =\u003e \"2019-10-25\",\n    \"4: Interval\" =\u003e \"daily\",\n    \"5: Time Period\" =\u003e 20,\n    \"6.1: Deviation multiplier for upper band\" =\u003e 1,\n    \"6.2: Deviation multiplier for lower band\" =\u003e 1,\n    \"6.3: MA Type\" =\u003e 0,\n    \"7: Series Type\" =\u003e \"close\",\n    \"8: Time Zone\" =\u003e \"US/Eastern Time\"\n  },\n  \"Technical Analysis: BBANDS\" =\u003e %{\n    \"2017-07-13\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"915.9401\",\n      \"Real Middle Band\" =\u003e \"935.2200\",\n      \"Real Upper Band\" =\u003e \"954.4999\"\n    },\n    \"2010-12-07\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"284.9546\",\n      \"Real Middle Band\" =\u003e \"293.6493\",\n      \"Real Upper Band\" =\u003e \"302.3441\"\n    },\n    \"2011-06-30\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"242.0506\",\n      \"Real Middle Band\" =\u003e \"249.3182\",\n      \"Real Upper Band\" =\u003e \"256.5859\"\n    },\n    \"2012-08-03\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"288.5434\",\n      \"Real Middle Band\" =\u003e \"300.6135\",\n      \"Real Upper Band\" =\u003e \"312.6835\"\n    },\n    \"2012-08-23\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"316.3829\",\n      \"Real Middle Band\" =\u003e \"325.2354\",\n      \"Real Upper Band\" =\u003e \"334.0880\"\n    },\n    \"2012-01-17\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"310.1277\",\n      \"Real Middle Band\" =\u003e \"317.1253\",\n      \"Real Upper Band\" =\u003e \"324.1230\"\n    },\n    \"2018-11-12\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1046.5269\",\n      \"Real Middle Band\" =\u003e \"1074.0660\",\n      \"Real Upper Band\" =\u003e \"1101.6051\"\n    },\n    \"2018-05-29\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1046.7046\",\n      \"Real Middle Band\" =\u003e \"1068.5640\",\n      \"Real Upper Band\" =\u003e \"1090.4234\"\n    },\n    \"2010-04-09\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"278.2627\",\n      \"Real Middle Band\" =\u003e \"281.2169\",\n      \"Real Upper Band\" =\u003e \"284.1711\"\n    },\n    \"2008-09-22\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"211.8627\",\n      \"Real Middle Band\" =\u003e \"222.1877\",\n      \"Real Upper Band\" =\u003e \"232.5126\"\n    },\n    \"2005-02-22\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"93.2264\",\n      \"Real Middle Band\" =\u003e \"96.8609\",\n      \"Real Upper Band\" =\u003e \"100.4954\"\n    },\n    \"2018-02-20\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1051.9637\",\n      \"Real Middle Band\" =\u003e \"1107.7015\",\n      \"Real Upper Band\" =\u003e \"1163.4393\"\n    },\n    \"2010-10-18\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"255.0257\",\n      \"Real Middle Band\" =\u003e \"267.7918\",\n      \"Real Upper Band\" =\u003e \"280.5578\"\n    },\n    \"2009-09-25\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"229.3201\",\n      \"Real Middle Band\" =\u003e \"237.3000\",\n      \"Real Upper Band\" =\u003e \"245.2800\"\n    },\n    \"2011-01-18\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"297.9082\",\n      \"Real Middle Band\" =\u003e \"303.2645\",\n      \"Real Upper Band\" =\u003e \"308.6209\"\n    },\n    \"2017-08-09\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"927.5829\",\n      \"Real Middle Band\" =\u003e \"945.5385\",\n      \"Real Upper Band\" =\u003e \"963.4941\"\n    },\n    \"2006-07-12\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"196.2076\",\n      \"Real Middle Band\" =\u003e \"202.9005\",\n      \"Real Upper Band\" =\u003e \"209.5933\"\n    },\n    \"2005-06-27\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"138.7568\",\n      \"Real Middle Band\" =\u003e \"142.3265\",\n      \"Real Upper Band\" =\u003e \"145.8963\"\n    },\n    \"2008-11-17\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"156.5398\",\n      \"Real Middle Band\" =\u003e \"168.0404\",\n      \"Real Upper Band\" =\u003e \"179.5410\"\n    },\n    \"2010-06-30\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"233.5966\",\n      \"Real Middle Band\" =\u003e \"241.1621\",\n      \"Real Upper Band\" =\u003e \"248.7276\"\n    },\n    \"2004-12-08\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"84.3380\",\n      \"Real Middle Band\" =\u003e \"87.3474\",\n      \"Real Upper Band\" =\u003e \"90.3567\"\n    },\n    \"2016-02-16\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"683.8266\",\n      \"Real Middle Band\" =\u003e \"708.3675\",\n      \"Real Upper Band\" =\u003e \"732.9084\"\n    },\n    \"2012-09-26\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"341.9084\",\n      \"Real Middle Band\" =\u003e \"353.4631\",\n      \"Real Upper Band\" =\u003e \"365.0179\"\n    },\n    \"2017-08-04\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"929.6691\",\n      \"Real Middle Band\" =\u003e \"946.7220\",\n      \"Real Upper Band\" =\u003e \"963.7749\"\n    },\n    \"2014-10-30\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"526.2241\",\n      \"Real Middle Band\" =\u003e \"544.2130\",\n      \"Real Upper Band\" =\u003e \"562.2019\"\n    },\n    \"2013-03-15\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"396.6416\",\n      \"Real Middle Band\" =\u003e \"404.8498\",\n      \"Real Upper Band\" =\u003e \"413.0580\"\n    },\n    \"2014-07-29\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"577.0440\",\n      \"Real Middle Band\" =\u003e \"584.4662\",\n      \"Real Upper Band\" =\u003e \"591.8885\"\n    },\n    \"2018-07-23\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1118.7867\",\n      \"Real Middle Band\" =\u003e \"1153.0455\",\n      \"Real Upper Band\" =\u003e \"1187.3043\"\n    },\n    \"2018-01-24\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1067.2546\",\n      \"Real Middle Band\" =\u003e \"1104.5705\",\n      \"Real Upper Band\" =\u003e \"1141.8864\"\n    },\n    \"2018-01-03\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1031.8574\",\n      \"Real Middle Band\" =\u003e \"1050.5845\",\n      \"Real Upper Band\" =\u003e \"1069.3116\"\n    },\n    \"2015-10-09\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"611.4766\",\n      \"Real Middle Band\" =\u003e \"626.6645\",\n      \"Real Upper Band\" =\u003e \"641.8524\"\n    },\n    \"2013-01-10\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"351.1339\",\n      \"Real Middle Band\" =\u003e \"357.8278\",\n      \"Real Upper Band\" =\u003e \"364.5216\"\n    },\n    \"2018-12-06\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1033.6873\",\n      \"Real Middle Band\" =\u003e \"1059.0850\",\n      \"Real Upper Band\" =\u003e \"1084.4827\"\n    },\n    \"2011-11-02\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"272.3310\",\n      \"Real Middle Band\" =\u003e \"285.3788\",\n      \"Real Upper Band\" =\u003e \"298.4267\"\n    },\n    \"2012-12-05\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"326.1733\",\n      \"Real Middle Band\" =\u003e \"333.9057\",\n      \"Real Upper Band\" =\u003e \"341.6381\"\n    },\n    \"2006-04-03\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"168.2978\",\n      \"Real Middle Band\" =\u003e \"178.2354\",\n      \"Real Upper Band\" =\u003e \"188.1731\"\n    },\n    \"2018-10-09\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"1157.2593\",\n      \"Real Middle Band\" =\u003e \"1174.5160\",\n      \"Real Upper Band\" =\u003e \"1191.7727\"\n    },\n    \"2015-02-25\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"523.1272\",\n      \"Real Middle Band\" =\u003e \"533.1575\",\n      \"Real Upper Band\" =\u003e \"543.1878\"\n    },\n    \"2011-09-12\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"254.9090\",\n      \"Real Middle Band\" =\u003e \"262.4308\",\n      \"Real Upper Band\" =\u003e \"269.9527\"\n    },\n    \"2015-11-18\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"700.9240\",\n      \"Real Middle Band\" =\u003e \"719.1615\",\n      \"Real Upper Band\" =\u003e \"737.3990\"\n    },\n    \"2007-06-22\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"247.7323\",\n      \"Real Middle Band\" =\u003e \"252.8249\",\n      \"Real Upper Band\" =\u003e \"257.9174\"\n    },\n    \"2005-03-15\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"90.0222\",\n      \"Real Middle Band\" =\u003e \"93.3613\",\n      \"Real Upper Band\" =\u003e \"96.7005\"\n    },\n    \"2005-12-16\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"201.9022\",\n      \"Real Middle Band\" =\u003e \"206.1637\",\n      \"Real Upper Band\" =\u003e \"210.4253\"\n    },\n    \"2011-12-05\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"290.1793\",\n      \"Real Middle Band\" =\u003e \"298.5353\",\n      \"Real Upper Band\" =\u003e \"306.8912\"\n    },\n    \"2005-07-19\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"144.7881\",\n      \"Real Middle Band\" =\u003e \"147.5178\",\n      \"Real Upper Band\" =\u003e \"150.2475\"\n    },\n    \"2011-02-24\" =\u003e %{\n      \"Real Lower Band\" =\u003e \"302.6647\",\n      \"Real Middle Band\" =\u003e \"306.7161\",\n      ...\n    },\n    \"2006-07-06\" =\u003e %{\"Real Lower Band\" =\u003e \"192.7600\", ...},\n    \"2013-09-27\" =\u003e %{...},\n    ...\n  }\n}\n```\n\nYou can check the module's or the functions' docs for detailed information on the arguments and optional params of each function.\n\n## Calling the general API function\n\nYou can call the base API function, which should support all of the existing APIs provided by Alpha Vantage using `Vantagex.call_api`, like so:\n\n```elixir\n# Use the TIME_SERIES_DAILY function\niex\u003e params = %{symbol: \"GOOG\", outputsize: \"full\"}\n%{outputsize: \"full\", symbol: \"GOOG\"}\niex\u003e Vantagex.call_api(\"TIME_SERIES_DAILY\", params)\n%{\n  \"Meta Data\" =\u003e %{\n    \"1. Information\" =\u003e \"Daily Prices (open, high, low, close) and Volumes\",\n    \"2. Symbol\" =\u003e \"GOOG\",\n    \"3. Last Refreshed\" =\u003e \"2019-01-04\",\n    \"4. Output Size\" =\u003e \"Full size\",\n    \"5. Time Zone\" =\u003e \"US/Eastern\"\n  },\n  \"Time Series (Daily)\" =\u003e %{\n    \"2017-07-13\" =\u003e %{\n      \"1. open\" =\u003e \"946.2900\",\n      \"2. high\" =\u003e \"954.4500\",\n      \"3. low\" =\u003e \"943.0100\",\n      \"4. close\" =\u003e \"947.1600\",\n      \"5. volume\" =\u003e \"1291782\"\n    },\n    \"2018-11-12\" =\u003e %{\n      \"1. open\" =\u003e \"1061.3900\",\n      \"2. high\" =\u003e \"1062.1200\",\n      \"3. low\" =\u003e \"1031.0000\",\n      \"4. close\" =\u003e \"1038.6300\",\n      \"5. volume\" =\u003e \"1471758\"\n    },\n    \"2018-05-29\" =\u003e %{\n      \"1. open\" =\u003e \"1064.8900\",\n      \"2. high\" =\u003e \"1073.3700\",\n      \"3. low\" =\u003e \"1055.2200\",\n      \"4. close\" =\u003e \"1060.3200\",\n      \"5. volume\" =\u003e \"1865139\"\n    },\n    ...\n  }\n}\n```\n\u003e Notice that the result has no particular order. This is because of the way maps work in Elixir.\n\nYou can pass any of the options allowed by Alpha Vantage to the `params` map. However, if you fail to include one of the required params (Except for `apikey` and `function` which should not be passed in `params`), you'll get an error like this:\n\n```elixir\n%{\n  \"Error Message\" =\u003e \"Invalid API call. Please retry or visit the documentation (https://www.alphavantage.co/documentation/) for TIME_SERIES_DAILY.\"\n}\n```\n\nOr, in case you attempt to call an unknown function, you'll get a different error message:\n\n```elixir\niex\u003e Vantagex.call_api(\"TIME_SERIES_QUARTERLY\", %{symbol: \"GOOG\"})\n{:error, \"Unknown function: 'TIME_SERIES_QUARTERLY'\"}\n```\n\n## Passing HTTPoison options\n\nSome of the options that HTTPoison allows per request, are allowed to be configured for all requests, not per request.\n\nThe supported options are:\n\n* `:timeout` - the timeout for establishing the connection, in milliseconds. Defaults to 8000\n* `:recv_timeout` - the timeout for receiving an HTTP response. Defaults to 5000\n* `:proxy` - from HTTPoison docs: \"a proxy to be used for the request; it can be a regular url or a {Host, Port} tuple, or a {:socks5, ProxyHost, ProxyPort} tuple\"\n* `:proxy_auth` - from HTTPoison docs: \"proxy authentication {User, Password} tuple\"\n\nAll of these options are to be defined in the application configuration, under `:vantagex`. Like:\n\n```elixir\nconfig :vantagex,\n  api_key: \"YOUR_API_KEY\",\n  recv_timeout: 30_000 # Sets a 30 second timeout for the requests\n```\n\nYou cand find more about these options in [HTTPoison's docs](https://hexdocs.pm/httpoison/HTTPoison.Request.html)\n\n## Running the project by itself\n\nTo clone and run this project by itself run:\n\n```bash\n$ git clone https://github.com/sbacarob/vantagex.git\n$ cd vantagex\n$ iex -S mix\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbacarob%2Fvantagex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbacarob%2Fvantagex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbacarob%2Fvantagex/lists"}