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
>