2012-02-11 11 views
2

私は、時価総額と配当利回りに基づいて企業を選ぶアプリケーションを書いています。 Yahoo!のYQL REST APIを使用してこのデータを取得します。昨日はうまくいっていたようですが、今日私のプログラムでは、いずれかの会社が65.95%の利回りを持っていると言われています。問題はありません - 私のコードのバグです。ので、私は考えました。私は株式のYQLのURLからXMLの内容を表示するときしかし:YQLは正しいデータを確実に返さないのですか?

http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol in ("MRO")&env=store://datatables.org/alltableswithkeys

私はポストの下部に貼り付けていたXMLを参照してください。 (私はそれをここに完全に貼り付けます。なぜなら、誰かが今週末にそれを見ると違うからです。)

下にスクロールすると、実際にMarathon Oil Corporation Common 65.95%である。 DividendYieldタグの内容に表示されます。

私はここにヤフーの金融サイトを見てください!:だから、

Div & Yield: 0.68 (2.10%) 

、私はこのデータを誤読しています(私はそう願っています): http://finance.yahoo.com/q?s=mro

はそれがはるかに合理的な収量を示して?一般公開されているサイトで見られるものとクエリから得られるものとの間に相違があるのはなぜですか?彼らは同じデータベースを使用していませんか?

内容が信頼できない場合は、別のツールを使用してください。私のアプリはPythonで書かれています。

場合、それは便利ですが、ここでは最小限のコードスニペットです:

#!/usr/bin/env python 

import yql 
y = yql.Public() 
q = 'use "http://www.datatables.org/yahoo/finance/yahoo.finance.quotes.xml" as yahoo.finance.quotes; select * from yahoo.finance.quotes where symbol in ("MRO")' 
result = y.execute(q) 
print result.rows[0]['DividendYield'] 

出力:

65.95 

ありがとう!


編集2012年2月11日:

日私のポストの後、私はヤフーでこれを見つけました開発者向けのネットワーク:そこ

http://developer.yahoo.com/forum/YQL/yahoo-finance-quotes-data-very-inaccurate/1313170622678-7121b5e0-317d-4a87-bd58-7a27cb8a62ce

多くの人々が様々な分野で誤ったデータを得ることにコメント。

Googleには、データを収集するAPIがあります。他の誰かに役立ちますが、ある、配当情報が含まれていないようです多分

http://www.google.com/ig/api?stock=MRO

:ここでは同じ会社のためのそれの使用例は、以下のYQL要求(MRO)程度であることをです私のニーズには非常に重要です。

他の誰かが、株式ソースを使って株式データをプログラマチックに収集するアプリを書いていますか?もしそうなら、共有してください - 私は別のものに移動するつもりです。ところで、私はリアルタイムのデータは必要ありません。私は通常、市場が閉鎖された後、仕事から家に帰った後に、私のアプリを頻繁に実行しています。

ありがとうございます。


<query yahoo:count="1" yahoo:created="2012-02-11T06:30:09Z" yahoo:lang="en-US"><results><quote symbol="MRO"><Ask/> 
<AverageDailyVolume>7003410</AverageDailyVolume> 
<Bid/> 
<AskRealtime>36.00</AskRealtime> 
<BidRealtime>32.73</BidRealtime> 
<BookValue>23.79</BookValue> 
<Change_PercentChange>+0.55 - +1.69%</Change_PercentChange><Change>+0.55</Change> 
<Commission/> 
<ChangeRealtime>+0.55</ChangeRealtime> 
<AfterHoursChangeRealtime>N/A - N/A</AfterHoursChangeRealtime> 
<DividendShare>21.50</DividendShare> 
<LastTradeDate>2/10/2012</LastTradeDate> 
<TradeDate/> 
<EarningsShare>4.125</EarningsShare> 
<ErrorIndicationreturnedforsymbolchangedinvalid/> 
<EPSEstimateCurrentYear>3.66</EPSEstimateCurrentYear> 
<EPSEstimateNextYear>4.38</EPSEstimateNextYear> 
<EPSEstimateNextQuarter>0.89</EPSEstimateNextQuarter> 
<DaysLow>32.04</DaysLow> 
<DaysHigh>33.16</DaysHigh> 
<YearLow>19.13</YearLow> 
<YearHigh>54.33</YearHigh> 
<HoldingsGainPercent>- - -</HoldingsGainPercent> 
<AnnualizedGain/> 
<HoldingsGain/> 
<HoldingsGainPercentRealtime>N/A - N/A</HoldingsGainPercentRealtime> 
<HoldingsGainRealtime/> 
<MoreInfo>cnsprmiIed</MoreInfo> 
<OrderBookRealtime/> 
<MarketCapitalization>23.328B</MarketCapitalization> 
<MarketCapRealtime/> 
<EBITDA>6.846B</EBITDA> 
<ChangeFromYearLow>+14.02</ChangeFromYearLow> 
<PercentChangeFromYearLow>+73.29%</PercentChangeFromYearLow> 
<LastTradeRealtimeWithTime>N/A - <b>33.15</b> 
</LastTradeRealtimeWithTime> 
<ChangePercentRealtime>N/A - +1.69%</ChangePercentRealtime> 
<ChangeFromYearHigh>-21.18</ChangeFromYearHigh> 
<PercebtChangeFromYearHigh>-38.98%</PercebtChangeFromYearHigh> 
<LastTradeWithTime>Feb 10 - <b>33.15</b> 
</LastTradeWithTime> 
<LastTradePriceOnly>33.15</LastTradePriceOnly> 
<HighLimit/> 
<LowLimit/> 
<DaysRange>32.04 - 33.16</DaysRange> 
<DaysRangeRealtime>N/A - N/A</DaysRangeRealtime> 
<FiftydayMovingAverage>31.2758</FiftydayMovingAverage> 
<TwoHundreddayMovingAverage>27.2837</TwoHundreddayMovingAverage> 
<ChangeFromTwoHundreddayMovingAverage>+5.8663</ChangeFromTwoHundreddayMovingAverage> 
<PercentChangeFromTwoHundreddayMovingAverage>+21.50%</PercentChangeFromTwoHundreddayMovingAverage> 
<ChangeFromFiftydayMovingAverage>+1.8742</ChangeFromFiftydayMovingAverage> 
<PercentChangeFromFiftydayMovingAverage>+5.99%</PercentChangeFromFiftydayMovingAverage> 
<Name>Marathon Oil Corp</Name> 
<Notes/> 
<Open>32.26</Open> 
<PreviousClose>32.60</PreviousClose> 
<PricePaid/> 
<ChangeinPercent>+1.69%</ChangeinPercent> 
<PriceSales>1.56</PriceSales> 
<PriceBook>1.37</PriceBook> 
<ExDividendDate>Nov 14</ExDividendDate> 
<PERatio>7.90</PERatio> 
<DividendPayDate>Mar 12</DividendPayDate> 
<PERatioRealtime/> 
<PEGRatio>0.99</PEGRatio> 
<PriceEPSEstimateCurrentYear>8.91</PriceEPSEstimateCurrentYear> 
<PriceEPSEstimateNextYear>7.44</PriceEPSEstimateNextYear> 
<Symbol>MRO</Symbol> 
<SharesOwned/> 
<ShortRatio>2.60</ShortRatio> 
<LastTradeTime>4:02pm</LastTradeTime> 
<TickerTrend>&nbsp;++-+-=&nbsp;</TickerTrend> 
<OneyrTargetPrice>37.19</OneyrTargetPrice> 
<Volume>9239122</Volume> 
<HoldingsValue/> 
<HoldingsValueRealtime/> 
<YearRange>19.13 - 54.33</YearRange> 
<DaysValueChange>- - +1.69%</DaysValueChange> 
<DaysValueChangeRealtime>N/A - N/A</DaysValueChangeRealtime> 
<StockExchange>NYSE</StockExchange> 
<DividendYield>65.95</DividendYield> 
<PercentChange>+1.69%</PercentChange> 
</quote> 
</results> 
</query> 
<!-- total: 270 --> 
<!-- engine5.yql.ac4.yahoo.com --> 

答えて

7

ない自体の答えが、あなたが見ているものにいくつかのより多くの光を当てるために:

ヤフーはヤフー・ファイナンスの公式APIを持っていません。代わりに、これらのYQLコミュニティテーブルは、人々がYahoo Finance WebサイトからリバースエンジニアリングしたCSVファイルから読み込んでいます。これらは時々変化するため、信頼できるデータ源ではありません。私はこれらを使って "本当の"アプリを作るつもりはない。サービスの問題の問題かもしれないからだ。

sample query in the YQL consoleを試してみてください。出力では<diagnostics>セクションを見て、それがhttp://download.finance.yahoo.com/d/quotes.csvからフェッチされていることを確認してください。私はYahoo Financeのサイトがまったく別の内部ソースを使用していると思うので、おそらく正しい数字が一致していないのはなぜだろう。

+0

ブライアンに感謝します。不一致を説明するために投票します。好奇心のために、使用する別のツールがありますか? – firebush

関連する問題