2011-02-04 12 views
7

Sto lavorando al progetto del mio master e sto cercando una notevole quantità di dati finanziari su una particolare azienda.API Java per dati finanziari

Esempio: diciamo "Apple". Voglio i prezzi storici, i prezzi/i rapporti di mercato correnti, i risultati trimestrali e le chiamate degli analisti.

Ho visto un paio di post su StackOverflow su YQL. Penso di poter ottenere gratuitamente il prezzo corrente e vari rapporti da Yahoo Finance. Tuttavia, per altri dati, ci sono aziende come Thomson Reuters, Bloomberg, ecc. Ma sembrano avere un sistema chiuso.

Dove posso ottenere un'API per recuperare vari dati? C'è qualcosa che mi aiuterà a ottenere quei dati? Sto bene anche con i dati grezzi in qualsiasi formato. Qualunque cosa io possa ottenere Potresti per favore suggerire qualche API?

risposta

1

Si tratta di una finanza di Yahoo I dati storici di "Apple"

http://in.finance.yahoo.com/q/hp?s=AAPL

C'è un link in basso per scaricare i dati. Forse questo potrebbe aiutare

+0

Grazie. C'è un modo programmatico? – Kunal

+0

Sarebbe piuttosto banale scrivere un parser per estrarre i dati dall'html. – Joel

+0

@Joel: ancora più semplice per un CSV. –

0

Si sta davvero chiedendo informazioni finanziarie gratuite servizio ... piuttosto che un'API.

Il problema è che i dati sono un bene prezioso. Probabilmente è costato ai fornitori un sacco di soldi per impostare i loro sistemi, e costa loro ancora più denaro per mantenere in funzione questi sistemi. Naturalmente, vogliono un ritorno sul loro investimento, e lo fanno (in parte) vendendo i loro dati/servizi.

(Nel caso di Yahoo, Google, ecc., I dati vengono acquistati da qualcun altro e Yahoo/Google sarà soggetto a restrizioni su come possono utilizzarli. Tali restrizioni si rifletteranno nei rispettivi ToS; sono autorizzati ad accedere ai servizi "per uso personale".)

Penso che la soluzione migliore sarebbe quella di avvicinare un certo numero di fornitori di dati finanziari e chiedere se possono fornirgli l'accesso gratuito (fatte salve tutte le restrizioni potrebbero voler imporre) ai loro servizi di dati. Potresti essere fortunato ...

+0

Ehi, grazie Stephen. Invece la sua API per il servizio di dati finanziari, proprio come possiamo ottenere Feed di Twitter utilizzando un'API. Capisco che li costa. Posso pagare loro una tassa. Qualche società nota? – Kunal

+0

Se tutto ciò che si desidera è lo spot corrente (10 min ritardato) e solo i prezzi di chiusura giornalieri nella cronologia (nessun dato intraday), è possibile ottenerlo gratuitamente. Se hai bisogno di prezzi in tempo reale e della cronologia dei dati commerciali intraday, puoi probabilmente acquistarli da Bloomberg o dagli scambi stessi. –

0

Hai provato Google Finance API. (Si prega di google;). Lo sto usando per tracciare il mio portafoglio. Puoi provare http://code.google.com/apis/finance/docs/finance-gadgets.html? C'è un esempio di widget personalizzato e potrebbe dirti se stai abbaiando sotto l'albero giusto.

+0

Ciao. L'ho visto. Volevo usare quei dati per l'elaborazione back-end. Sembra che i gadget finanziari siano solo per HTML – Kunal

+0

ooops ... non proprio ... è un servizio basato su JSON. Puoi chiamare questo nel tuo livello di servizio. Ti ho chiesto di guardare il widget, in modo che tu sappia se stai ricevendo i dati di cui hai bisogno. –

+0

Grazie. Intendi dire http://goo.gl/jsrFl. Non è più una gestione del portafoglio? – Kunal

3

Stephen ha ragione sui soldi, se vuoi davvero una vera ricchezza di dati, probabilmente dovrai pagare per questo.

però, ho avuto successo sui miei progetti privati ​​utilizzando il "API" spiegata qui:

http://www.gummy-stuff.org/Yahoo-data.htm

ho tirato giù tutti i titoli dalla S & P 500 abbastanza spesso, ma se mai pubblichi quei dati, parla con Yahoo. probabilmente dovrai licenziarlo.

btw, tutti questi dati è in formato CSV, in modo da ottenere un lettore CSV/convertitore ecc loro facile da trovare

+0

potresti condividere un codice sorgente di yahoo-data.htm? –

0

Buono dati non è libero. E 'così semplice. Il motivo è che tutti i dati sono concessi in licenza da una borsa come NYSE o NASDAQ.

Se è possibile ottenere un po 'di soldi, dati storici ad alta risoluzione sono disponibili da Automated Trader.

Dovresti anche parlare con la business school della tua scuola. Se hanno maestri di finanza/dottorandi o master in ingegneria finanziaria, dovrebbero avere grandi repository di dati ad alta risoluzione per i loro studenti.

Se la domanda è più dettagliata, posso fornire una risposta più dettagliata.

0

Questo è qualcosa che mi prendo a calci almeno una volta alla settimana. Quando Internet era formato da Gopher e tutto il resto, era possibile accedere a server FTP al NASDAQ e al NYSE e scaricare gratuitamente tutti i tipi di archivi di magazzino. L'avevo fatto, l'avevo anche importato in un database e ne ho fatto un po 'di roba ... ma quello era probabilmente 10 computer fa, ormai è LONG andato.

+0

Perché hanno smesso di farlo ora? – Kunal

+1

Perché hanno capito che potevano far pagare alla gente un sacco di soldi per questo. – mezmo

1
biblioteca

Un Java in fase di sviluppo è IdylFin, che ha metodi di convenienza per scaricare i dati storici.

Disclaimer: io sono l'autore di questa biblioteca.

0

Ho affrontato questo problema in passato.

Per i dati della cronologia dei prezzi, ho utilizzato l'API di yahoo. Quando dico API, voglio dire che stavo facendo una richiesta di ottenere HTTP per un file CSV dei dati della cronologia dei prezzi. Sfortunatamente, questo ti porta solo i dati per una società alla volta, per un periodo di tempo specificato. Quindi ho prima creato un elenco di tutti i simboli ticker e ho ripetuto l'iter, chiamando l'API di yahoo per ognuno. Potrebbe essere possibile trovare un sito Web che elenchi anche i simboli ticker e scaricare periodicamente tale elenco.

Fai questo troppo spesso e troppo velocemente, e il loro sito web potrebbe bloccarti. Ho aggiunto del codice per limitare la frequenza con cui ho effettuato richieste HTTP. Ho anche persistito i miei dati in modo da non doverlo riprovare. Vorrei sempre mantenere la forma grezza/non elaborata dei dati, il tuo codice potrebbe cambiare in modi che rendono difficile l'utilizzo di qualsiasi altra cosa. Avro/Thrift potrebbe essere un'eccezione, dal momento che quelli supportano l'evoluzione dello schema.

Per altri tipi di dati, potresti non disporre di alcuna API che ti dia buoni file CSV. Ho dovuto affrontare quel problema molte volte. Ecco il mio consiglio.

A volte un sito Web chiama un servizio Web restful dietro le quinte, lo si può scoprire usando firebug. A volte richiede anche alcune intestazioni, che puoi anche scoprire usando firebug.

Se sei costretto a lavorare con HTML, ci sono diverse librerie java che possono aiutarti. apache.commons.http è una libreria che puoi usare per fare facilmente richieste http e gestire le loro risposte. Google ha anche un jar http-client, che probabilmente vale la pena di investigare.

L'API JSoup è eccellente per l'analisi dei dati HTML, anche quando è formattata male e non XHTML. Funziona anche con XML. Invece di attraversare o visitare i nodi nella gerarchia jsoup, impara XPath e usalo per selezionare ciò che vuoi. Il sito Web può cambiare periodicamente il formato della sua pagina web, che dovrebbe essere facile da gestire e risolvere se si sta utilizzando JSoup e difficile da gestire altrimenti.

Se si deve lavorare con JSON, utilizzare la libreria di Jackson per analizzarlo.

Se si deve lavorare con CSV, utilizzare la libreria OpenCSV per analizzarlo e gestirlo.

Inoltre, memorizzare sempre i dati nel raw ed evitare di effettuare richieste HTTP non necessarie per non essere bloccati. Sono stato bloccato da Google Finanza un paio di volte, possono farlo. Fortunatamente il blocco scade. Potresti anche voler aggiungere un periodo di attesa casuale tra le richieste.