과거 주식 데이터 소스 [닫기]


239

주식 시장 시뮬레이터를 만들려고하는데 (아마도 예측 AI로 성장하고 있지만) 사용할 데이터를 찾는 데 어려움을 겪고 있습니다. 역사적인 주식 시장 데이터의 (원하는 무료) 소스를 찾고 있습니다.

이상적으로는 NASDAQ 및 NYSE의 모든 기호에 대한 가격과 볼륨이 포함 된 매우 세밀한 (두 번째 또는 분 간격) 데이터 세트 일 것입니다. 누구든지 그러한 정보의 출처를 알고 있습니까?

Yahoo가 과거 데이터를 CSV 형식으로 제공한다는 것을 나타내는 이 질문 을 찾았 지만 연결된 사이트의 커서 검사에서 데이터를 얻는 방법을 찾을 수 없었습니다.

또한 CSV 파일로 데이터 단편을 다운로드한다는 아이디어가 마음에 들지 않습니다. 야후가 처음 수천 건의 요청 후에 화를 내고 종료 될 것이라고 생각합니다.

나는 또한 내가 대박을 쳤다고 생각하게하는 또 다른 질문 을 발견 했지만 불행히도 OpenTick 사이트가 문을 닫은 것 같습니다 ... 정말 나쁘게 생각합니다.

또한 매일 모든 기호의 개설 및 마감 가격과 거래량의 데이터를 사용할 수 있었지만, 얻을 수 있다면 모든 데이터를 선호합니다. 다른 제안?


4
@rmeador, Yahoo는 요청 횟수에 관계없이 종료하지 않지만 Google은 종료합니다. Yahoo에서 약 4GB의 EOD 내역 가격을 약 5-6 시간 안에 다운로드 할 수있었습니다. 그들이 시장에 합류 한 이후 모든 EOD 역사적 가격을 가진 약 7,000 개의 주식입니다. 자세한 내용과 샘플 소스 코드는 내 답변을 참조하십시오.
Kiril

EOD 데이터가 충분히 유익하지 않은 것 같습니다. tick-by-tick 따옴표와 거래를 원한다면 polygon.io 가 가장 저렴 하다고 생각 합니다.
Quinton Pike

답변:


226

2 ¢를 추가하겠습니다. 헤지 펀드를 위해 좋고 깨끗한 데이터를 얻는 것이 저의 임무입니다. 나는 많은 데이터 피드와 기록 데이터 공급자를 보았습니다. 이것은 주로 미국 주식 데이터에 관한 것입니다.

우선, Yahoo에서 데이터를 다운로드하는 데 돈이 들지 않는다면 CSI data 에서 하루 종일 데이터를 바로 얻으십시오 . Yahoo는 EOD 데이터와 AFAIK를 가져옵니다. 여기에는 원하는 형식으로 데이터를 추출 할 수있는 API가 있습니다. 매년 데이터 구독료는 100 달러입니다.

무료 서비스에서 데이터를 다운로드 할 때의 주요 문제는 여전히 존재하는 주식 만 얻는다는 것인데 , 이를 생존 바이어스 라고하며, 많은 주식을 보면 잘못된 결과를 줄 수 있습니다. 목록에없는 것은 아닙니다.

IQFeed 에서 살펴볼 일부 일상적인 데이터를 가지고 놀기 위해, 그들은 주로 실시간 피드에 적합하지만 역사적 데이터를 추출하는 여러 API를 제공합니다. 그러나 여기에는 몇 가지 옵션이 있으며 일부 브로커는 API를 통해 기록 데이터 다운로드를 제공하기 때문에 독을 선택하십시오.

그러나 일반적으로이 모든 데이터는 매우 깨끗하지 않습니다. 실제로 테스트를 다시 시작하면 특정 주식이 누락되었거나 두 개의 다른 기호로 표시되거나 주식 분할이 제대로 설명되지 않는 등을 볼 수 있습니다. 배당 데이터도 필요하므로 100 개의 서로 다른 데이터 소스에서 데이터를 패치하는 등 원에서 실행하기 시작합니다. 따라서 "할인"데이터 피드로 시작하려면보다 포괄적 인 백 테스트를 실행하자마자 수행 한 작업에 따라 문제가 발생할 수 있습니다. S & P 500 종목을 살펴보면 별 문제가되지 않을 것이고 "저렴한"일일 피드가 가능할 것입니다.

당신이 찾을 수없는 것은 무료 일중 데이터입니다. 몇 가지 예를 찾을 수 있습니다 .5 년 동안 MSFT 틱 데이터가 어딘가에 떠있을 것이라고 확신하지만 그다지 멀지 않습니다.

그런 다음 실제 물건 (레벨 II 주문서, 모든 거래소에서 발생한 모든 진드기)이 필요하다면 하나의 "적합한"이지만 ​​탁월한 옵션은 Nanex 입니다. 실제로 테라 바이트 단위의 데이터가있는 드라이브를 제공합니다. 내가 매년 약 3k-4K의 데이터를 기억한다면. 그러나 좋은 하루 동안의 데이터를 얻는 것이 얼마나 어려운지 이해하면, 이것이 전혀 돈이 아니라고 생각할 것입니다.

당신을 실망시키지 말고 좋은 데이터를 얻는 것은 어렵습니다. 사실 많은 헤지 펀드와 은행들이 신뢰할 수있는 데이터를 얻기 위해 한 달 에 수십만 달러를 소비하기가 어렵습니다 . 다시, 당신은 어딘가에서 시작한 다음 거기에서 갈 수 있지만 상황에 따라 조금 보는 것이 좋습니다.


편집 : 위의 대답은 내 자신의 경험에서 온 것입니다. 사용 가능한 데이터 피드에 대한 Caltech의이 글 은 더 많은 통찰력을 제공하며 특히 QuantQuote를 권장 합니다 .


18
+1 데이터의 3 가지 레벨 (히트, 인트라, 레벨 II)을 지적하고 다른 사람들의 답변에 대한 통찰력있는 의견 (완전성, 청결도, 스토리지 크기, 데이터 세트 ...)
Peter Host

2
CSI는 훌륭하지만 참고로 상장 해제 된 주식은 더 이상 기본 패키지에 포함되지 않은 프리미엄 서비스입니다. 참고로
Olie November

1
CSI는 크지 만 가격은 비싸다. Unfair Advantage를 사용하면 해당 응용 프로그램에 구속됩니다. 역사를 업데이트하기 위해 매일 사용하는 것은 지루합니다. CSI를 사용하여 http 또는 ftp에서 다운로드하려면 한 달에 약 200 €를 지불해야합니다. 죄송하지만 너무 비쌉니다.
davidxxx

@davidh, CSI Unfair Advantage에는 구독의 모든 데이터를 자동으로 내보낼 수있는 ActiveX API가 있습니다. 강력한 수출 도구를 작성하는 데 하루가 걸립니다 ... CSI와 동일한 품질의 저렴한 대안을 알고 있다면 대안을 자유롭게 게시하십시오!
lukebuehler

QuantQuote에 대한 참고 사항 : 구매 후 48 시간 이내에 주문을 검토 / 처리합니다. 즉시 액세스 할 수 있다고 생각한 경우
fionbio

94

이 답변은 기존의 YAHOO 피드가 중단되었으므로 더 이상 정확하지 않습니다.

야후의 CSV 접근 방식을 사용하면 과거 데이터도 얻을 수 있습니다! 다음 예제를 리버스 엔지니어링 할 수 있습니다.

http://ichart.finance.yahoo.com/table.csv?s=YHOO&d=0&e=28&f=2010&g=d&a=3&b=12&c=1996&ignore=.csv

본질적으로 :

sn = TICKER
a = fromMonth-1
b = fromDay (two digits)
c = fromYear
d = toMonth-1
e = toDay (two digits)
f = toYear
g = d for day, m for month, y for yearly

전체 매개 변수 목록 :

a   Ask
a2  Average Daily Volume
a5  Ask Size
b   Bid
b2  Ask (Real-time)
b3  Bid (Real-time)
b4  Book Value
b6  Bid Size
c   Change & Percent Change
c1  Change
c3  Commission
c6  Change (Real-time)
c8  After Hours Change (Real-time)
d   Dividend/Share
d1  Last Trade Date
d2  Trade Date
e   Earnings/Share
e1  Error Indication (returned for symbol changed / invalid)
e7  EPS Estimate Current Year
e8  EPS Estimate Next Year
e9  EPS Estimate Next Quarter
f6  Float Shares
g   Day's Low
h   Day's High
j   52-week Low
k   52-week High
g1  Holdings Gain Percent
g3  Annualized Gain
g4  Holdings Gain
g5  Holdings Gain Percent (Real-time)
g6  Holdings Gain (Real-time)
i   More Info
i5  Order Book (Real-time)
j1  Market Capitalization
j3  Market Cap (Real-time)
j4  EBITDA
j5  Change From 52-week Low
j6  Percent Change From 52-week Low
k1  Last Trade (Real-time) With Time
k2  Change Percent (Real-time)
k3  Last Trade Size
k4  Change From 52-week High
k5  Percent Change From 52-week High
l   Last Trade (With Time)
l1  Last Trade (Price Only)
l2  High Limit
l3  Low Limit
m   Day's Range
m2  Day's Range (Real-time)
m3  50-day Moving Average
m4  200-day Moving Average
m5  Change From 200-day Moving Average
m6  Percent Change From 200-day Moving Average
m7  Change From 50-day Moving Average
m8  Percent Change From 50-day Moving Average
n   Name
n4  Notes
o   Open
p   Previous Close
p1  Price Paid
p2  Change in Percent
p5  Price/Sales
p6  Price/Book
q   Ex-Dividend Date
r   P/E Ratio
r1  Dividend Pay Date
r2  P/E Ratio (Real-time)
r5  PEG Ratio
r6  Price/EPS Estimate Current Year
r7  Price/EPS Estimate Next Year
s   Symbol
s1  Shares Owned
s7  Short Ratio
t1  Last Trade Time
t6  Trade Links
t7  Ticker Trend
t8  1 yr Target Price
v   Volume
v1  Holdings Value
v7  Holdings Value (Real-time)
w   52-week Range
w1  Day's Value Change
w4  Day's Value Change (Real-time)
x   Stock Exchange
y   Dividend Yield

이 페이지 에는 URL에서 사용할 수있는 표 특수 태그가 있습니다.
user443854

9
Yahoo 또는 온라인 서비스에서 데이터를 가져 오는 데있어 큰 문제는 상장 해제 된 주식을 얻지 못하므로 생존 바이어스에 빠르게 빠질 수 있다는 것입니다. Eric H. 또는 나의 충고를 더 잘 이해하고 CSI로 바로 가십시오.
lukebuehler 2016 년

이 페이지에는 URL에서 사용할 수있는 테이블 특수 태그가있었습니다 ... "Yahoo는 도구와 도구의 사용 및 배포가 ...의 6, 12 및 18 섹션을 위반 한 것으로 간주합니다. 서비스 약관 (다른 조항 중), 불공정 경쟁을 야기하고 다른 사람이 서비스 약관을 위반하도록 유도합니다. ... 이러한 계약 및 비즈니스 관계를 방해함으로써 귀하는 다른 사용자의 서비스 이용 권한을 침해 할 가능성이 있습니다. Yahoo Finance 사이트에서 제공하는 서비스의 이점 "을 참조하십시오. 야후 엄지 손가락을 아래로
무스타파 조지

노트에서 나머지 스위치를 추가했는데 그 스위치는 해당 웹 페이지에서 발견되었습니다. 여기에 제시된 내용은 ToS를 위반 한 것으로 보이지 않습니다 : policies.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/… Yahoo는 Excel 데이터 도구에 대해 화가 났을 것입니다. 해당 사이트에서 사용할 수 있습니다.
Fredrik E

2
이 데이터 피드는 더 이상 없습니다.
MichaelICE

47

나는 당신이 "무료"를 원한다는 것을 알고 있지만 , 만약 당신이라면 csidata.com 에서 연간 $ 300 정도 의 데이터를받는 것을 진지하게 고려하고 있습니다.

야후가 데이터를 제공하기 위해 사용하는 것입니다.

괜찮은 API가 제공되며 데이터는 (내가 알 수있는 한) 매우 깨끗합니다.

구독하면 10 년의 역사를 얻은 다음 야간 업데이트를받습니다.

그들은 또한 당신을 위해 스플릿과 배당과 같은 모든 종류의 불쾌한 것들을 돌 봅니다. 데이터 정리의 즐거움을 아직 발견하지 못했다면 ATS (Automated Trading System)가 처음으로 일부 주식이 실제로 저렴하다고 생각할 때까지 얼마나 필요한지 알지 못할 것입니다. : 1 당신은 눈치 채지 못했습니다.


1
어떤 언어가 API에서 지원됩니까?
user443854

1
C ++ 코드 또는 C # 또는 Windows의 모든 데이터를 사용하여 호출 할 수있는 ActiveX API가 있습니다.
lukebuehler 2016 년

1
흥미 롭군 분할 및 배당 처리는 Yahoo와 어떻게 다릅니 까?
Matthew Lock

1
@MatthewLock 100 %는 아니지만 Yahoo가 다른 "기업 이벤트"데이터 공급자를 사용하고 회사 이벤트에 의해 조정 된 원시 CSI 데이터 만 사용한다고 생각합니다. 이 다소 오래된 문서는 몇 가지 통찰력 제공 : amibroker.org/userkb/2007/09/23/yahoos-data-providers을
lukebuehler

2
CSI는 훌륭하지만 참고로 상장 해제 된 주식은 더 이상 기본 패키지에 포함되지 않은 프리미엄 서비스입니다. 참고로
Olie November

16

NASDAQ 및 NYSE의 모든 심볼의 데이터 세트는 1 초 또는 1 분 간격으로 방대 합니다.

두 거래소에 총 4000 개의 회사가 있다고 가정 해 봅시다 ( NASDAQ에 3200 개가 넘는 회사 가 있기 때문에 아마도 매우 낮은 편입니다 ). 하루에 6.5 거래 시간이 있다고 가정하면 두 번째 간격으로 데이터를 사용할 경우 회사 당 하루 23400 개의 데이터 포인트 또는 하루에 총 93,600,000 개의 데이터 포인트가 제공됩니다. 1 년에 200 일의 거래일을 가정하면 1 년 동안 약 18,720,000,000 개의 데이터 포인트가됩니다.

아마도 더 작은 세트로 시작하고 싶습니까?


2
나는 대부분의 회사가 매초마다 거래되지 않을 것이라는 가정하에 운영되었으므로 데이터 포인트의 수는 크게 줄어 듭니다. 아마도 그것은 나쁜 가정 일 것입니다. 아직도, 나는 매년 10 기가 바이트 정도를 예측하고있었습니다.
rmeador

10 개 정도의 기호에 대한 2 개월의 재고 데이터가 3 개의 DVD에 들어 왔습니다. 데이터도 압축되었습니다.
Alan

1
@rmeador는 사실이지만 일부 주식은 하루에 몇 초보다 일일 거래량이 많기 때문에 1 초에 한 번 이상 거래됩니다. 모든 거래가 동일한 가격으로 보장되는 것은 아닙니다. 그래서 당신은 당신이 간격으로, 또는 거래에서 가격에 관심이 있는지 결정해야합니다
matt b

2
모든 거래소, 예를 들어 모든 거래소의 레벨 II 따옴표 등을 1 년 동안 suuuuper 압축 형식 (거래 일당 약 5GB)으로 몇 TB를 원할 경우. 10 분 동안 모든 10 분 동안 약 10GB의 데이터 만 저장한다면 ...
lukebuehler

16

소개 :
야후에서 EOD (종료) 과거 가격 또는 실시간 가격을 얻을 수 있습니다. EOD 가격은 놀랍도록 간단하게 다운로드 할 수 있습니다. 데이터를 얻는 방법과 C # 코드 예제에 대한 설명 은 내 블로그 를 참조하십시오 .

데이터베이스에 실시간 가격을 다운로드하여 저장하는 실시간 데이터 피드 "엔진"을 작성하는 중입니다. 엔진은 처음에 Yahoo 및 Interactive Brokers에서 과거 가격을 다운로드 할 수 있으며 MS SQL, MySQL, SQLite 등 선택한 데이터베이스에 데이터를 저장할 수 있습니다. 오픈 소스이지만 더 게시 할 예정입니다. 내 블로그에 정보를 공개 할 때 (2 일 이내) 정보를 얻을 수 있습니다.

또 다른 옵션은 일식 상인입니다 ... 이력 데이터를 1 분 정도의 작은 단위로 기록하고 가격을 텍스트 파일에 로컬로 저장할 수 있습니다. 기본적으로 15 분 지연으로 Yahoo에서 실시간 데이터를 다운로드합니다. 더 강력한 솔루션을 원했고 데이터가 필요한 대규모 학교 프로젝트를 진행하고 있으므로 데이터 피드 엔진 (위에서 언급 한)을 직접 작성하기로 결정했습니다.

샘플 코드 :
실시간 데이터를 다운로드하는 방법을 보여주는 샘플 C # 코드는 다음과 같습니다.

public void Start()
{
    string url = "http://finance.yahoo.com/d/quotes.csv?s=MSFT+GOOG&f=snl1d1t1ohgdr";
    //Get page showing the table with the chosen indices
    HttpWebRequest request = null;
    IDatabase database =
        DatabaseFactory.CreateDatabase(
        DatabaseFactory.DatabaseType.SQLite);

    //csv content
    try
    {
        while (true)
        {
            using (Stream file = File.Create("quotes.csv"))
            {
                request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
                request.Timeout = 30000;
                using (var response = (HttpWebResponse)request.GetResponse())
                using (Stream input = response.GetResponseStream())
                {
                    CopyStream(input, file);
                }
            }
            Console.WriteLine("------------------------------------------------");
            database.InsertData(Directory.GetCurrentDirectory() + "/quotes.csv");

            File.Delete("quotes.csv");
            Thread.Sleep(10000); // 10 seconds
        }
    }
    catch (Exception exc)
    {
        Console.WriteLine(exc.ToString());
        Console.ReadKey();
    }
}

데이터베이스 :
데이터베이스 측 OleDb에서 CSV 파일에 연결하여을 채우고 DataSet를 통해 실제 데이터베이스를 업데이트 DataSet하면 기본적으로 Yahoo에서 반환 된 CSV 파일의 모든 열을 데이터베이스에 직접 일치시킬 수 있습니다 ( 데이터베이스가 SQLite와 같은 CSV 데이터의 일괄 삽입을 지원하지 않는 경우). 그렇지 않으면 데이터를 삽입하는 것이 하나의 라이너입니다. CSV를 데이터베이스에 일괄 삽입하십시오.

URL 형식에 대한 자세한 내용은 여기를 참조 하십시오. http://www.gummy-stuff.org/Yahoo-data.htm


서사시 나는 이것을 이전에 찾았 으면 좋겠다.
ojblass

실제로 제안한대로 실시간 데이터를 제공합니까? 페이지 에서이 매개 변수 "k1"이 있지만 마지막으로 확인했을 때 여전히 약간의 지연이 있습니다.
Antony

@Antony 대부분의 경우 일종의 지연이 있으므로 지연에 얼마나 관대한지에 달려 있습니다. 야후는 실시간 데이터를 제공한다고하지만 모든 시세에 해당되는 것은 아니다. 실시간이 아닌 티커는 최대 15 분까지 지연됩니다. 교환에서 같은 위치에있는 서버를 확보하더라도 "일부 지연"이 발생 합니다. 그래서 어떤 종류의 지연을 기꺼이 용납 하시겠습니까?
Kiril

신뢰할 수 없습니다. 예를 들어, real-chart.finance.yahoo.com/… finance.yahoo.com/q/…
mmm

9

NASDAQ은 각 기호에 대해 10 년의 과거 EOD 데이터를 제공합니다

http://www.nasdaq.com/aspx/historical_quotes.aspx?symbol=AAPL&selected=AAPL

이 데이터 다운로드 프로세스를 자동화 할 수 있습니다.


좋은 소스. 요청 시스템이 변경되었으므로 이제 모든 요청이 JS로 처리됩니다 (예 : nasdaq.com/symbol/aapl/historical ). 자동화하는 방법이 있습니까?
Anton Tarasenko

그렇습니다. 자동화가 가능합니다. Telerik과 같은 스니퍼를 사용하고 POST를 통해 데이터를 얻는 방법을 확인해야합니다. 사후 변수를 올바르게 보내면 데이터를 가져와야합니다.
Nick_F

1
여전히 사용할 수 있습니까? 내일 데이터가 포함되어 있습니까?
Lee

8

생존 바이어스 무료 데이터의 경우 내가 찾은 신뢰할 수있는 유일한 출처는 QuantQuote ( http://quantquote.com )입니다.

데이터는 분 단위, 초 단위 또는 틱 단위로 기록되어 과거 주식 데이터에 연결됩니다 .

위의 키봇에 대한 제안이있었습니다. 나는 그들로부터 구입하기 전에, 당신은 많은 게시물 찾을 수 있습니다 빠른 구글 검색을 할 것 같은 kibot 데이터 품질 문제에 대한 경고와 함께합니다. 또한 생존자 편향이없는 sp500은 14 년 동안 570 개의 기호 만 가지고 있다고합니다. sp500은 한 에 1-2 개의 기호로 바뀝니다 .


3
kibot에는 3 개의 무료 기호 만 있습니다. 나머지는 지불해야합니다! 그는 광고를하고있다
튀는

quantquote의 무료 일일 데이터는 문서화되어 있지 않습니다. csv 파일에는 열 머리글이없고 문서도 없습니다.
user443854

문서가 있으며 형식은 기본적으로 미세 해상도 데이터 세트와 동일합니다.
user788171

quantquote.com은 데이터에 많은 오류가 있습니다
Ivelin

1998 년부터 IBM에 대한 무료 분 단위 데이터를 제공합니다. : 난 단지 테스트 압축 한 상징이 필요 kibot.com/buy.aspx
세르게이 라죠 노프을

7

불행히도 무료로 제공되는 시세 티커 데이터는 찾기가 어렵습니다. 이제 opentick가 죽었으므로 다른 공급자를 알지 못합니다.

전 생애에서 저는 자동화 된 거래 시스템을 갖춘 헤지 펀드에서 근무했으며, 과거 데이터를 풍부하게 사용했습니다.

소스에 TickData를 사용했습니다. 그들의 가격은 합리적이며 데이터는 2 초 미만의 해상도를 가졌습니다.


6

Kibot.com 에서 12 년 간의 일일 데이터를 구매 했으며 품질에 매우 만족합니다.

스토리지 요구 사항 : 모든 미국 주식 (8000 개 이상의 기호)에 대한 12 년의 1 분 데이터는 약 100GB입니다.

틱별 데이터의 상황은 조금 다릅니다. 시간과 판매 만 기록하면 모든 미국 주식에 대해 한 달에 약 30GB의 데이터가됩니다. 거래를 함께 입찰 / 변경 요청을 저장하려면 매월 약 150GB를 기대할 수 있습니다.

이게 도움이 되길 바란다. 다른 도움이 필요하면 알려주십시오.


1
KiBot @ boe100에 계속 만족하십니까?
JaredBroad

@ boe100 조정 된 가격과 조정되지 않은 가격이 모두 있습니까? 베타와 델타가 있습니까?
user443854

조정 및 조정되지 않은 데이터를 모두 사용할 수 있습니다. HTTP API를 사용하여 데이터를 업데이트하거나 매일 FTP 서버에서 새 아카이브를 다운로드 할 수 있습니다. 베타 나 델타는 계산되지 않습니다.
boe100

@ boe100 데이터를 공유 할 수 있습니까?
Tomasz Waszczyk

2
@Tomasz haha, 당신의 코멘트는 나의 하루가되었다 : D
Corneliu Maftuleac

6

제가 방금 발견 된 소스를 추가하자 발견 여기에 .

csv 형식의 많은 역사적 재고 데이터를 보유하고 있으며 그의 홈페이지에 따르면 "Carnegie Mellon University의 컴퓨터 과학 부서의 조교수"인 Andy Pavlo가 수집했습니다.


이것은 충분히 큰 과거 주식 시장 데이터 세트로 혼란스러워하는 사람에게 좋습니다.
Ciaran Gallagher

1
웹 페이지 다운 ...
Brethlosze 17.



4

yahoo를 사용하여 일일 데이터 (보다 관리하기 쉬운 데이터 세트)를 얻을 수 있지만 URL을 구성해야합니다. 이 링크를 참조하십시오 . 작은 요청을 많이하지 않고 큰 요청을 줄입니다. 많은 무료 소프트웨어가 이것을 사용하므로 종료하지 않아야합니다.

편집 : 사람이 할 수 있습니다. 아마도 그의 소프트웨어가 호출하는 것을 볼 수 있습니다.


처음에는 링크가 유망한 것처럼 보였지만 기록 데이터를 지정하는 방법을 찾을 수없는 것 같습니다 ... 모두 실시간 인 것처럼 보입니다. 뭔가 빠졌습니까?
rmeador

당신이 맞아요 나는 역사적인 일을하는 소프트웨어를 가진 누군가의 다른 링크를 추가 했으므로 가능하다는 것을 알았습니다. 그의 소프트웨어가 어떤 전화를했는지 살펴보십시오.
jimconstable

4

Yahoo는 예비 무료 데이터를 얻는 가장 간단한 옵션입니다. eckesicle의 답변에 설명 된 링크는 파이썬 코드에서 쉽게 사용할 수 있지만 먼저 모든 시세가 필요합니다. 이 예에서는 NYSE를 사용하지만 다른 교환에도 사용할 수 있습니다.

이 위키 페이지 를 사용 하여 다음과 같은 스크립트로 모든 회사 시세를 다운로드했습니다 (유능한 Pythonist는 아닙니다.이 코드가 효율적이지 않으면 죄송합니다).

import string
import urllib2
from bs4 import BeautifulSoup

global f

def download_page(url):
    aurl = urllib2.urlopen(url)
    soup = BeautifulSoup(aurl.read())

    print url

    for row in soup('table')[1]('tr'):
        tds = row('td')
        if (len(tds) > 0):
            f.write(tds[1].string + '\n')


f = open('stock_names.txt', 'w')

url_part1 = 'http://en.wikipedia.org/wiki/Companies_listed_on_the_New_York_Stock_Exchange_'
url = url_part1 + '(0-9)'
download_page(url)

for letter in string.uppercase[:26]:
    url_part2 = letter
    url = url_part1 + '(' + letter + ')'

    download_page(url)

f.close()

각 티커를 다운로드하기 위해 비슷한 스크립트를 사용했습니다.

import string
import urllib2
from bs4 import BeautifulSoup


global f

url_part1 = 'http://ichart.finance.yahoo.com/table.csv?s='
url_part2 = '&d=0&e=28&f=2010&g=d&a=3&b=12&c=1996&ignore=.csv'

print "Starting"

f = open('stock_names.txt', 'r')
file_content = f.readlines()
count = 1;
print "About %d tickers will be downloaded" % len(file_content)

for ticker in file_content:
    ticker = ticker.strip()
    url = url_part1 + ticker + url_part2
    
    try:
        # This will cause exception on a 404
        response = urllib2.urlopen(url)

        print "Downloading ticker %s (%d out of %d)" % (ticker, count, len(file_content))

        count = count + 1
        history_file = open('C:\\Users\\Nitay\\Desktop\\Historical Data\\' + ticker + '.csv', 'w')
        history_file.write(response.read())
        history_file.close()

    except Exception, e:
        pass

f.close()

이 방법의 주요 단점은 회사마다 다른 데이터를 사용할 수 있다는 것입니다. 요청한 날짜에 데이터가없는 회사 (새로 나열)는 404 페이지를 제공합니다.

또한이 방법은 예비 데이터에만 유용합니다. 알고리즘을 실제로 테스트하려면 약간의 비용을 지불하고 CSIData 또는 기타와 같은 신뢰할 수있는 데이터 공급 업체를 사용해야합니다.


그래도 전역 네임 스페이스에 전역 선언을 넣는 것은 불필요하지만 좋은 반응입니다.
Luke Taylor

1
서비스 다운 ...
Brethlosze

3

Brownian Motion으로 가짜 주식 시장을 모델링하지 않겠습니까?

이를위한 많은 자원. 구현하기 쉽습니다.

http://introcs.cs.princeton.edu/java/98simulation/


1
:-) 좀 더 현실적으로 만들려면 Fractional Brownian 모션 을 생성해야 하지만 그다지 현실적이지는 않습니다. 가장 사실적인 가짜 시장 데이터에는 프랙탈 시간 차원이 필요합니다. 꽤 복잡해집니다. 실제 시장 데이터를 구매하는 것이
좋습니다

그것은 또한 주식 운동이
대수적

3

eodData.com을 사용합니다. 꽤 괜찮은 가격입니다. 한 달에 30 달러로 모든 미국 거래소에 대해 30 일 1,5, 60 분 막대를, 대부분의 다른 거래소에 대해서는 1 년의 EOD 데이터를받습니다.


2

finance.google.com (따옴표) 또는 finance.yahoo.com을 크롤링했습니다.

둘 다 기록을 포함하여 전 세계 대부분의 교환에 대해 html 페이지를 반환합니다. 그런 다음 HTML을 구문 분석하여 필요한 것을 추출하면됩니다.

나는 과거에 이것을 성공적으로 해냈습니다. 또는 Perl을 사용하는 것이 마음에 들지 않으면 CPAN에는이 작업을 수행 한 여러 모듈이 있습니다 (예 : Google / Yahoo에서 따옴표 추출).

자세한 내용은 견적 내역을 참조하십시오.


펄 모듈을 +1하면 데이터를 매우 쉽게 얻을 수 있습니다.
Matthew Lock


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.