Re: Manipulating FinancialData[]
- To: mathgroup at smc.vnet.net
- Subject: [mg106381] Re: [mg106330] Manipulating FinancialData[]
- From: Syd Geraghty <sydgeraghty at mac.com>
- Date: Mon, 11 Jan 2010 05:29:38 -0500 (EST)
- References: <20100110224302.60VZ1.481898.imail@eastrmwml38>
Thanks Bob, I really appreciate this solution as well as hundreds more from you which over the years I have collected, analyzed, and learned from. Cheers .... Syd Syd Geraghty B.Sc, M.Sc. sydgeraghty at mac.com Mathematica 7.0.1.0 for Mac OS X x86 (64 - bit) (12th September 2009) MacOS X V 10.6.1 Snow Leopard MacBook Pro 2.33 GHz Intel Core 2 Duo 2GB RAM On Jan 10, 2010, at 7:43 PM, Bob Hanlon wrote: > Nesting Manipulate works. > > Clear[fd]; > > fd[entity_String, property_String] := > FinancialData[entity, property]; > > Note that not all of the exchanges have data available > > exch = Select[FinancialData["Exchanges"], > Length[fd[# <> ":*", "Lookup"]] > 0 &] > > {AMEX,CME,NASDAQ,NYSE} > > prop = FinancialData["Properties"]; > > fd[exchange_?(MemberQ[exch, #] &)] := > fd[exchange] = > StringDrop[#, StringLength[exchange] + 1] & /@ > > fd[exchange <> ":*", "Lookup"]; > > fd /@ exch; (* cache instruments *) > > Updates are slow whenever the instrument changes due to the time required to determine valid properties for property list. > > Off[FinancialData::notent] (* Quiet transient errors when switching *) > > Manipulate[ > Manipulate[ > instruments = Select[fd[Exchange], > StringTake[#, 1] == InstrumentGroup &]; > Manipulate[ > ValidPropertiesList = > Select[prop, > AtomQ[fd[Exchange <> ":" <> Instrument, #]] &]; > DefaultProperty = If[ > MemberQ[ValidPropertiesList, "Close"], > "Close", "Name"]; > Manipulate[ > Column[{ > fd[Exchange, "Name"], "", > fd[Exchange <> ":" <> Instrument, "Name"], "", > Property <> " = " <> ToString[ > fd[Exchange <> ":" <> Instrument, Property]]}], > {{Property, DefaultProperty, "Property\n (" <> > ToString[Length[ValidPropertiesList]] <> ")"}, > ValidPropertiesList}, > ContentSize -> {300, 200}], > {{Instrument, instruments[[1]], "Instrument\n (" <> > ToString[Length[instruments]] <> ")"}, instruments}, > FrameMargins -> -5], > {{InstrumentGroup, "A", "Instrument Group"}, > Union[StringTake[#, 1] & /@ fd[Exchange]]}, > FrameMargins -> -5], > {{Exchange, "NASDAQ"}, exch}, > FrameMargins -> -5] > > > Bob Hanlon > > ---- Syd Geraghty <sydgeraghty at me.com> wrote: > > ============= > Hi all, > > I have got stuck trying to play around with manipulating FinancialData[]! > > Manipulate[Column[{ > Row[{"FinancialData[", ToString[financialInstrumentName], "] = ", > FinancialData[financialInstrumentName]}], > Row[{"\nProperty = ", ToString[property]}], > Row[{"\nfinancialDataExchange = ", ToString[financialDataExchange]}], > Row[{"\nFinancialData[", ToString[financialInstrumentName], > "," ToString[property], "] = ", > FinancialData[financialInstrumentName, property]}] > }], > {{financialDataExchange, "NASDAQ", "Exchange List"}, > FinancialData["Exchanges"]}, {{financialInstrumentName, "NASDAQ:AAPL", > "Financial Instrument List"}, > FinancialData["NASDAQ:*", "Lookup"]}, {{property, "Close", "Property List"}, > FinancialData["Properties"]}] > > > is a simple example which enables me to select an Exchange List, Financial Instrument List, and a Property List. > > But I really want the Financial Instrument List to be derived from the selected Exchange List when I subsequently select a member of that List. (e.g. "ExchangeList Selection:Stock Name"). > > So I tried variants of the following without success: > > Manipulate[Column[{ > Row[{"FinancialData[", ToString[financialInstrumentName], "] = ", > FinancialData[financialInstrumentName]}], > Row[{"\nProperty = ", ToString[property]}], > Row[{"\nfinancialDataExchange = ", ToString[financialDataExchange]}], > Row[{"\nFinancialData[", ToString[financialInstrumentName], > "," ToString[property], "] = ", > FinancialData[financialInstrumentName, property]}] > }], > {{financialDataExchange, "NASDAQ", "Exchange List"}, > FinancialData["Exchanges"]}, {{financialInstrumentName, "NASDAQ:AAPL", > "Financial Instrument List"}, > FinancialData[ToString[financialDataExchange <> ":" <> "*"], > "Lookup"]}, {{property, "Close", "Property List"}, > FinancialData["Properties"]}] > > > What I am trying to do probably becomes clearer after using the Manipulate output from the 1st piece of code: > > After the 1st evaluation, which by default selects NASDAQ:AAPL, then select another member of the Exchange List, say Singapore. > > What I want is for the Financial Instrument List to then allow selections from the revised list such as Singapore:AAPL, Singapore:AATI, Singapore: ..... > > I would appreciate help in solving this seemingly simple requirement. > > > Cheers .... Syd > > Syd Geraghty B.Sc, M.Sc. > > sydgeraghty at mac.com > > Mathematica 7.0.1.0 for Mac OS X x86 (64 - bit) (12th September 2009) > MacOS X V 10.6.1 Snow Leopard > MacBook Pro 2.33 GHz Intel Core 2 Duo 2GB RAM >