Re: Manipulating FinancialData[]
- To: mathgroup at smc.vnet.net
- Subject: [mg106379] Re: [mg106330] Manipulating FinancialData[]
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Mon, 11 Jan 2010 05:29:15 -0500 (EST)
- Reply-to: hanlonr at cox.net
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