Changes in Version 1.3.1
======================

USER VISIBLE CHANGES
--------------------

* move never-exported splice and splooth functions by Robert Sams to the 
  github sandbox, removing them from the package
  
* add Authors@R field for CRAN compliance

Changes in Version 1.3.0
======================

USER VISIBLE CHANGES
--------------------

* Ross Bennett is taking over as the Maintainer from Garrett See.
  The development team would like to thank Garrett for his years of 
  stewardship.

* getSymbols.FI can now take a vector if identifiers in the "use_identifier"
  argument.  
  
* removed Suggests for archived package 'its'


Changes in Version 1.2
======================

USER VISIBLE CHANGES
--------------------

* Requires quantmod >= 0.4-3 and no longer using the Defaults package 
  (which is now archived on CRAN) for importDefaults() in getSymbols.FI.

* getSymbols.FI() allows the user to set default values by checking for 
  options().  For example, the default value for from= is now 
  getOption("getSymbols.FI.from", "2010-01-01").  So, if you do not set the
  "getSymbols.FI.from" option, the value will be what it always has been 
  ("2010-01-01"), but if you did set a value (e.g. 
  options(getSymbols.FI.from="2014-01-01")), then that value will be used.

* remove some `:::` calls to unexported functions from quantmod.

* saveInstruments() gains a "compress" argument to allow for different 
  compression than the default ("gzip")

* instrument() and most of its wrappers gain an "overwrite" argument. The 
  default is TRUE to match previous behavior -- if you try to create an 
  instrument that already exists, the old one will be replaced by 
  the new definition.  If overwrite=FALSE is used, there will be an error
  if you try to define an instrument that has a primary_id that is already 
  in use.  Thanks to Charlie Friedemann for the suggestion and discussions.

* load.instruments() gains an overwrite argument that is passed through to the
  instrument() wrapper functions.  Therefore, load.instruments() no longer 
  checks to see if an instrument already exists.  Thanks to Charlie Friedemann
  for the patch.

* load.instruments() gains an "identifier_cols" argument that can be used to
  pass the names of columns that are to be used as identifiers instead of as
  normal instrument attributes.  Thanks to Charlie Friedemann for the patch.

* loadInstruments() can now load unnamed lists of instruments because it now
  uses the primary_ids directly instead of the names of the list/environment

BUG FIXES
---------

* setSymbolLookup.FI was appending the Symbol to the directory, and 
  getSymbols.FI was only adding the Symbol to the file path if the end of the 
  path was not the same as the Symbol.  That meant that getSymbols.FI could not
  be used to get data for a Symbol that was the same as the base directory.
  getSymbols.FI now always appends the Symbol to the file path and 
  setSymbolLookup.FI does not append it to the base_dir. Test added.

* In redenominate, if the object was a defined instrument, the currency in the
  instrument object would be used even if the user passed a different currency
  in the old_base argument.  

* sort_ids() only worked in some locales when an instrument is not defined.  It 
  now converts the month (returned by parse_id()) to numeric (with MC2N()) and 
  uses the "%m" format in the as.Date call instead of using the month name with 
  the (locale-specific) "%b" format.  Thanks to Alexis Petit for the patch.

* when instrument() wrappers were called with vectors of symbols and 
  assign_i=FALSE, the symbols were being returned instead of the instrument
  objects.  Now, when `assign_i=FALSE` and `length(primary_id) > 1`, a 
  named list of instruments will be returned.  Named lists of instruments are 
  easy to work with since they can be passed directly to (re)loadInstruments(), 
  or coerced to an environment with as.environment()


TESTS
-----

* Now using testthat for package testing


Changes in Version 1.1
======================

NEW FEATURES
------------

* sort.instrument() method to sort the components of an instrument

* CompareInstrumentFiles() allows passing it only 1 argument in which case it
  will compare the currently loaded instrument environment against it.

* If an instrument has a string like "2012-09", "2012/09", or "201209" in the
  "expires" attribute, sort_id() will treat that instrument as expiring on the
  first day of that month (2012-09-01).  Thanks to Jan Humme for reporting.

BUG FIXES
---------

* import xts to prevent xts functions from being masked.

* ls_instruments_by() checks for NA to avoid an error.

* force evaluation of arguments to CompareInstrumentEnvironment()

* option_series.yahoo() checks the results of the call to 
  quantmod::getOptionChain() and only uses rows that contain the ticker Symbol
  (sometimes in the off-hours, yahoo includes a bad row)

* update_instruments.morningstar is slightly more robust.  It no longer 
  depends on the relevant table being the 4th on the page; instead it uses
  the table with the most rows.

* Replace paste0() calls with paste() so that R 2.15 in not required.

USER VISIBLE CHANGES
--------------------

* If use_identifier is not NA in a call to getSymbols.FI, and the instrument
  cannot be found, there is a more informative error message.

* minor updates to docs: typo fixes, updated seealso sections

SANDBOX
-------

* The download.TrueFX.R script can now be called with Rscript. It accepts a 
  trailing argument to specify the number of cores to use.

