borsapy 0.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- borsapy/__init__.py +134 -0
- borsapy/_models/__init__.py +1 -0
- borsapy/_providers/__init__.py +5 -0
- borsapy/_providers/base.py +94 -0
- borsapy/_providers/bist_index.py +150 -0
- borsapy/_providers/btcturk.py +230 -0
- borsapy/_providers/canlidoviz.py +773 -0
- borsapy/_providers/dovizcom.py +869 -0
- borsapy/_providers/dovizcom_calendar.py +276 -0
- borsapy/_providers/dovizcom_tahvil.py +172 -0
- borsapy/_providers/hedeffiyat.py +376 -0
- borsapy/_providers/isin.py +247 -0
- borsapy/_providers/isyatirim.py +943 -0
- borsapy/_providers/isyatirim_screener.py +468 -0
- borsapy/_providers/kap.py +534 -0
- borsapy/_providers/paratic.py +278 -0
- borsapy/_providers/tcmb.py +317 -0
- borsapy/_providers/tefas.py +802 -0
- borsapy/_providers/viop.py +204 -0
- borsapy/bond.py +162 -0
- borsapy/cache.py +86 -0
- borsapy/calendar.py +272 -0
- borsapy/crypto.py +153 -0
- borsapy/exceptions.py +64 -0
- borsapy/fund.py +471 -0
- borsapy/fx.py +388 -0
- borsapy/index.py +285 -0
- borsapy/inflation.py +166 -0
- borsapy/market.py +53 -0
- borsapy/multi.py +227 -0
- borsapy/screener.py +365 -0
- borsapy/ticker.py +1196 -0
- borsapy/viop.py +162 -0
- borsapy-0.4.0.dist-info/METADATA +969 -0
- borsapy-0.4.0.dist-info/RECORD +37 -0
- borsapy-0.4.0.dist-info/WHEEL +4 -0
- borsapy-0.4.0.dist-info/licenses/LICENSE +190 -0
|
@@ -0,0 +1,969 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: borsapy
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Turkish financial markets data library - yfinance-like API for BIST stocks, forex, crypto, and more
|
|
5
|
+
Project-URL: Homepage, https://github.com/saidsurucu/borsapy
|
|
6
|
+
Project-URL: Documentation, https://github.com/saidsurucu/borsapy#readme
|
|
7
|
+
Project-URL: Repository, https://github.com/saidsurucu/borsapy
|
|
8
|
+
Project-URL: Issues, https://github.com/saidsurucu/borsapy/issues
|
|
9
|
+
Author: Said Surucu
|
|
10
|
+
License: Apache-2.0
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: bist,crypto,finance,forex,market-data,stocks,turkey
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
16
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
24
|
+
Requires-Python: >=3.9
|
|
25
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
26
|
+
Requires-Dist: httpx>=0.27.0
|
|
27
|
+
Requires-Dist: lxml>=5.0.0
|
|
28
|
+
Requires-Dist: openpyxl>=3.1.0
|
|
29
|
+
Requires-Dist: pandas>=2.0.0
|
|
30
|
+
Requires-Dist: pydantic>=2.0.0
|
|
31
|
+
Requires-Dist: urllib3>=2.0.0
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
34
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
35
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
|
|
38
|
+
# borsapy
|
|
39
|
+
|
|
40
|
+
[](https://pypi.org/project/borsapy/)
|
|
41
|
+
[](https://pypi.org/project/borsapy/)
|
|
42
|
+
[](https://pypi.org/project/borsapy/)
|
|
43
|
+
[](https://github.com/saidsurucu/borsapy/blob/master/LICENSE)
|
|
44
|
+
[](https://saidsurucu.github.io/borsapy/borsapy.html)
|
|
45
|
+
|
|
46
|
+
Türk finansal piyasaları için Python veri kütüphanesi. BIST hisseleri, döviz, kripto, yatırım fonları ve ekonomik veriler için yfinance benzeri API.
|
|
47
|
+
|
|
48
|
+
[](https://www.star-history.com/#saidsurucu/borsapy&type=date&legend=top-left)
|
|
49
|
+
|
|
50
|
+
## Kurulum
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install borsapy
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Hızlı Başlangıç
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
import borsapy as bp
|
|
60
|
+
|
|
61
|
+
# Hisse senedi verisi
|
|
62
|
+
hisse = bp.Ticker("THYAO")
|
|
63
|
+
print(hisse.info) # Anlık fiyat ve şirket bilgileri
|
|
64
|
+
print(hisse.history(period="1ay")) # Geçmiş OHLCV verileri
|
|
65
|
+
print(hisse.balance_sheet) # Bilanço
|
|
66
|
+
|
|
67
|
+
# Çoklu hisse
|
|
68
|
+
data = bp.download(["THYAO", "GARAN", "AKBNK"], period="1ay")
|
|
69
|
+
print(data)
|
|
70
|
+
|
|
71
|
+
# Döviz
|
|
72
|
+
usd = bp.FX("USD")
|
|
73
|
+
print(usd.current) # Güncel kur
|
|
74
|
+
print(usd.history(period="1ay")) # Geçmiş veriler
|
|
75
|
+
|
|
76
|
+
# Kripto
|
|
77
|
+
btc = bp.Crypto("BTCTRY")
|
|
78
|
+
print(btc.current) # Güncel fiyat
|
|
79
|
+
|
|
80
|
+
# Yatırım fonu
|
|
81
|
+
fon = bp.Fund("AAK")
|
|
82
|
+
print(fon.info) # Fon bilgileri
|
|
83
|
+
|
|
84
|
+
# Enflasyon
|
|
85
|
+
enf = bp.Inflation()
|
|
86
|
+
print(enf.latest()) # Son TÜFE verileri
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Ticker (Hisse Senedi)
|
|
92
|
+
|
|
93
|
+
`Ticker` sınıfı, BIST hisse senetleri için kapsamlı veri erişimi sağlar.
|
|
94
|
+
|
|
95
|
+
### Temel Kullanım
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import borsapy as bp
|
|
99
|
+
|
|
100
|
+
hisse = bp.Ticker("THYAO")
|
|
101
|
+
|
|
102
|
+
# Hızlı fiyat bilgisi (cache'den, API çağrısı yapmaz)
|
|
103
|
+
print(hisse.fast_info["last_price"]) # Son fiyat
|
|
104
|
+
print(hisse.fast_info["previous_close"]) # Önceki kapanış
|
|
105
|
+
print(hisse.fast_info["volume"]) # Hacim
|
|
106
|
+
print(hisse.fast_info["market_cap"]) # Piyasa değeri
|
|
107
|
+
print(hisse.fast_info["pe_ratio"]) # F/K oranı
|
|
108
|
+
print(hisse.fast_info["free_float"]) # Halka açıklık oranı
|
|
109
|
+
print(hisse.fast_info["foreign_ratio"]) # Yabancı oranı
|
|
110
|
+
|
|
111
|
+
# Detaylı bilgiler (tüm verileri yükler)
|
|
112
|
+
print(hisse.info["last"]) # Son fiyat
|
|
113
|
+
print(hisse.info["marketCap"]) # Piyasa değeri
|
|
114
|
+
print(hisse.info["trailingPE"]) # F/K oranı
|
|
115
|
+
print(hisse.info["dividendYield"]) # Temettü verimi
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Fiyat Geçmişi
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
# Dönem bazlı
|
|
122
|
+
df = hisse.history(period="1ay") # Son 1 ay
|
|
123
|
+
df = hisse.history(period="3ay") # Son 3 ay
|
|
124
|
+
df = hisse.history(period="1y") # Son 1 yıl
|
|
125
|
+
df = hisse.history(period="max") # Tüm geçmiş
|
|
126
|
+
|
|
127
|
+
# Tarih aralığı
|
|
128
|
+
df = hisse.history(start="2024-01-01", end="2024-06-30")
|
|
129
|
+
|
|
130
|
+
# Farklı zaman dilimleri (interval)
|
|
131
|
+
df = hisse.history(period="1g", interval="1m") # 1 dakikalık mumlar
|
|
132
|
+
df = hisse.history(period="1g", interval="3m") # 3 dakikalık mumlar
|
|
133
|
+
df = hisse.history(period="1g", interval="5m") # 5 dakikalık mumlar
|
|
134
|
+
df = hisse.history(period="1g", interval="15m") # 15 dakikalık mumlar
|
|
135
|
+
df = hisse.history(period="1g", interval="30m") # 30 dakikalık mumlar
|
|
136
|
+
df = hisse.history(period="1g", interval="45m") # 45 dakikalık mumlar
|
|
137
|
+
df = hisse.history(period="5g", interval="1h") # Saatlik mumlar
|
|
138
|
+
df = hisse.history(period="1ay", interval="1d") # Günlük mumlar (varsayılan)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Finansal Tablolar
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
# Yıllık tablolar
|
|
145
|
+
print(hisse.balance_sheet) # Bilanço
|
|
146
|
+
print(hisse.income_stmt) # Gelir tablosu
|
|
147
|
+
print(hisse.cashflow) # Nakit akış
|
|
148
|
+
|
|
149
|
+
# Çeyreklik tablolar
|
|
150
|
+
print(hisse.quarterly_balance_sheet)
|
|
151
|
+
print(hisse.quarterly_income_stmt)
|
|
152
|
+
print(hisse.quarterly_cashflow)
|
|
153
|
+
|
|
154
|
+
# TTM (Son 12 ay)
|
|
155
|
+
print(hisse.ttm_income_stmt)
|
|
156
|
+
print(hisse.ttm_cashflow)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Temettü ve Sermaye Artırımları
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
print(hisse.dividends) # Temettü geçmişi
|
|
163
|
+
print(hisse.splits) # Sermaye artırımları
|
|
164
|
+
print(hisse.actions) # Tüm kurumsal işlemler
|
|
165
|
+
|
|
166
|
+
# Geçmiş verilerde temettü ve split
|
|
167
|
+
df = hisse.history(period="1y", actions=True)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Ortaklık Yapısı
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
print(hisse.major_holders) # Ana ortaklar
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Analist Verileri
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
print(hisse.analyst_price_targets) # Hedef fiyatlar
|
|
180
|
+
print(hisse.recommendations_summary) # AL/TUT/SAT dağılımı
|
|
181
|
+
print(hisse.recommendations) # Detaylı tavsiyeler
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### KAP Bildirimleri
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
print(hisse.news) # Son bildirimler
|
|
188
|
+
print(hisse.calendar) # Beklenen açıklamalar
|
|
189
|
+
print(hisse.earnings_dates) # Finansal rapor tarihleri
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Diğer Bilgiler
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
print(hisse.isin) # ISIN kodu
|
|
196
|
+
print(hisse.info["sector"]) # Sektör
|
|
197
|
+
print(hisse.info["industry"]) # Alt sektör
|
|
198
|
+
print(hisse.info["website"]) # Web sitesi
|
|
199
|
+
print(hisse.info["longBusinessSummary"]) # Faaliyet konusu
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Tickers ve download (Çoklu Hisse)
|
|
205
|
+
|
|
206
|
+
Birden fazla hisse için toplu veri çekme.
|
|
207
|
+
|
|
208
|
+
### Tickers Sınıfı
|
|
209
|
+
|
|
210
|
+
```python
|
|
211
|
+
import borsapy as bp
|
|
212
|
+
|
|
213
|
+
# Birden fazla hisse
|
|
214
|
+
hisseler = bp.Tickers(["THYAO", "GARAN", "AKBNK"])
|
|
215
|
+
|
|
216
|
+
# Her hissenin bilgilerine erişim
|
|
217
|
+
for sembol in hisseler.symbols:
|
|
218
|
+
ticker = hisseler.tickers[sembol]
|
|
219
|
+
print(f"{sembol}: {ticker.info['last']}")
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### download Fonksiyonu
|
|
223
|
+
|
|
224
|
+
```python
|
|
225
|
+
# Basit kullanım
|
|
226
|
+
df = bp.download(["THYAO", "GARAN", "AKBNK"], period="1ay")
|
|
227
|
+
|
|
228
|
+
# Ticker bazlı gruplama
|
|
229
|
+
df = bp.download(["THYAO", "GARAN"], period="1ay", group_by="ticker")
|
|
230
|
+
|
|
231
|
+
# Sütun bazlı gruplama (varsayılan)
|
|
232
|
+
df = bp.download(["THYAO", "GARAN"], period="1ay", group_by="column")
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Index (Endeksler)
|
|
238
|
+
|
|
239
|
+
BIST endekslerine erişim - 79 endeks, bileşen listeleri dahil.
|
|
240
|
+
|
|
241
|
+
### Temel Kullanım
|
|
242
|
+
|
|
243
|
+
```python
|
|
244
|
+
import borsapy as bp
|
|
245
|
+
|
|
246
|
+
# Mevcut endeksler (33 popüler endeks)
|
|
247
|
+
print(bp.indices())
|
|
248
|
+
# ['XU100', 'XU050', 'XU030', 'XKTUM', 'XK100', 'XK030', 'XBANK', ...]
|
|
249
|
+
|
|
250
|
+
# Detaylı liste (bileşen sayısı ile)
|
|
251
|
+
print(bp.indices(detailed=True))
|
|
252
|
+
# [{'symbol': 'XU100', 'name': 'BIST 100', 'count': 100}, ...]
|
|
253
|
+
|
|
254
|
+
# Tüm BIST endeksleri (79 endeks)
|
|
255
|
+
print(bp.all_indices())
|
|
256
|
+
# [{'symbol': 'X030C', 'name': 'BIST 30 Capped', 'count': 30}, ...]
|
|
257
|
+
|
|
258
|
+
# Endeks verisi
|
|
259
|
+
xu100 = bp.Index("XU100")
|
|
260
|
+
print(xu100.info) # Güncel değer, değişim
|
|
261
|
+
print(xu100.history(period="1ay")) # OHLCV geçmişi
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Endeks Bileşenleri
|
|
265
|
+
|
|
266
|
+
```python
|
|
267
|
+
# Endeks içindeki hisseler
|
|
268
|
+
xu030 = bp.Index("XU030")
|
|
269
|
+
print(xu030.components) # [{'symbol': 'AKBNK', 'name': 'AKBANK'}, ...]
|
|
270
|
+
print(xu030.component_symbols) # ['AKBNK', 'ASELS', 'BIMAS', ...]
|
|
271
|
+
print(len(xu030.components)) # 30
|
|
272
|
+
|
|
273
|
+
# Katılım endeksleri
|
|
274
|
+
xk030 = bp.Index("XK030") # BIST Katılım 30
|
|
275
|
+
print(xk030.components) # Faizsiz finans uyumlu 30 hisse
|
|
276
|
+
print(xk030.component_symbols)
|
|
277
|
+
|
|
278
|
+
xktum = bp.Index("XKTUM") # BIST Katılım Tüm
|
|
279
|
+
print(len(xktum.components)) # 218 hisse
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Desteklenen Endeksler
|
|
283
|
+
|
|
284
|
+
| Kategori | Endeksler |
|
|
285
|
+
|----------|-----------|
|
|
286
|
+
| Ana | XU100, XU050, XU030, XUTUM |
|
|
287
|
+
| Katılım | XKTUM, XK100, XK050, XK030, XKTMT |
|
|
288
|
+
| Sektör | XBANK, XUSIN, XUMAL, XUTEK, XGIDA, XHOLD, ... |
|
|
289
|
+
| Tematik | XSRDK, XKURY, XYLDZ, XSPOR, XGMYO, ... |
|
|
290
|
+
| Şehir | XSIST, XSANK, XSIZM, XSBUR, ... |
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## FX (Döviz ve Emtia)
|
|
295
|
+
|
|
296
|
+
Döviz kurları ve emtia fiyatları. **65 döviz** desteği.
|
|
297
|
+
|
|
298
|
+
### Döviz Kurları
|
|
299
|
+
|
|
300
|
+
```python
|
|
301
|
+
import borsapy as bp
|
|
302
|
+
|
|
303
|
+
usd = bp.FX("USD")
|
|
304
|
+
print(usd.current) # Güncel kur
|
|
305
|
+
print(usd.history(period="1ay")) # Geçmiş veriler
|
|
306
|
+
|
|
307
|
+
# Majör dövizler
|
|
308
|
+
eur = bp.FX("EUR")
|
|
309
|
+
gbp = bp.FX("GBP")
|
|
310
|
+
chf = bp.FX("CHF")
|
|
311
|
+
jpy = bp.FX("JPY")
|
|
312
|
+
cad = bp.FX("CAD")
|
|
313
|
+
aud = bp.FX("AUD")
|
|
314
|
+
|
|
315
|
+
# Diğer dövizler (65 döviz destekleniyor)
|
|
316
|
+
rub = bp.FX("RUB") # Rus Rublesi
|
|
317
|
+
cny = bp.FX("CNY") # Çin Yuanı
|
|
318
|
+
sar = bp.FX("SAR") # Suudi Riyali
|
|
319
|
+
aed = bp.FX("AED") # BAE Dirhemi
|
|
320
|
+
inr = bp.FX("INR") # Hindistan Rupisi
|
|
321
|
+
# ... ve daha fazlası
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Desteklenen Dövizler
|
|
325
|
+
|
|
326
|
+
| Kategori | Dövizler |
|
|
327
|
+
|----------|----------|
|
|
328
|
+
| Majör | USD, EUR, GBP, CHF, JPY, CAD, AUD, NZD |
|
|
329
|
+
| Avrupa | DKK, SEK, NOK, PLN, CZK, HUF, RON, BGN, HRK, RSD, BAM, MKD, ALL, MDL, UAH, BYR, ISK |
|
|
330
|
+
| Ortadoğu & Afrika | AED, SAR, QAR, KWD, BHD, OMR, JOD, IQD, IRR, LBP, SYP, EGP, LYD, TND, DZD, MAD, ZAR, ILS |
|
|
331
|
+
| Asya & Pasifik | CNY, INR, PKR, LKR, IDR, MYR, THB, PHP, KRW, KZT, AZN, GEL, SGD, HKD, TWD |
|
|
332
|
+
| Amerika | MXN, BRL, ARS, CLP, COP, PEN, UYU, CRC |
|
|
333
|
+
| Diğer | RUB, DVZSP1 (Sepet Kur) |
|
|
334
|
+
|
|
335
|
+
### Banka Kurları
|
|
336
|
+
|
|
337
|
+
```python
|
|
338
|
+
import borsapy as bp
|
|
339
|
+
|
|
340
|
+
usd = bp.FX("USD")
|
|
341
|
+
|
|
342
|
+
# Tüm bankaların kurları
|
|
343
|
+
print(usd.bank_rates) # DataFrame: bank, buying, selling, updated
|
|
344
|
+
# bank buying selling updated
|
|
345
|
+
# 0 Akbank 34.85 35.15 2024-01-15 10:30:00
|
|
346
|
+
# 1 Garanti 34.82 35.12 2024-01-15 10:28:00
|
|
347
|
+
# ...
|
|
348
|
+
|
|
349
|
+
# Tek banka kuru
|
|
350
|
+
print(usd.bank_rate("akbank")) # {'buying': 34.85, 'selling': 35.15, ...}
|
|
351
|
+
print(usd.bank_rate("garanti"))
|
|
352
|
+
|
|
353
|
+
# Desteklenen bankalar
|
|
354
|
+
print(bp.banks()) # ['akbank', 'garanti', 'isbank', ...]
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Altın ve Emtialar
|
|
358
|
+
|
|
359
|
+
```python
|
|
360
|
+
# Altın (TRY)
|
|
361
|
+
gram_altin = bp.FX("gram-altin")
|
|
362
|
+
ceyrek = bp.FX("ceyrek-altin")
|
|
363
|
+
yarim = bp.FX("yarim-altin")
|
|
364
|
+
tam = bp.FX("tam-altin")
|
|
365
|
+
cumhuriyet = bp.FX("cumhuriyet-altin")
|
|
366
|
+
ata = bp.FX("ata-altin")
|
|
367
|
+
|
|
368
|
+
# Diğer değerli metaller (TRY)
|
|
369
|
+
gumus = bp.FX("gram-gumus")
|
|
370
|
+
ons_altin = bp.FX("ons-altin")
|
|
371
|
+
platin = bp.FX("gram-platin")
|
|
372
|
+
|
|
373
|
+
# Emtia (USD)
|
|
374
|
+
brent = bp.FX("BRENT") # Brent Petrol
|
|
375
|
+
silver = bp.FX("XAG-USD") # Gümüş Ons
|
|
376
|
+
platinum = bp.FX("XPT-USD") # Platin Spot
|
|
377
|
+
palladium = bp.FX("XPD-USD") # Paladyum Spot
|
|
378
|
+
|
|
379
|
+
print(gram_altin.current)
|
|
380
|
+
print(gram_altin.history(period="1ay"))
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Kurum Fiyatları (Kuyumcu/Banka)
|
|
384
|
+
|
|
385
|
+
```python
|
|
386
|
+
# Değerli metal kurum fiyatları
|
|
387
|
+
gold = bp.FX("gram-altin")
|
|
388
|
+
|
|
389
|
+
# Tüm kurumların fiyatları
|
|
390
|
+
print(gold.institution_rates)
|
|
391
|
+
# institution institution_name asset buy sell spread
|
|
392
|
+
# 0 altinkaynak Altınkaynak gram-altin 6315.00 6340.00 0.40
|
|
393
|
+
# 1 akbank Akbank gram-altin 6310.00 6330.00 0.32
|
|
394
|
+
|
|
395
|
+
# Tek kurum fiyatı
|
|
396
|
+
print(gold.institution_rate("kapalicarsi"))
|
|
397
|
+
print(gold.institution_rate("akbank"))
|
|
398
|
+
|
|
399
|
+
# Desteklenen emtialar
|
|
400
|
+
print(bp.metal_institutions())
|
|
401
|
+
# ['gram-altin', 'gram-gumus', 'ons-altin', 'gram-platin']
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Kurum Bazlı Geçmiş (Metal + Döviz)
|
|
405
|
+
|
|
406
|
+
```python
|
|
407
|
+
# Metal geçmişi
|
|
408
|
+
gold = bp.FX("gram-altin")
|
|
409
|
+
gold.institution_history("akbank", period="1mo") # Akbank 1 aylık
|
|
410
|
+
gold.institution_history("kapalicarsi", period="3mo") # Kapalıçarşı 3 aylık
|
|
411
|
+
|
|
412
|
+
# Döviz geçmişi
|
|
413
|
+
usd = bp.FX("USD")
|
|
414
|
+
usd.institution_history("akbank", period="1mo") # Akbank USD 1 aylık
|
|
415
|
+
usd.institution_history("garanti-bbva", period="5d") # Garanti 5 günlük
|
|
416
|
+
|
|
417
|
+
# 27 kurum destekleniyor (bankalar + kuyumcular)
|
|
418
|
+
# Kuyumcular (kapalicarsi, harem, altinkaynak) OHLC verir
|
|
419
|
+
# Bankalar (akbank, garanti) sadece Close verir
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Crypto (Kripto Para)
|
|
425
|
+
|
|
426
|
+
BtcTurk üzerinden kripto para verileri.
|
|
427
|
+
|
|
428
|
+
```python
|
|
429
|
+
import borsapy as bp
|
|
430
|
+
|
|
431
|
+
# Mevcut çiftler
|
|
432
|
+
print(bp.crypto_pairs())
|
|
433
|
+
|
|
434
|
+
# Bitcoin/TRY
|
|
435
|
+
btc = bp.Crypto("BTCTRY")
|
|
436
|
+
print(btc.current) # Güncel fiyat
|
|
437
|
+
print(btc.history(period="1ay")) # OHLCV geçmişi
|
|
438
|
+
|
|
439
|
+
# Ethereum/TRY
|
|
440
|
+
eth = bp.Crypto("ETHTRY")
|
|
441
|
+
print(eth.current)
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## Fund (Yatırım Fonları)
|
|
447
|
+
|
|
448
|
+
TEFAS üzerinden yatırım fonu verileri.
|
|
449
|
+
|
|
450
|
+
### Temel Kullanım
|
|
451
|
+
|
|
452
|
+
```python
|
|
453
|
+
import borsapy as bp
|
|
454
|
+
|
|
455
|
+
# Fon arama
|
|
456
|
+
print(bp.search_funds("banka"))
|
|
457
|
+
|
|
458
|
+
# Fon verisi
|
|
459
|
+
fon = bp.Fund("AAK")
|
|
460
|
+
print(fon.info) # Fon bilgileri
|
|
461
|
+
print(fon.history(period="1ay")) # Fiyat geçmişi
|
|
462
|
+
print(fon.performance) # Performans verileri
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Varlık Dağılımı
|
|
466
|
+
|
|
467
|
+
```python
|
|
468
|
+
# Portföy varlık dağılımı
|
|
469
|
+
print(fon.allocation) # Son 7 günlük dağılım
|
|
470
|
+
print(fon.allocation_history(period="3ay")) # Son 3 ay (max ~100 gün)
|
|
471
|
+
# date asset_type asset_name weight
|
|
472
|
+
# 0 2024-01-15 Hisse Senedi Stocks 45.2
|
|
473
|
+
# 1 2024-01-15 Ters-Repo Reverse Repo 30.1
|
|
474
|
+
# ...
|
|
475
|
+
|
|
476
|
+
# info içinde de mevcut (ekstra API çağrısı yok)
|
|
477
|
+
print(fon.info['allocation'])
|
|
478
|
+
print(fon.info['isin']) # ISIN kodu
|
|
479
|
+
print(fon.info['daily_return']) # Günlük getiri
|
|
480
|
+
print(fon.info['weekly_return']) # Haftalık getiri
|
|
481
|
+
print(fon.info['category_rank']) # Kategori sırası (örn: 20/181)
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### Fon Tarama
|
|
485
|
+
|
|
486
|
+
```python
|
|
487
|
+
# Getiri kriterlerine göre filtrele
|
|
488
|
+
df = bp.screen_funds(fund_type="YAT", min_return_1y=50) # >%50 1Y getiri
|
|
489
|
+
df = bp.screen_funds(fund_type="EMK", min_return_ytd=20) # Emeklilik fonları
|
|
490
|
+
df = bp.screen_funds(min_return_1m=5) # Son 1 ayda >%5
|
|
491
|
+
|
|
492
|
+
# Fon tipleri: YAT (yatırım), EMK (emeklilik), None (tümü)
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Fon Karşılaştırma
|
|
496
|
+
|
|
497
|
+
```python
|
|
498
|
+
# Birden fazla fonu karşılaştır (max 10)
|
|
499
|
+
result = bp.compare_funds(["AAK", "TTE", "AFO"])
|
|
500
|
+
|
|
501
|
+
print(result['funds']) # Fon detayları listesi
|
|
502
|
+
print(result['rankings']) # Sıralamalar
|
|
503
|
+
# by_return_1y: ['AFO', 'TTE', 'AAK']
|
|
504
|
+
# by_size: ['AFO', 'TTE', 'AAK']
|
|
505
|
+
# by_risk_asc: ['AAK', 'TTE', 'AFO']
|
|
506
|
+
|
|
507
|
+
print(result['summary']) # Özet
|
|
508
|
+
# fund_count: 3
|
|
509
|
+
# total_size: 23554985554.72
|
|
510
|
+
# avg_return_1y: 53.65
|
|
511
|
+
# best_return_1y: 100.84
|
|
512
|
+
# worst_return_1y: 28.15
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
### Risk Metrikleri
|
|
516
|
+
|
|
517
|
+
```python
|
|
518
|
+
fon = bp.Fund("YAY")
|
|
519
|
+
|
|
520
|
+
# Sharpe oranı (10Y tahvil faizi ile)
|
|
521
|
+
print(fon.sharpe_ratio()) # 1Y Sharpe
|
|
522
|
+
print(fon.sharpe_ratio(period="3y")) # 3Y Sharpe
|
|
523
|
+
|
|
524
|
+
# Tüm risk metrikleri
|
|
525
|
+
metrics = fon.risk_metrics(period="1y")
|
|
526
|
+
print(metrics['annualized_return']) # Yıllık getiri (%)
|
|
527
|
+
print(metrics['annualized_volatility']) # Yıllık volatilite (%)
|
|
528
|
+
print(metrics['sharpe_ratio']) # Sharpe oranı
|
|
529
|
+
print(metrics['sortino_ratio']) # Sortino oranı (downside risk)
|
|
530
|
+
print(metrics['max_drawdown']) # Maksimum düşüş (%)
|
|
531
|
+
|
|
532
|
+
# Uzun dönem desteği
|
|
533
|
+
fon.history(period="3y") # 3 yıllık veri
|
|
534
|
+
fon.history(period="5y") # 5 yıllık veri
|
|
535
|
+
fon.history(period="max") # Tüm veri (5 yıla kadar)
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
## Inflation (Enflasyon)
|
|
541
|
+
|
|
542
|
+
TCMB enflasyon verileri.
|
|
543
|
+
|
|
544
|
+
```python
|
|
545
|
+
import borsapy as bp
|
|
546
|
+
|
|
547
|
+
enf = bp.Inflation()
|
|
548
|
+
|
|
549
|
+
# Son TÜFE verileri (Tüketici Fiyat Endeksi)
|
|
550
|
+
print(enf.latest())
|
|
551
|
+
print(enf.tufe()) # TÜFE geçmişi
|
|
552
|
+
|
|
553
|
+
# ÜFE verileri (Üretici Fiyat Endeksi)
|
|
554
|
+
print(enf.ufe())
|
|
555
|
+
|
|
556
|
+
# Enflasyon hesaplayıcı
|
|
557
|
+
# 100.000 TL'nin 2020-01'den 2024-01'e değeri
|
|
558
|
+
sonuc = enf.calculate(100000, "2020-01", "2024-01")
|
|
559
|
+
print(sonuc)
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
---
|
|
563
|
+
|
|
564
|
+
## VIOP (Vadeli İşlem ve Opsiyon)
|
|
565
|
+
|
|
566
|
+
İş Yatırım üzerinden vadeli işlem ve opsiyon verileri.
|
|
567
|
+
|
|
568
|
+
```python
|
|
569
|
+
import borsapy as bp
|
|
570
|
+
|
|
571
|
+
viop = bp.VIOP()
|
|
572
|
+
|
|
573
|
+
# Tüm vadeli işlem kontratları
|
|
574
|
+
print(viop.futures)
|
|
575
|
+
|
|
576
|
+
# Tüm opsiyonlar
|
|
577
|
+
print(viop.options)
|
|
578
|
+
|
|
579
|
+
# Vadeli işlem alt kategorileri
|
|
580
|
+
print(viop.stock_futures) # Pay vadeli
|
|
581
|
+
print(viop.index_futures) # Endeks vadeli
|
|
582
|
+
print(viop.currency_futures) # Döviz vadeli
|
|
583
|
+
print(viop.commodity_futures) # Emtia vadeli
|
|
584
|
+
|
|
585
|
+
# Opsiyon alt kategorileri
|
|
586
|
+
print(viop.stock_options) # Pay opsiyonları
|
|
587
|
+
print(viop.index_options) # Endeks opsiyonları
|
|
588
|
+
|
|
589
|
+
# Sembol bazlı arama
|
|
590
|
+
print(viop.get_by_symbol("THYAO")) # THYAO'nun tüm türevleri
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
## Bond (Tahvil/Bono)
|
|
596
|
+
|
|
597
|
+
Türk devlet tahvili faiz oranları.
|
|
598
|
+
|
|
599
|
+
```python
|
|
600
|
+
import borsapy as bp
|
|
601
|
+
|
|
602
|
+
# Tüm tahvil faizleri
|
|
603
|
+
print(bp.bonds())
|
|
604
|
+
# name maturity yield change change_pct
|
|
605
|
+
# 0 2 Yıllık Tahvil 2Y 26.42 0.40 1.54
|
|
606
|
+
# 1 5 Yıllık Tahvil 5Y 27.15 0.35 1.31
|
|
607
|
+
# 2 10 Yıllık Tahvil 10Y 28.03 0.42 1.52
|
|
608
|
+
|
|
609
|
+
# Tek tahvil
|
|
610
|
+
bond = bp.Bond("10Y") # 2Y, 5Y, 10Y
|
|
611
|
+
print(bond.yield_rate) # Faiz oranı (örn: 28.03)
|
|
612
|
+
print(bond.yield_decimal) # Ondalık (örn: 0.2803)
|
|
613
|
+
print(bond.change_pct) # Günlük değişim (%)
|
|
614
|
+
print(bond.info) # Tüm bilgiler
|
|
615
|
+
|
|
616
|
+
# Risk-free rate (DCF hesaplamaları için)
|
|
617
|
+
rfr = bp.risk_free_rate() # 10Y faiz oranı (ondalık)
|
|
618
|
+
print(rfr) # 0.2803
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
## EconomicCalendar (Ekonomik Takvim)
|
|
624
|
+
|
|
625
|
+
Ekonomik olaylar ve göstergeler.
|
|
626
|
+
|
|
627
|
+
```python
|
|
628
|
+
import borsapy as bp
|
|
629
|
+
|
|
630
|
+
cal = bp.EconomicCalendar()
|
|
631
|
+
|
|
632
|
+
# Bu haftanın olayları
|
|
633
|
+
df = cal.events(period="1w")
|
|
634
|
+
# Date Time Country Importance Event Actual Forecast Previous
|
|
635
|
+
# 0 2024-01-15 10:00 Türkiye high İşsizlik Oranı (Kas) 9.2% 9.3% 9.1%
|
|
636
|
+
# 1 2024-01-16 14:30 ABD high Perakende Satışlar (Ara) 0.6% 0.4% 0.3%
|
|
637
|
+
|
|
638
|
+
# Filtreleme
|
|
639
|
+
df = cal.events(period="1ay", country="TR") # Sadece Türkiye
|
|
640
|
+
df = cal.events(period="1w", importance="high") # Sadece önemli
|
|
641
|
+
df = cal.events(country="TR", importance="high") # TR + önemli
|
|
642
|
+
|
|
643
|
+
# Kısayollar
|
|
644
|
+
df = cal.today() # Bugünkü olaylar
|
|
645
|
+
df = cal.this_week() # Bu hafta
|
|
646
|
+
df = cal.this_month() # Bu ay
|
|
647
|
+
|
|
648
|
+
# Fonksiyon olarak
|
|
649
|
+
df = bp.economic_calendar(period="1w", country="TR")
|
|
650
|
+
|
|
651
|
+
# Desteklenen ülkeler
|
|
652
|
+
# TR (Türkiye), US (ABD), EU (Euro Bölgesi), DE (Almanya),
|
|
653
|
+
# GB (İngiltere), JP (Japonya), CN (Çin)
|
|
654
|
+
|
|
655
|
+
# Önem seviyeleri: high, medium, low
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
---
|
|
659
|
+
|
|
660
|
+
## Screener (Hisse Tarama)
|
|
661
|
+
|
|
662
|
+
BIST hisselerini 40+ kritere göre filtreleme (İş Yatırım API).
|
|
663
|
+
|
|
664
|
+
### Hızlı Başlangıç
|
|
665
|
+
|
|
666
|
+
```python
|
|
667
|
+
import borsapy as bp
|
|
668
|
+
|
|
669
|
+
# Hazır şablonlar
|
|
670
|
+
df = bp.screen_stocks(template="high_dividend") # Temettü verimi > %2
|
|
671
|
+
df = bp.screen_stocks(template="low_pe") # F/K < 10
|
|
672
|
+
df = bp.screen_stocks(template="high_roe") # ROE > %15
|
|
673
|
+
df = bp.screen_stocks(template="high_upside") # Getiri potansiyeli > 0
|
|
674
|
+
|
|
675
|
+
# Doğrudan filtreler
|
|
676
|
+
df = bp.screen_stocks(pe_max=10) # F/K en fazla 10
|
|
677
|
+
df = bp.screen_stocks(dividend_yield_min=3) # Temettü verimi min %3
|
|
678
|
+
df = bp.screen_stocks(roe_min=20, pb_max=2) # ROE > %20, PD/DD < 2
|
|
679
|
+
|
|
680
|
+
# Sektör/endeks ile kombine
|
|
681
|
+
df = bp.screen_stocks(sector="Bankacılık", dividend_yield_min=3)
|
|
682
|
+
df = bp.screen_stocks(sector="Holding", pe_max=8)
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
### Mevcut Şablonlar
|
|
686
|
+
|
|
687
|
+
| Şablon | Açıklama | Kriter |
|
|
688
|
+
|--------|----------|--------|
|
|
689
|
+
| `small_cap` | Küçük şirketler | Piyasa değeri < ~43B TL |
|
|
690
|
+
| `mid_cap` | Orta boy şirketler | Piyasa değeri 43B-215B TL |
|
|
691
|
+
| `large_cap` | Büyük şirketler | Piyasa değeri > 215B TL |
|
|
692
|
+
| `high_dividend` | Yüksek temettü | Temettü verimi > %2 |
|
|
693
|
+
| `low_pe` | Düşük F/K | F/K < 10 |
|
|
694
|
+
| `high_roe` | Yüksek ROE | ROE > %15 |
|
|
695
|
+
| `high_upside` | Pozitif potansiyel | Getiri potansiyeli > 0 |
|
|
696
|
+
| `low_upside` | Negatif potansiyel | Getiri potansiyeli < 0 |
|
|
697
|
+
| `high_volume` | Yüksek hacim | 3 aylık hacim > $1M |
|
|
698
|
+
| `low_volume` | Düşük hacim | 3 aylık hacim < $0.5M |
|
|
699
|
+
| `high_net_margin` | Yüksek kar marjı | Net kar marjı > %10 |
|
|
700
|
+
| `high_return` | Haftalık artış | 1 hafta getiri > 0 |
|
|
701
|
+
| `high_foreign_ownership` | Yüksek yabancı oranı | Yabancı oranı > %30 |
|
|
702
|
+
| `buy_recommendation` | AL tavsiyesi | Analist tavsiyesi: AL |
|
|
703
|
+
| `sell_recommendation` | SAT tavsiyesi | Analist tavsiyesi: SAT |
|
|
704
|
+
|
|
705
|
+
### Fluent API (Gelişmiş Kullanım)
|
|
706
|
+
|
|
707
|
+
```python
|
|
708
|
+
screener = bp.Screener()
|
|
709
|
+
|
|
710
|
+
# Değerleme filtreleri
|
|
711
|
+
screener.add_filter("pe", max=15) # F/K < 15
|
|
712
|
+
screener.add_filter("pb", max=2) # PD/DD < 2
|
|
713
|
+
screener.add_filter("ev_ebitda", max=8) # FD/FAVÖK < 8
|
|
714
|
+
|
|
715
|
+
# Temettü filtresi
|
|
716
|
+
screener.add_filter("dividend_yield", min=3) # Temettü verimi > %3
|
|
717
|
+
|
|
718
|
+
# Karlılık filtreleri
|
|
719
|
+
screener.add_filter("roe", min=15) # ROE > %15
|
|
720
|
+
screener.add_filter("net_margin", min=10) # Net kar marjı > %10
|
|
721
|
+
|
|
722
|
+
# Piyasa değeri (TL, milyon)
|
|
723
|
+
screener.add_filter("market_cap", min=10000) # > 10 milyar TL
|
|
724
|
+
|
|
725
|
+
# Getiri filtreleri
|
|
726
|
+
screener.add_filter("return_1w", min=0) # Haftalık getiri pozitif
|
|
727
|
+
screener.add_filter("return_1m", min=5) # Aylık getiri > %5
|
|
728
|
+
|
|
729
|
+
# Sektör/endeks/tavsiye
|
|
730
|
+
screener.set_sector("Bankacılık")
|
|
731
|
+
screener.set_index("BIST 100")
|
|
732
|
+
screener.set_recommendation("AL") # AL, TUT, SAT
|
|
733
|
+
|
|
734
|
+
results = screener.run()
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
### Tüm Filtre Kriterleri
|
|
738
|
+
|
|
739
|
+
#### Fiyat ve Piyasa Değeri
|
|
740
|
+
| Kriter | Açıklama |
|
|
741
|
+
|--------|----------|
|
|
742
|
+
| `price` | Kapanış fiyatı (TL) |
|
|
743
|
+
| `market_cap` | Piyasa değeri (mn TL) |
|
|
744
|
+
| `market_cap_usd` | Piyasa değeri (mn $) |
|
|
745
|
+
| `float_ratio` | Halka açıklık oranı (%) |
|
|
746
|
+
| `float_market_cap` | Halka açık piyasa değeri (mn $) |
|
|
747
|
+
|
|
748
|
+
#### Değerleme Çarpanları
|
|
749
|
+
| Kriter | Açıklama |
|
|
750
|
+
|--------|----------|
|
|
751
|
+
| `pe` | Cari F/K (Fiyat/Kazanç) |
|
|
752
|
+
| `pb` | Cari PD/DD (Piyasa Değeri/Defter Değeri) |
|
|
753
|
+
| `ev_ebitda` | Cari FD/FAVÖK |
|
|
754
|
+
| `ev_sales` | Cari FD/Satışlar |
|
|
755
|
+
| `pe_2025` | 2025 tahmini F/K |
|
|
756
|
+
| `pb_2025` | 2025 tahmini PD/DD |
|
|
757
|
+
| `ev_ebitda_2025` | 2025 tahmini FD/FAVÖK |
|
|
758
|
+
| `pe_hist_avg` | Tarihsel ortalama F/K |
|
|
759
|
+
| `pb_hist_avg` | Tarihsel ortalama PD/DD |
|
|
760
|
+
|
|
761
|
+
#### Temettü
|
|
762
|
+
| Kriter | Açıklama |
|
|
763
|
+
|--------|----------|
|
|
764
|
+
| `dividend_yield` | 2024 temettü verimi (%) |
|
|
765
|
+
| `dividend_yield_2025` | 2025 tahmini temettü verimi (%) |
|
|
766
|
+
| `dividend_yield_5y_avg` | 5 yıllık ortalama temettü verimi (%) |
|
|
767
|
+
|
|
768
|
+
#### Karlılık
|
|
769
|
+
| Kriter | Açıklama |
|
|
770
|
+
|--------|----------|
|
|
771
|
+
| `roe` | Cari ROE (%) |
|
|
772
|
+
| `roa` | Cari ROA (%) |
|
|
773
|
+
| `net_margin` | 2025 net kar marjı (%) |
|
|
774
|
+
| `ebitda_margin` | 2025 FAVÖK marjı (%) |
|
|
775
|
+
| `roe_2025` | 2025 tahmini ROE |
|
|
776
|
+
| `roa_2025` | 2025 tahmini ROA |
|
|
777
|
+
|
|
778
|
+
#### Getiri (Relatif - Endekse Göre)
|
|
779
|
+
| Kriter | Açıklama |
|
|
780
|
+
|--------|----------|
|
|
781
|
+
| `return_1d` | 1 gün relatif getiri (%) |
|
|
782
|
+
| `return_1w` | 1 hafta relatif getiri (%) |
|
|
783
|
+
| `return_1m` | 1 ay relatif getiri (%) |
|
|
784
|
+
| `return_1y` | 1 yıl relatif getiri (%) |
|
|
785
|
+
| `return_ytd` | Yıl başından beri relatif getiri (%) |
|
|
786
|
+
|
|
787
|
+
#### Getiri (TL Bazlı)
|
|
788
|
+
| Kriter | Açıklama |
|
|
789
|
+
|--------|----------|
|
|
790
|
+
| `return_1d_tl` | 1 gün TL getiri (%) |
|
|
791
|
+
| `return_1w_tl` | 1 hafta TL getiri (%) |
|
|
792
|
+
| `return_1m_tl` | 1 ay TL getiri (%) |
|
|
793
|
+
| `return_1y_tl` | 1 yıl TL getiri (%) |
|
|
794
|
+
| `return_ytd_tl` | Yıl başından beri TL getiri (%) |
|
|
795
|
+
|
|
796
|
+
#### Hacim ve Likidite
|
|
797
|
+
| Kriter | Açıklama |
|
|
798
|
+
|--------|----------|
|
|
799
|
+
| `volume_3m` | 3 aylık ortalama hacim (mn $) |
|
|
800
|
+
| `volume_12m` | 12 aylık ortalama hacim (mn $) |
|
|
801
|
+
|
|
802
|
+
#### Yabancı ve Hedef Fiyat
|
|
803
|
+
| Kriter | Açıklama |
|
|
804
|
+
|--------|----------|
|
|
805
|
+
| `foreign_ratio` | Yabancı oranı (%) |
|
|
806
|
+
| `foreign_ratio_1w_change` | Yabancı oranı 1 haftalık değişim (baz puan) |
|
|
807
|
+
| `foreign_ratio_1m_change` | Yabancı oranı 1 aylık değişim (baz puan) |
|
|
808
|
+
| `target_price` | Hedef fiyat (TL) |
|
|
809
|
+
| `upside_potential` | Getiri potansiyeli (%) |
|
|
810
|
+
|
|
811
|
+
#### Endeks Ağırlıkları
|
|
812
|
+
| Kriter | Açıklama |
|
|
813
|
+
|--------|----------|
|
|
814
|
+
| `bist100_weight` | BIST 100 endeks ağırlığı |
|
|
815
|
+
| `bist50_weight` | BIST 50 endeks ağırlığı |
|
|
816
|
+
| `bist30_weight` | BIST 30 endeks ağırlığı |
|
|
817
|
+
|
|
818
|
+
### Örnek Stratejiler
|
|
819
|
+
|
|
820
|
+
```python
|
|
821
|
+
import borsapy as bp
|
|
822
|
+
|
|
823
|
+
# Değer Yatırımı: Düşük çarpanlar, yüksek temettü
|
|
824
|
+
screener = bp.Screener()
|
|
825
|
+
screener.add_filter("pe", max=10)
|
|
826
|
+
screener.add_filter("pb", max=1.5)
|
|
827
|
+
screener.add_filter("dividend_yield", min=4)
|
|
828
|
+
value_stocks = screener.run()
|
|
829
|
+
|
|
830
|
+
# Büyüme Yatırımı: Yüksek ROE, pozitif momentum
|
|
831
|
+
screener = bp.Screener()
|
|
832
|
+
screener.add_filter("roe", min=20)
|
|
833
|
+
screener.add_filter("return_1m", min=0)
|
|
834
|
+
screener.add_filter("market_cap", min=50000) # Büyük şirketler (>50B TL)
|
|
835
|
+
growth_stocks = screener.run()
|
|
836
|
+
|
|
837
|
+
# Temettü Avcısı: Banka hisseleri, yüksek temettü
|
|
838
|
+
df = bp.screen_stocks(
|
|
839
|
+
sector="Bankacılık",
|
|
840
|
+
dividend_yield_min=5,
|
|
841
|
+
pe_max=6
|
|
842
|
+
)
|
|
843
|
+
|
|
844
|
+
# Yabancı Takibi: Yabancıların ilgi gösterdiği hisseler
|
|
845
|
+
screener = bp.Screener()
|
|
846
|
+
screener.add_filter("foreign_ratio", min=40)
|
|
847
|
+
screener.add_filter("foreign_ratio_1m_change", min=1) # Son 1 ayda artan
|
|
848
|
+
foreign_favorites = screener.run()
|
|
849
|
+
|
|
850
|
+
# Analist Favorileri: AL tavsiyeli, yüksek potansiyel
|
|
851
|
+
df = bp.screen_stocks(
|
|
852
|
+
template="buy_recommendation",
|
|
853
|
+
upside_potential_min=20
|
|
854
|
+
)
|
|
855
|
+
```
|
|
856
|
+
|
|
857
|
+
### Yardımcı Fonksiyonlar
|
|
858
|
+
|
|
859
|
+
```python
|
|
860
|
+
# Tüm filtre kriterleri (API'den)
|
|
861
|
+
print(bp.screener_criteria())
|
|
862
|
+
# [{'id': '7', 'name': 'Kapanış (TL)', 'min': '1.1', 'max': '14087.5'}, ...]
|
|
863
|
+
|
|
864
|
+
# Sektör listesi (53 sektör)
|
|
865
|
+
print(bp.sectors())
|
|
866
|
+
# ['Bankacılık', 'Holding ve Yatırım', 'Enerji', 'Gıda', ...]
|
|
867
|
+
|
|
868
|
+
# Endeks listesi
|
|
869
|
+
print(bp.stock_indices())
|
|
870
|
+
# ['BIST 30', 'BIST 50', 'BIST 100', 'BIST BANKA', ...]
|
|
871
|
+
```
|
|
872
|
+
|
|
873
|
+
### Çıktı Formatı
|
|
874
|
+
|
|
875
|
+
```python
|
|
876
|
+
df = bp.screen_stocks(template="high_dividend")
|
|
877
|
+
print(df.columns)
|
|
878
|
+
# Index(['symbol', 'name', 'criteria_7', 'criteria_33', ...], dtype='object')
|
|
879
|
+
#
|
|
880
|
+
# symbol: Hisse kodu (THYAO, GARAN, vb.)
|
|
881
|
+
# name: Şirket adı
|
|
882
|
+
# criteria_X: İlgili kriter değerleri (X = kriter ID)
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
---
|
|
886
|
+
|
|
887
|
+
## Şirket Listesi
|
|
888
|
+
|
|
889
|
+
BIST şirketlerini listeleme ve arama.
|
|
890
|
+
|
|
891
|
+
```python
|
|
892
|
+
import borsapy as bp
|
|
893
|
+
|
|
894
|
+
# Tüm şirketler
|
|
895
|
+
df = bp.companies()
|
|
896
|
+
print(df)
|
|
897
|
+
|
|
898
|
+
# Şirket arama
|
|
899
|
+
sonuc = bp.search_companies("banka")
|
|
900
|
+
print(sonuc)
|
|
901
|
+
```
|
|
902
|
+
|
|
903
|
+
---
|
|
904
|
+
|
|
905
|
+
## Veri Kaynakları
|
|
906
|
+
|
|
907
|
+
| Modül | Kaynak | Açıklama |
|
|
908
|
+
|-------|--------|----------|
|
|
909
|
+
| Ticker | İş Yatırım, Paratic, KAP, hedeffiyat.com.tr, isinturkiye.com.tr | Hisse verileri, finansallar, bildirimler, analist hedefleri, ISIN |
|
|
910
|
+
| Index | Paratic | BIST endeksleri |
|
|
911
|
+
| FX | canlidoviz.com, doviz.com | 65 döviz, altın, emtia (canlidoviz); banka/kurum kurları (doviz.com) |
|
|
912
|
+
| Crypto | BtcTurk | Kripto para verileri |
|
|
913
|
+
| Fund | TEFAS | Yatırım fonu verileri, varlık dağılımı, tarama/karşılaştırma |
|
|
914
|
+
| Inflation | TCMB | Enflasyon verileri |
|
|
915
|
+
| VIOP | İş Yatırım | Vadeli işlem ve opsiyon |
|
|
916
|
+
| Bond | doviz.com | Devlet tahvili faiz oranları (2Y, 5Y, 10Y) |
|
|
917
|
+
| EconomicCalendar | doviz.com | Ekonomik takvim (TR, US, EU, DE, GB, JP, CN) |
|
|
918
|
+
| Screener | İş Yatırım | Hisse tarama (İş Yatırım gelişmiş hisse arama) |
|
|
919
|
+
|
|
920
|
+
---
|
|
921
|
+
|
|
922
|
+
## yfinance ile Karşılaştırma
|
|
923
|
+
|
|
924
|
+
### Ortak Özellikler
|
|
925
|
+
- `Ticker`, `Tickers` sınıfları
|
|
926
|
+
- `download()` fonksiyonu
|
|
927
|
+
- `info`, `history()`, finansal tablolar
|
|
928
|
+
- Temettü, split, kurumsal işlemler
|
|
929
|
+
- Analist hedefleri ve tavsiyeler
|
|
930
|
+
|
|
931
|
+
### borsapy'ye Özgü
|
|
932
|
+
- **FX**: Döviz ve emtia verileri + banka kurları (doviz.com)
|
|
933
|
+
- **Crypto**: Kripto para (BtcTurk)
|
|
934
|
+
- **Fund**: Yatırım fonları + varlık dağılımı + tarama/karşılaştırma (TEFAS)
|
|
935
|
+
- **Inflation**: Enflasyon verileri ve hesaplayıcı (TCMB)
|
|
936
|
+
- **VIOP**: Vadeli işlem ve opsiyon (İş Yatırım)
|
|
937
|
+
- **Bond**: Devlet tahvili faiz oranları + risk_free_rate (doviz.com)
|
|
938
|
+
- **EconomicCalendar**: Ekonomik takvim - 7 ülke desteği (doviz.com)
|
|
939
|
+
- **Screener**: Hisse tarama - 50+ kriter, sektör/endeks filtreleme (İş Yatırım)
|
|
940
|
+
- **KAP Entegrasyonu**: Resmi bildirimler ve takvim
|
|
941
|
+
|
|
942
|
+
---
|
|
943
|
+
|
|
944
|
+
## Katkıda Bulunma
|
|
945
|
+
|
|
946
|
+
Ek özellik istekleri ve öneriler için [GitHub Discussions](https://github.com/saidsurucu/borsapy/discussions) üzerinden tartışma açabilirsiniz.
|
|
947
|
+
|
|
948
|
+
---
|
|
949
|
+
|
|
950
|
+
## Sorumluluk Reddi
|
|
951
|
+
|
|
952
|
+
Bu kütüphane aracılığıyla erişilen veriler, ilgili veri kaynaklarına aittir:
|
|
953
|
+
- **İş Yatırım** (isyatirim.com.tr): Finansal tablolar, hisse tarama, VIOP
|
|
954
|
+
- **Paratic** (paratic.com): Hisse OHLCV, endeksler
|
|
955
|
+
- **KAP** (kap.org.tr): Şirket bildirimleri, ortaklık yapısı
|
|
956
|
+
- **TCMB**: Enflasyon verileri
|
|
957
|
+
- **BtcTurk**: Kripto para verileri
|
|
958
|
+
- **TEFAS** (tefas.gov.tr): Yatırım fonu verileri
|
|
959
|
+
- **doviz.com**: Döviz kurları, banka kurları, ekonomik takvim, tahvil faizleri
|
|
960
|
+
- **hedeffiyat.com.tr**: Analist hedef fiyatları
|
|
961
|
+
- **isinturkiye.com.tr**: ISIN kodları
|
|
962
|
+
|
|
963
|
+
Kütüphane yalnızca kişisel kullanım amacıyla hazırlanmıştır ve veriler ticari amaçlarla kullanılamaz.
|
|
964
|
+
|
|
965
|
+
---
|
|
966
|
+
|
|
967
|
+
## Lisans
|
|
968
|
+
|
|
969
|
+
Apache 2.0
|