[R-SIG-Finance] Mulitple FI Sources

G See gsee000 at gmail.com
Fri Dec 30 17:17:41 CET 2011


You should now be able to install with
install.packages("FinancialInstrument",
repos='http://r-forge.r-project.org')

It seems like R-Forge only builds for Windows every several days.  If
you build from source you don't have to wait on R-forge to build for
you.

In my last e-mail, I said the problem was with using setSymbolLookup
with a list.  The problem is really that getSymbols.FI will ignore
arguments you give it if it can find them in the SymbolLookup table.

I patched instrument or instrument_attr so that it works better when
you call them with the "src" argument.

Now, the only value that will be set in the SymbolLookup table will be
the src.  (i.e. "FI").  Anything else will be used to "setDefaults"

So, you should be able to do something like
stock("XXX", currency("USD"), src=list(src='FI', dir='tmpA', extension='rda'))
getSymbols('XXX')
getSymbols('XXX', dir='tmpB')
instrument_attr("XXX", "src", list(src='FI', dir='tmpB', extension='rda'))
getSymbols('XXX')

However, I did not update setSymbolLookup.FI yet.

Also, regarding getting data from the weekend, which we talked about
in our last on-list exchange, I added an argument to getSymbol.FI
called "days_to_omit"  which has a default value of c("Saturday",
"Sunday").
If you call getSymbols with days_to_omit=NULL or days_to_omit="" it
should attempt to get data for all days of the week.

If you use the install.packages command above, you should be able to
install packageVersion "0.9.20"  which has these changes in it.

Garrett

On Thu, Dec 29, 2011 at 6:43 PM, Mark Harrison <harrisonmark1 at gmail.com> wrote:
> Thanks everyone for responding.
>
> Garret -
>
> Your right on all counts my version is out of date and my exchange rates are
> still backwards.  Once I fixed my 'zoo' issue and saw financial instrument
> work I left the exchange rates definitions alone.  I was just happy to see
> it work ;)
>
> I saved your last response and will add this one to it for reference.  The
> examples are really helpful.
>
> One follow-up question regarding upgrading finance packages and R versions.
> I am trying to clean up my R and financial packages and was trying to
> upgrade to R version 2.14.1 but am getting the error that
> 'FinancialInstrument' is not available for R version 2.14.1 when I use the
> R-Forge.R-project repos.  I know 2.14.1 just came out so maybe I should keep
> version 2.13.1 or am I missing something?
>
>
>
> On Thu, Dec 29, 2011 at 5:33 PM, G See <gsee000 at gmail.com> wrote:
>>
>> Mark,
>>
>> You did not tell us which version of FinancialInstrument you are
>> using, but my guess is that it is out of date.
>>
>> Also, you defined your exchange_rate backwards.  Please see
>> ?exchange_rate ... or the e-mail I sent you on Dec 17th ;-)
>>
>> Now, I'll let you know upfront that setSymbolLookup.FI doesn't really
>> work.  (more specifically, setSymbolLookup doesn't work well when you
>> pass it a list).  It sort of works, but once you've used it, the
>> defaults you set cannot be overridden without another call to
>> setSymbolLookup.FI.  Luckly, you don't really need setSymbolLookup.FI.
>>
>> Before we get to that, getSymbols.FI requires a single base_dir for a
>> given Symbol.  If you want to end up with a single xts object with
>> data from 2 different base directories, then you'll have to load the
>> data from each base directory separately, then rbind or merge the data
>> together.
>>
>> If you're simply asking how to have different instruments have
>> different directories, one solution may be to update to the latest
>> version of FinancialInstrument.  You can make multiple calls to
>> setSymbolLookup.FI and use the "Symbols" argument to set different
>> directories for different Symbols, or you can use the "src" argument
>> of an "instrument" call or in an "instrument_attr" call.  (I'll
>> demonstrate below.)
>>
>> But, as I already mentioned, I'd avoid doing that because
>> setSymbolLookup does not really work when it is given a list.  So,
>> instead I'd simply use setSymbolLookup to specify that "FI" is the
>> src, and call setDefaults on getSymbols.FI.  Here's some code to show
>> why.
>>
>> > # Create 2 directories
>> > dir.create("tmpA")
>> > dir.create("tmpB")
>> > # make/save 2 different versions of data
>> > XXX <- xts(1:10, Sys.time()-10:1*60)
>> > saveSymbols.days("XXX", "tmpA")
>> > XXX <- xts(20:11, Sys.time()-10:1*60)
>> > saveSymbols.days("XXX", "tmpB")
>> > # Define the stock. If you use "src" arg, 'setSymbolLookup'
>> > # will be called.  Don't specify "dir"
>> > stock("XXX", currency("USD"),
>> +       src=list(src="FI", extension='rda'))
>> [1] "XXX"
>> > getSymbols("XXX", dir='tmpA', auto.assign=FALSE)
>>                    [,1]
>> 2011-12-29 17:10:37    1
>> 2011-12-29 17:11:37    2
>> 2011-12-29 17:12:37    3
>> 2011-12-29 17:13:37    4
>> 2011-12-29 17:14:37    5
>> 2011-12-29 17:15:37    6
>> 2011-12-29 17:16:37    7
>> 2011-12-29 17:17:37    8
>> 2011-12-29 17:18:37    9
>> 2011-12-29 17:19:37   10
>> > getSymbols("XXX", dir='tmpB', auto.assign=FALSE)
>>                    [,1]
>> 2011-12-29 17:10:37   20
>> 2011-12-29 17:11:37   19
>> 2011-12-29 17:12:37   18
>> 2011-12-29 17:13:37   17
>> 2011-12-29 17:14:37   16
>> 2011-12-29 17:15:37   15
>> 2011-12-29 17:16:37   14
>> 2011-12-29 17:17:37   13
>> 2011-12-29 17:18:37   12
>> 2011-12-29 17:19:37   11
>>
>> > # Since we didn't set the global default for "dir",
>> > # it works.  But,
>> > # If you specify "dir" with setSymbolLookup,
>> > # it will be used even if you provide a local arg
>> > setSymbolLookup.FI("tmpA", Symbols='XXX')
>> > getSymbols("XXX", auto.assign=FALSE)
>>                    [,1]
>> 2011-12-29 17:10:37    1
>> 2011-12-29 17:11:37    2
>> 2011-12-29 17:12:37    3
>> 2011-12-29 17:13:37    4
>> 2011-12-29 17:14:37    5
>> 2011-12-29 17:15:37    6
>> 2011-12-29 17:16:37    7
>> 2011-12-29 17:17:37    8
>> 2011-12-29 17:18:37    9
>> 2011-12-29 17:19:37   10
>>
>> > getSymbols("XXX", dir='tmpB', auto.assign=FALSE) #dir arg is ignored!!!
>>                    [,1]
>> 2011-12-29 17:10:37    1
>> 2011-12-29 17:11:37    2
>> 2011-12-29 17:12:37    3
>> 2011-12-29 17:13:37    4
>> 2011-12-29 17:14:37    5
>> 2011-12-29 17:15:37    6
>> 2011-12-29 17:16:37    7
>> 2011-12-29 17:17:37    8
>> 2011-12-29 17:18:37    9
>> 2011-12-29 17:19:37   10
>>
>> > # have to re-setSymbolLookup either with setSymbolLookup.FI,
>> > # or instrument_attr as below
>> > instrument_attr("XXX", "src", list(src='FI', dir='tmpB'))
>> > getSymbols("XXX", auto.assign=FALSE)
>>                    [,1]
>> 2011-12-29 17:10:37   20
>> 2011-12-29 17:11:37   19
>> 2011-12-29 17:12:37   18
>> 2011-12-29 17:13:37   17
>> 2011-12-29 17:14:37   16
>> 2011-12-29 17:15:37   15
>> 2011-12-29 17:16:37   14
>> 2011-12-29 17:17:37   13
>> 2011-12-29 17:18:37   12
>> 2011-12-29 17:19:37   11
>>
>> > # You're better off NOT providing a list to "src", and
>> > # instead using setDefaults on getSymbols.FI
>> > rm_instruments("XXX")
>> > stock("XXX", currency("USD"), src='FI')
>> [1] "XXX"
>> > setDefaults('getSymbols.FI', dir='tmpB', extension='rda')
>> > setSymbolLookup(XXX='FI')
>> > getSymbols("XXX", auto.assign=FALSE)
>>                    [,1]
>> 2011-12-29 17:10:37   20
>> 2011-12-29 17:11:37   19
>> 2011-12-29 17:12:37   18
>> 2011-12-29 17:13:37   17
>> 2011-12-29 17:14:37   16
>> 2011-12-29 17:15:37   15
>> 2011-12-29 17:16:37   14
>> 2011-12-29 17:17:37   13
>> 2011-12-29 17:18:37   12
>> 2011-12-29 17:19:37   11
>>
>> > getSymbols("XXX", dir='tmpA', auto.assign=FALSE)
>>                    [,1]
>> 2011-12-29 17:10:37    1
>> 2011-12-29 17:11:37    2
>> 2011-12-29 17:12:37    3
>> 2011-12-29 17:13:37    4
>> 2011-12-29 17:14:37    5
>> 2011-12-29 17:15:37    6
>> 2011-12-29 17:16:37    7
>> 2011-12-29 17:17:37    8
>> 2011-12-29 17:18:37    9
>> 2011-12-29 17:19:37   10
>>
>> > # Clean up
>> unlink("tmpA", recursive=TRUE)
>> unlink("tmpB", recursive=TRUE)
>>
>> HTH,
>> Garrett
>>
>> On Wed, Dec 28, 2011 at 2:37 PM, Mark Harrison <harrisonmark1 at gmail.com>
>> wrote:
>> > I am using R and RStudio versions 2.13.1 and 0.94.106 respectively.
>> > I am using Financial Instrument and everything is working for a single
>> > data
>> > source.  I have my Rprofile file setup to load packages, define my
>> > instruments, and set my symbol lookup souce.
>> >
>> > # packages to load at startup
>> > library(quantmod)
>> > library(fTrading)
>> >
>> > # currencies defined
>> >
>> > currency("USD")
>> > currency("GBP")
>> >
>> > # now exchange rates
>> >
>> > # British Pound Rates
>> > exchange_rate("GBPUSD","GBP","USD")
>> >
>> > # Set symbol lookups
>> > setSymbolLookup.FI("HistFX", storage_method="rda")
>> >
>> > Once I start R or RStudio everything loads and I can run the following
>> > and
>> > everything works:
>> > getSymbols.FI("GBPUSD")
>> >
>> > This all works for a single data source but I have multiple data sources
>> > or
>> > data sets that I would like to access and would like to put everything
>> > in
>> > my RProfile but I have yet to figure out how to make it work.
>> >
>> > For example, I have a series of historical data files that I got from a
>> > vendor who is not my broker.  So I want to keep my historical data files
>> > separate in one directory 'HistFX' and any data I get from my broker in
>> > a
>> > separate folder called 'Broker' for example.
>> >
>> > So the directories might look like:
>> >
>> > C:\Documents\HistFX\GBPUSD
>> > C:\Documents\Broker\GBPUSD
>> >
>> > I tried adding multiple lines to my RProfile with for each source but it
>> > looks like the last line read in is the 'live' one.  I even tried adding
>> > 'src=' to try and distinguish one from the other
>> > setSymbolLookup.FI("HistFX", storage_method="rda")
>> > setSymbolLookup.FI("Broker", storage_method="rda")
>> >
>> > setSymbolLookup.FI("HistFX", storage_method="rda", src="hist")
>> > setSymbolLookup.FI("Broker", storage_method="rda", src='broker")
>> >
>> > I realize the simplest solution would be to just add a
>> > setSymbolLookup.FI
>> > command to any script I use pointing to the data I want to use - i.e.
>> > historical or broker - but like I said I was trying to do this in the
>> > RProfile.
>> >
>> > Any help would be appreciated.
>> >
>> >        [[alternative HTML version deleted]]
>> >
>> > _______________________________________________
>> > R-SIG-Finance at r-project.org mailing list
>> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>> > -- Subscriber-posting only. If you want to post, subscribe first.
>> > -- Also note that this is not the r-help list where general R questions
>> > should go.
>
>



More information about the R-SIG-Finance mailing list