귀하의 문제는 단순히 주가를 빼는 것보다 더 복잡하다고 생각합니다. 또한 파일 이름에서 추측 할 수있는 일관된 시간 범위가 아닌 경우 날짜를 저장해야합니다.
데이터 양은 그리 크지 않습니다.300 년 동안 매년 30 년 동안 매일 매일 데이터를 보관하고 있더라도 상급 가정용 컴퓨터 (예 : MAC Pro)에이 모든 데이터를 저장할 수 있습니다. 즉, 5Tb로 제한되지 않습니다. .
나는 매일 Yahoo의 IBM 주식을 추적하여 "보통"(조정 된 닫기 만) 저장하고 gzip을 사용하여 압축하는 "차이 방법"을 사용하여 빠르고 더러운 스크립트를 작성했습니다. . 절감액은 16K 대 10K입니다. 문제는 내가 데이트를 저장하지 않았고, 어떤 값이 어떤 날짜에 해당하는지 알지 못한다는 것입니다. 물론 이것을 포함해야합니다.
행운을 빈다. 가장 좋은 것이 무엇
import urllib as ul
import binascii as ba
# root URL
url = 'http://ichart.finance.yahoo.com/table.csv?%s'
# dictionary of options appended to URL (encoded)
opt = ul.urlencode({
's':'IBM', # Stock symbol or ticker; IBM
'a':'00', # Month January; index starts at zero
'b':'2', # Day 2
'c':'1978', # Year 2009
'd':'10', # Month November; index starts at zero
'e':'30', # Day 30
'f':'2009', # Year 2009
'g':'d', # Get daily prices
'ignore':'.csv', # CSV format
})
# get the data
data = ul.urlopen(url % opt)
# get only the "Adjusted Close" (last column of every row; the 7th)
close = []
for entry in data:
close.append(entry.strip().split(',')[6])
# get rid of the first element (it is only the string 'Adj Close')
close.pop(0)
# write to file
f1 = open('raw.dat','w')
for element in close:
f1.write(element+'\n')
f1.close()
# simple function to convert string to scaled number
def scale(x):
return int(float(x)*100)
# apply the previously defined function to the list
close = map(scale,close)
# it is important to store the first element (it is the base scale)
base = close[0]
# normalize all data (difference from nom)
close = [ close[k+1] - close[k] for k in range(len(close)-1)]
# introduce the base to the data
close.insert(0,base)
# define a simple function to convert the list to a single string
def l2str(list):
out = ''
for item in list:
if item>=0:
out += '+'+str(item)
else:
out += str(item)
return out
# convert the list to a string
close = l2str(close)
f2 = open('comp.dat','w')
f2.write(close)
f2.close()
는 이제 "압축 된 형식"대 "원시 데이터"(raw.dat)를 비교하면 제안 (comp.dat)
:sandbox jarrieta$ ls -lh
total 152
-rw-r--r-- 1 jarrieta staff 23K Nov 30 09:28 comp.dat
-rw-r--r-- 1 jarrieta staff 47K Nov 30 09:28 raw.dat
-rw-r--r-- 1 jarrieta staff 1.7K Nov 30 09:13 stock.py
:sandbox jarrieta$ gzip --best *.dat
:sandbox jarrieta$ ls -lh
total 64
-rw-r--r-- 1 jarrieta staff 10K Nov 30 09:28 comp.dat.gz
-rw-r--r-- 1 jarrieta staff 16K Nov 30 09:28 raw.dat.gz
-rw-r--r-- 1 jarrieta staff 1.7K Nov 30 09:13 stock.py
왜 비교하지 않습니까? – jldupont
http://mathoverflow.com/ – jldupont