Piyasa Verisi API Entegrasyonu
Gerçek zamanlı ve geçmiş veriler için Alpha Vantage, Yahoo Finance ve Polygon.io.
Piyasa Verisi API Entegrasyonu, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Finansal Aracılarda Piyasa Verileri
Finansal analiz aracılarının gerçek zamanlı ve geçmiş piyasa verilerine erişmesi gerekir. Yaygın veri türleri arasında OHLCV (Açılış/Yüksek/Düşük/Kapanış/Hacim), kazanç tarihleri, temel oranlar ve opsiyon zincirleri bulunur.
Bu verileri sağlayan çeşitli API'ler vardır: yfinance (ücretsiz, Yahoo Finance), Polygon.io (ücretli, güvenilir) ve Alpha Vantage (ücretsiz katmanı mevcut).
yfinance: Geçmiş Fiyat Verileri
yfinance, Yahoo Finance API'sini sarmalar ve kullanmaya başlamanın en hızlı yoludur. Ticker.history(), OHLCV verilerinden oluşan bir pandas DataFrame döndürür.
import yfinance as yf
ticker = yf.Ticker('AAPL')
# 1 year of daily data
history = ticker.history(period='1y')
print(history.tail(3))
# Open High Low Close Volume
# Date
# 2026-05-27 189.1500 190.3200 188.9200 190.0500 55234000
# 2026-05-28 190.4200 191.5600 189.7800 191.1200 62345000
print(f'Rows: {len(history)}')yfinance: Özel Tarih Aralıkları
Özel tarih aralıkları için start ve end parametrelerini, gün içi veriler içinse (1m, 5m, 1h) interval parametresini kullanın. Gün içi verilerin, aralığa bağlı olarak yalnızca son 60 günle sınırlı olduğunu unutmayın.
import yfinance as yf
ticker = yf.Ticker('MSFT')
# Custom date range
history = ticker.history(start='2024-01-01', end='2024-12-31')
print(f'Trading days in 2024: {len(history)}')
# Batch multiple tickers
tickers = yf.download(['AAPL', 'MSFT', 'GOOGL'],
start='2025-01-01', end='2025-12-31')
print(tickers['Close'].head())Polygon.io REST API'si
Polygon.io, ücretsiz kaynaklara kıyasla profesyonel düzeyde piyasa verileri, daha yüksek istek limitleri ve daha güvenilir çalışma süresi sağlar. Üretim ortamındaki finansal aracılar için bunu kullanın.
import requests
POLYGON_KEY = 'YOUR_POLYGON_API_KEY'
def get_polygon_daily(ticker: str, from_date: str, to_date: str) -> list[dict]:
url = f'https://api.polygon.io/v2/aggs/ticker/{ticker}/range/1/day/{from_date}/{to_date}'
resp = requests.get(url, params={'apiKey': POLYGON_KEY, 'limit': 365})
resp.raise_for_status()
data = resp.json()
return data.get('results', [])
bars = get_polygon_daily('AAPL', '2025-01-01', '2025-12-31')
print(f'Bars returned: {len(bars)}')
if bars:
print('Latest close:', bars[-1]['c'])Alpha Vantage TIME_SERIES_DAILY
Alpha Vantage, ücretsiz bir katman (günde 25 çağrı) ve ücretli bir katman sunar. TIME_SERIES_DAILY uç noktası, isteğe bağlı olarak düzeltilmiş fiyatlarla OHLCV verilerini döndürür.
import requests
ALPHA_KEY = 'YOUR_ALPHA_VANTAGE_KEY'
def get_alpha_vantage_daily(symbol: str, outputsize: str = 'compact') -> dict:
# outputsize: 'compact' (100 days) or 'full' (20+ years)
resp = requests.get('https://www.alphavantage.co/query', params={
'function': 'TIME_SERIES_DAILY_ADJUSTED',
'symbol': symbol,
'outputsize': outputsize,
'apikey': ALPHA_KEY
})
resp.raise_for_status()
data = resp.json()
series = data.get('Time Series (Daily)', {})
return series # dict: {date_str: {open, high, low, close, volume, ...}}İstek Limitleri ve Yeniden Deneme Mantığı
Tüm piyasa verisi API'leri istek limitleri uygular. Bu limitleri aşarsanız 429 (Çok Fazla İstek) hatası alırsınız. Her zaman üstel geri çekilme uygulayın ve limitlere uyun.
import time, requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
def make_rate_limited_session(calls_per_minute: int = 5) -> requests.Session:
session = requests.Session()
retry = Retry(
total=3,
backoff_factor=2, # 1s, 2s, 4s waits
status_forcelist=[429, 500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('https://', adapter)
session._calls_per_min = calls_per_minute
session._min_interval = 60.0 / calls_per_minute
session._last_call = 0.0
return session
def rate_limited_get(session, url, **kwargs):
elapsed = time.time() - session._last_call
if elapsed < session._min_interval:
time.sleep(session._min_interval - elapsed)
session._last_call = time.time()
return session.get(url, **kwargs)Piyasa Verilerini Önbelleğe Alma
Geçmiş veriler değişmezdir; dünkü kapanış fiyatı hiçbir zaman değişmez. Gereksiz API çağrılarını önlemek için bu verileri önbelleğe alın. (ticker, date_range) anahtarını kullanan basit bir disk önbelleği kullanın.
import hashlib, json, os
CACHE_DIR = '/tmp/market_cache'
os.makedirs(CACHE_DIR, exist_ok=True)
def cache_key(ticker: str, start: str, end: str) -> str:
return hashlib.md5(f'{ticker}_{start}_{end}'.encode()).hexdigest()
def get_cached(ticker: str, start: str, end: str):
key = cache_key(ticker, start, end)
path = os.path.join(CACHE_DIR, f'{key}.json')
if os.path.exists(path):
with open(path) as f:
return json.load(f)
return None
def set_cached(ticker: str, start: str, end: str, data):
key = cache_key(ticker, start, end)
path = os.path.join(CACHE_DIR, f'{key}.json')
with open(path, 'w') as f:
json.dump(data, f)
if __name__ == '__main__':
set_cached('AAPL', '2024-01-01', '2024-01-31', {'close': [150, 151, 149]})
cached = get_cached('AAPL', '2024-01-01', '2024-01-31')
print('Cached data for AAPL:', cached)
print('Cache miss for MSFT:', get_cached('MSFT', '2024-01-01', '2024-01-31'))
İşlem Saatlerini ve Piyasa Boşluklarını Ele Alma
Piyasalar hafta sonlarında ve tatillerde kapalıdır. İşlem yapılmayan günleri kapsayan tarih aralıklarında verilerde boşluklar oluşur. Günlük verilerin kesintisiz olduğunu varsaymak yerine bu boşlukları her zaman algılayıp ele alın.
import pandas as pd
from pandas.tseries.offsets import BDay
def detect_gaps(history: pd.DataFrame) -> list[str]:
if history.empty:
return []
date_range = pd.date_range(
start=history.index.min(),
end=history.index.max(),
freq=BDay() # Business days only
)
missing = date_range.difference(history.index)
return [str(d.date()) for d in missing]
import yfinance as yf
history = yf.Ticker('AAPL').history(start='2024-12-23', end='2025-01-07')
gaps = detect_gaps(history)
print('Missing business days (holidays):', gaps)Aracılar İçin Piyasa Verisi Aracı Oluşturma
Bir piyasa verisi alıcısını aracı aracı olarak kaydedin. LLM, verileri almak için onu çağırabilir ve ardından sonucu işlemek üzere başka bir aracı (analiz aracı) kullanabilir.
import yfinance as yf, json
def get_market_data_tool(ticker: str, period: str = '1y') -> str:
cached = get_cached(ticker, period, 'yfinance')
if cached:
return json.dumps(cached)
try:
hist = yf.Ticker(ticker).history(period=period)
if hist.empty:
return json.dumps({'error': f'No data for {ticker}'})
result = {
'ticker': ticker,
'period': period,
'start': str(hist.index.min().date()),
'end': str(hist.index.max().date()),
'latest_close': float(hist['Close'].iloc[-1]),
'pct_change_ytd': float((hist['Close'].iloc[-1] / hist['Close'].iloc[0] - 1) * 100),
'rows': len(hist)
}
set_cached(ticker, period, 'yfinance', result)
return json.dumps(result)
except Exception as e:
return json.dumps({'error': str(e)})yfinance ile Temel Veriler
yfinance, fiyat verilerinin yanı sıra F/K oranı, hisse başına kazanç, piyasa değeri ve daha fazlasını içeren temel veriler de sağlar. Temel veriler, bir aracının analizini yalnızca fiyat hareketlerinin ötesine taşıyarak zenginleştirir.
import yfinance as yf
ticker = yf.Ticker('AAPL')
info = ticker.info
print('Market Cap: ', info.get('marketCap'))
print('P/E Ratio: ', info.get('trailingPE'))
print('EPS: ', info.get('trailingEps'))
print('52-Week High: ', info.get('fiftyTwoWeekHigh'))
print('52-Week Low: ', info.get('fiftyTwoWeekLow'))
print('Dividend Yield: ', info.get('dividendYield'))
print('Analyst Target: ', info.get('targetMeanPrice'))Hata İşleme: Borsadan Çıkarılmış ve Geçersiz Ticker'lar
Tüm ticker sembolleri geçerli değildir veya hâlen işlem görmemektedir. Borsadan çıkarılmış bir şirket boş bir geçmiş döndürür. Analize devam etmeden önce yanıtı her zaman doğrulayın.
import yfinance as yf
def safe_fetch(ticker_symbol: str, period: str = '1y') -> dict:
try:
ticker = yf.Ticker(ticker_symbol)
history = ticker.history(period=period)
if history.empty:
return {
'error': f'No data for {ticker_symbol}. May be delisted or invalid.',
'ticker': ticker_symbol
}
return {
'ticker': ticker_symbol,
'latest_close': float(history['Close'].iloc[-1]),
'data_start': str(history.index.min().date()),
'bars': len(history)
}
except Exception as e:
return {'error': str(e), 'ticker': ticker_symbol}
print(safe_fetch('AAPL')) # valid
print(safe_fetch('INVALID')) # returns error dictAlpha Vantage TIME_SERIES_DAILY uç noktasında “compact” outputsize ne döndürür
API çıktı boyutu parametrelerini anlamak, finansal aracılarda bant genişliğini, gecikmeyi ve API kotalarını yönetmek açısından önemlidir.
Piyasa Verisi API Entegrasyonu Özeti
Hızlı prototip oluşturma için yfinance'ı (ücretsiz), üretim ortamı için Polygon.io'yu (güvenilir, ücretli) ve ücretsiz katman seçeneği için Alpha Vantage'ı kullanın. İşlem yapılmayan günler için her zaman istek sınırlama, geçmiş veriler için disk önbelleğe alma ve boşluk algılama uygulayın.
Veri almayı bir aracı aracı olarak sunun; böylece LLM gerektiğinde veri isteyebilir.
Sıkça Sorulan Sorular
“Piyasa Verisi API Entegrasyonu” dersi ücretsiz mi?
Evet — “Piyasa Verisi API Entegrasyonu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Piyasa Verisi API Entegrasyonu” dersinde ne öğreneceğim?
Gerçek zamanlı ve geçmiş veriler için Alpha Vantage, Yahoo Finance ve Polygon.io. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Piyasa Verisi API Entegrasyonu” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Piyasa Verisi API Entegrasyonu
- Portföy Analizi Aracı Araçları
- Risk ve Uyumluluk Güvenlik Sınırları
- Aracı Kararlarını Geriye Dönük Test Etme