v0.1.14

Bug Fix

  • get_all_symbols no longer uses dumbstockapi.com, which has gone offline. It now reads the official Nasdaq Trader symbol directory (nasdaqtrader.com/dynamic/SymDir) instead.
  • validate_symbol no longer reports a perfectly valid ticker as invalid when Yahoo declines to answer. Only a 404 is now treated as "not a valid symbol"; any other status - most commonly 429 when rate limited - emits a warning instead of quietly masquerading as a definitive answer.
  • get_Options no longer throws a BoundsError for a valid symbol that has no options chain at all (e.g. ADANIENT.NS). It now returns the same empty calls/puts structure that a date without contracts already returned.
  • get_Fundamental no longer blames the ticker when the symbol check itself is rate limited. It falls back to the usual "no data" behaviour rather than claiming the symbol is invalid.

Improvements

  • get_all_symbols now returns symbols in Yahoo Finance's convention, so they can be passed directly to get_prices and the other data functions. Share classes (BRK.ABRK-A), preferreds (ABR-DABR-PD), units (AAC=AAC-UN), warrants (ACHR+ACHR-WT), and rights (JACS^JACS-RI) are all translated. Pass the new yahoo=false keyword to get the raw exchange symbols.
  • get_all_symbols gained two markets: ARCA (NYSE Arca) and BATS (Cboe BZX).
  • get_quoteSummary, get_Options and get_Fundamental now make one request instead of two. Each of them used to fire an extra validate_symbol request before the real one, purely so an unknown ticker could be reported nicely. An invalid symbol is now recognised from the response itself. This halves the number of API calls these functions make and makes them roughly twice as fast, which also makes hitting Yahoo's rate limit far less likely.
  • get_Fundamental is the one exception: Yahoo's fundamentals endpoint answers an unknown ticker and a valid ticker with no data in the requested window identically, so the symbol still has to be checked separately - but now only when the response comes back empty, never on the normal path. All three functions keep their exact inputs, return values, return types and throw_error behaviour.
  • Fixed a number of typos in docstrings, warnings and error messages.

Breaking

  • get_all_symbols no longer supports the SZSE market. The Nasdaq Trader directory is US-only, and there is no comparable free and stable feed for Shenzhen. SZSE was listed in MARKETS but was never documented or tested.
v0.1.13

Compat

  • getOption allows choosing an expirationdate (#35)
v0.1.11

Compat

  • Increase compat for TimeSeries.jl to include 0.25 (#34)
v0.1.10

Improvements

  • get_prices now supports the retrieval of minute level data for periods longer than 7 days. This is facilitated by making multiple requests and stitching the responses together (minute data still needs to be within the last 30 days - this is a limit set by Yahoo)
  • get_prices now allows startdt and enddt to be of different types (e.g., startdt="2024-01-01", enddt=today() is now valid)
  • The range argument in get_prices has been reworked to convert to startdt and enddt. Previously, this parameter was simply passed to the Yahoo API. The new way brings multiple improvements:
    • more flexible range inputs
    • specified intervals are now observed
  • Significant code refactoring for improved maintainability and readability of the get_prices function
  • get_prices now returns a OrderedDict{String, Union{String,Vector{DateTime},Vector{Float64}}} rather than OrderedDict{String,Any}
  • Added precompilation for the response processing part of the get_prices function only
v0.1.9

Bug Fix

  • Getting rid of precompilation. Precompilation hangs and also doesn't work if a proxy is required (#23)
v0.1.8

Bug Fix

  • get_prices fixes indexing error when divsplits=true (#22)
v0.1.7

Bug Fix

  • get_prices, get_splits, get_dividends now error more nicely when there is no data for the selected date range. (#19)
v0.1.6

Improvements

  • get_prices can now return dividends and splits (#11, #18)
  • get_prices can now directly return TimeArrays (TimeSeries.jl) and TSFrame (TSFrames.jl). Julia 1.9 is required and the respective packages need to be loaded
  • added some precompilation for get_prices (this will require a valid internet connection when the package is loaded first/installed)

New Functionality

  • get_splits returns stock split information
  • get_dividends returns dividend information
  • sink_prices_to allows for easy conversion to TimeArrays (TimeSeries.jl) and TSFrame (TSFrames.jl). Julia 1.9 is required and the respective packages need to be loaded
v0.1.5

Bug Fix

  • Implemented Cookies and Crumbs to fix get_quoteSummary() and all functions depending on it (#14)
v0.1.4

Bug Fix

  • get_prices now returns dictionaries containing price vectors of type Array{Float64} rather than Array{ Union{Nothing,Float64}} (#7)

Improvements

  • get_prices now runs faster than before.

New Functionality

  • get_symbols allows the user to search for yahoo finance symbols from (partial) company/security names
  • get_all_symbols exposes all tickers from the NASDAQ, AMEX, and NYSE exchanges (#8)
  • search_news now allows for news searches

Docs

  • Added documentation for the new functionality
  • Added a clarification statement in the Readme.md and Docs that YFinance uses API endpoints to access data and does not suffer from decryption issues (#6)
v0.1.3

Bug Fix

  • get_prices would error when autoadjust=true for some tickers when Yahoo returns nothing for some observations in the price time series. The update now does not error in this cases and returns NaN for the missing datapoints. NaN is used instead of Missing because of performance improvements and the ability to integrate YFinance.jl with TimeSeries.jl. (#5)
    • Thank you RaSi96 for reporting this bug and helping me sort it out!

Docs

  • Improved documentation for get_prices (#5)
    • When the range keyword is used instead of startdt and enddt the specified interval is not observed by Yahoo at longer ranges. To enforce the specified interval use startdt and enddt instead.
    • Data points that yahoo returns as nothing are returned as NaN. It seems like Yahoo thinks it should have price information for these timestamps but does not have them and thus returns nothing.

Other

  • Added a test case for the stock "ADANIENT.NS". The time series of the stock prices contains the nothing values mentioned in the Bug Fix. (#5)
v0.1.2

Changes

  • Return OrderedDict from OrderedCollections.jl instead of Dict
    • Should be non breaking as all functions that work for Base.Dict also work for OrderedCollections.OrderedDict
  • Allow the setting of HTTP proxies (through HTTP.jl). Also allows for secured HTTP proxies with a username and password
    • Default is no proxy so change is non breaking

Fixes:

  • get_Fundamentals() does now return a timestamp

Docs

  • Added Documentation for the proxy settings
  • Added an Example Section:
    • Some quick code to convert Price data to a DataFrame, TimeSeries.TimeArray, TSFrames.TSFrame
    • Gave some examples of plotting some data exposed by YFinance.jl with PlotlyJS.jl
  • Added this version change log

New Dependencies

  • Base64
    • Needed for http proxy authentication
  • OrderedCollections.jl
    • Provides Ordered Dictionaries. Eases workflow with data because column order is not arbitrary and changing between calls.