Compare commits
100 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1ddc38c04f | ||
|
|
fcab4ea37e | ||
|
|
d40ad6282a | ||
|
|
c95c02fdfc | ||
|
|
5fb9cab817 | ||
|
|
1c39ca4762 | ||
|
|
27868a4677 | ||
|
|
0da75493dc | ||
|
|
14c6d05854 | ||
|
|
8e369a2736 | ||
|
|
e09f77eb06 | ||
|
|
7db798e900 | ||
|
|
3b7758b3ab | ||
|
|
b729bcb1df | ||
|
|
6d7c5b6f4c | ||
|
|
45568fd765 | ||
|
|
fc020d953a | ||
|
|
bc645bb7dd | ||
|
|
74198aeed4 | ||
|
|
890922f68b | ||
|
|
44ef4a73ac | ||
|
|
c745df183a | ||
|
|
0e069dbbff | ||
|
|
25144351a4 | ||
|
|
3dd7e40df2 | ||
|
|
5bbcedfe2e | ||
|
|
fc049e1e0d | ||
|
|
00a44a8132 | ||
|
|
4ec93d90f1 | ||
|
|
1081f1e809 | ||
|
|
fed35b175f | ||
|
|
3f6a46d77d | ||
|
|
dee9a55e43 | ||
|
|
20b3b438e2 | ||
|
|
0be2ce1fd5 | ||
|
|
2d60f9ad2a | ||
|
|
2919ccb732 | ||
|
|
ffa697cea1 | ||
|
|
e3aae8a8ba | ||
|
|
4ded15740e | ||
|
|
506f792772 | ||
|
|
5a342cf8b0 | ||
|
|
52f6462d20 | ||
|
|
508afcae23 | ||
|
|
a9859e2f9f | ||
|
|
d0e59203cc | ||
|
|
b94173bddf | ||
|
|
a928eb45fd | ||
|
|
60c7477a03 | ||
|
|
42d946cee1 | ||
|
|
24958d5442 | ||
|
|
966473f7c7 | ||
|
|
ae7f371ada | ||
|
|
af7806640f | ||
|
|
64b4726c4e | ||
|
|
5adddf3e88 | ||
|
|
5bbe358ad7 | ||
|
|
38c1323313 | ||
|
|
70243657a7 | ||
|
|
e242617237 | ||
|
|
59d0974773 | ||
|
|
5bc3ec01d0 | ||
|
|
3f911745c4 | ||
|
|
f95eef6489 | ||
|
|
3ac85397cb | ||
|
|
873ab0f574 | ||
|
|
f5264649b9 | ||
|
|
90731511ed | ||
|
|
a8f0998ab8 | ||
|
|
02785d61a1 | ||
|
|
0c89fcd8f7 | ||
|
|
e797a30012 | ||
|
|
2167fb380f | ||
|
|
006649d800 | ||
|
|
b1d9f54291 | ||
|
|
d3ec9c63ff | ||
|
|
1d27b56b80 | ||
|
|
fffe89e691 | ||
|
|
a9e70b42c0 | ||
|
|
ce8f8a0b30 | ||
|
|
9f517a77ea | ||
|
|
0a3f9c74bb | ||
|
|
c535c44fd3 | ||
|
|
272b6f6453 | ||
|
|
dfe3ec8df7 | ||
|
|
bc52389135 | ||
|
|
e077a2b50c | ||
|
|
5d8b444281 | ||
|
|
e27b90d875 | ||
|
|
deafc88520 | ||
|
|
c012ceac01 | ||
|
|
13d006827f | ||
|
|
2d5d752b87 | ||
|
|
f05f99c2b8 | ||
|
|
ca7f11bb41 | ||
|
|
4157b9e170 | ||
|
|
0bc22f82bb | ||
|
|
5e942fdec4 | ||
|
|
16072e87df | ||
|
|
6946f99e30 |
18
.github/workflows/ci.yml
vendored
18
.github/workflows/ci.yml
vendored
@@ -1,18 +0,0 @@
|
||||
name: ci
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.x
|
||||
- run: pip install -r requirements.txt
|
||||
- run: pip install mkdocstrings==0.14.0
|
||||
- run: pip install mkdocs-material
|
||||
- run: mkdocs gh-deploy --force
|
||||
43
.github/workflows/deploy_doc.yml
vendored
Normal file
43
.github/workflows/deploy_doc.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: Build and Deploy Sphinx Docs
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev-documented
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install Sphinx==8.0.2 pydata-sphinx-theme==0.15.4 Jinja2==3.1.4 sphinx-copybutton==0.5.2
|
||||
|
||||
- name: Build Sphinx documentation
|
||||
run: |
|
||||
sphinx-build -b html doc/source doc/_build/html -v
|
||||
|
||||
- name: List generated HTML files
|
||||
run: |
|
||||
ls -l -R doc/_build/html
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
uses: peaceiris/actions-gh-pages@v4
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_branch: documentation
|
||||
publish_dir: doc/_build/html
|
||||
destination_dir: docs
|
||||
enable_jekyll: false
|
||||
35
.github/workflows/pytest.yml.disabled
vendored
Normal file
35
.github/workflows/pytest.yml.disabled
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: Pytest
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
- dev
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.12"
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt pytest
|
||||
|
||||
- name: Run non-cache tests
|
||||
run: pytest tests/ --ignore tests/test_cache.py --ignore tests/test_price_repair.py
|
||||
|
||||
- name: Run cache tests
|
||||
run: |
|
||||
pytest tests/test_cache.py::TestCache
|
||||
pytest tests/test_cache.py::TestCacheNoPermission
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -18,3 +18,10 @@ test.ipynb
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
|
||||
# Documentation
|
||||
/doc/build/
|
||||
/doc/_build/
|
||||
/doc/source/reference/api
|
||||
!yfinance.css
|
||||
!/doc/source/development/assets/branches.png
|
||||
@@ -1,6 +1,63 @@
|
||||
Change Log
|
||||
===========
|
||||
|
||||
0.2.53
|
||||
------
|
||||
Fixes:
|
||||
- Fix: Failed to parse holders JSON data #2234
|
||||
- Fix: Bad data in Holders #2244
|
||||
- Stop CSRF-cookie-fetch fail killing yfinance #2249
|
||||
- Fix Market Docs #2250
|
||||
- Fix: Broken "See also" links in documentation #2253
|
||||
- Fix: Interval check and error message formatting in multi.py #2256
|
||||
Improve:
|
||||
- Add pre- / post-stock prices (and other useful information) #2212
|
||||
- Warn user when use download() without specifying auto_adjust #2230
|
||||
- Refactor: Earnings Dates – Switch to API Fetching #2247
|
||||
- Improve prices div repair #2260
|
||||
Maintenance:
|
||||
- Add GitHub Actions workflow and fix failing tests #2233
|
||||
|
||||
0.2.52
|
||||
------
|
||||
Features:
|
||||
- Improve Screener & docs #2207
|
||||
- Add Market summary & status #2175
|
||||
- Support custom period in Ticker.history() #2192
|
||||
- raise YfRateLimitError if rate limited #2108
|
||||
- add more options to Search #2191
|
||||
Fixes:
|
||||
- remove hardcoded keys in Analysis #2194
|
||||
- handle Yahoo changed Search response #2202
|
||||
Maintenance:
|
||||
- add optional dependencies to requirements.txt #2199
|
||||
|
||||
0.2.51
|
||||
------
|
||||
Features:
|
||||
- Screener tweaks #2168
|
||||
- Search #2160
|
||||
- get_news() expose count #2173
|
||||
Fixes:
|
||||
- earnings_dates #2169
|
||||
|
||||
0.2.50
|
||||
------
|
||||
Fixes:
|
||||
- price repair #2111 #2139
|
||||
- download() appearance 2109
|
||||
- isin() error #2099
|
||||
- growth_estimates #2127
|
||||
Also new docs #2132
|
||||
|
||||
0.2.49
|
||||
------
|
||||
Fix prices-clean rarely discarding good data #2122
|
||||
|
||||
0.2.47 and 0.2.48
|
||||
-----------------
|
||||
Add yf.download(multi_level_index)
|
||||
|
||||
0.2.46
|
||||
------
|
||||
Fix regression in 0.2.45 #2094
|
||||
|
||||
325
README.md
325
README.md
@@ -32,328 +32,33 @@ Yahoo! finance API is intended for personal use only.**
|
||||
<a target="new" href="https://github.com/ranaroussi/yfinance"><img border=0 src="https://img.shields.io/github/stars/ranaroussi/yfinance.svg?style=social&label=Star&maxAge=60" alt="Star this repo"></a>
|
||||
<a target="new" href="https://twitter.com/aroussi"><img border=0 src="https://img.shields.io/twitter/follow/aroussi.svg?style=social&label=Follow&maxAge=60" alt="Follow me on twitter"></a>
|
||||
|
||||
**yfinance** offers a Pythonic way to fetch financial & market data from [Yahoo!Ⓡ finance](https://finance.yahoo.com).
|
||||
|
||||
**yfinance** offers a threaded and Pythonic way to download market data from [Yahoo!Ⓡ finance](https://finance.yahoo.com).
|
||||
## Main components
|
||||
|
||||
→ Check out this [Blog post](https://aroussi.com/#post/python-yahoo-finance) for a detailed tutorial with code examples.
|
||||
- `Ticker`: single ticker data
|
||||
- `Tickers`: multiple tickers' data
|
||||
- `download`: download market data for multiple tickers
|
||||
- `Market`: get infomation about a market
|
||||
- `Search`: quotes and news from search
|
||||
- `Sector` and `Industry`: sector and industry information
|
||||
- `EquityQuery` and `Screener`: build query to screen market
|
||||
|
||||
[Changelog »](https://github.com/ranaroussi/yfinance/blob/main/CHANGELOG.rst)
|
||||
|
||||
---
|
||||
|
||||
- [Installation](#installation)
|
||||
- [Quick start](#quick-start)
|
||||
- [Advanced](#logging)
|
||||
- [Wiki](https://github.com/ranaroussi/yfinance/wiki)
|
||||
- [Contribute](#developers-want-to-contribute)
|
||||
|
||||
---
|
||||
## **NEW DOCUMENTATION WEBSITE**: [ranaroussi.github.io/yfinance](https://ranaroussi.github.io/yfinance/index.html)
|
||||
|
||||
## Installation
|
||||
|
||||
Install `yfinance` using `pip`:
|
||||
Install `yfinance` from PYPI using `pip`:
|
||||
|
||||
``` {.sourceCode .bash}
|
||||
$ pip install yfinance --upgrade --no-cache-dir
|
||||
$ pip install yfinance
|
||||
```
|
||||
|
||||
[With Conda](https://anaconda.org/ranaroussi/yfinance).
|
||||
|
||||
To install with optional dependencies, replace `optional` with: `nospam` for [caching-requests](#smarter-scraping), `repair` for [price repair](https://github.com/ranaroussi/yfinance/wiki/Price-repair), or `nospam,repair` for both:
|
||||
|
||||
``` {.sourceCode .bash}
|
||||
$ pip install "yfinance[optional]"
|
||||
```
|
||||
|
||||
[Required dependencies](./requirements.txt) , [all dependencies](./setup.py#L62).
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
### The Ticker module
|
||||
|
||||
The `Ticker` module, which allows you to access ticker data in a more Pythonic way:
|
||||
|
||||
```python
|
||||
import yfinance as yf
|
||||
|
||||
msft = yf.Ticker("MSFT")
|
||||
|
||||
# get all stock info
|
||||
msft.info
|
||||
|
||||
# get historical market data
|
||||
hist = msft.history(period="1mo")
|
||||
|
||||
# show meta information about the history (requires history() to be called first)
|
||||
msft.history_metadata
|
||||
|
||||
# show actions (dividends, splits, capital gains)
|
||||
msft.actions
|
||||
msft.dividends
|
||||
msft.splits
|
||||
msft.capital_gains # only for mutual funds & etfs
|
||||
|
||||
# show share count
|
||||
msft.get_shares_full(start="2022-01-01", end=None)
|
||||
|
||||
# show financials:
|
||||
msft.calendar
|
||||
msft.sec_filings
|
||||
# - income statement
|
||||
msft.income_stmt
|
||||
msft.quarterly_income_stmt
|
||||
# - balance sheet
|
||||
msft.balance_sheet
|
||||
msft.quarterly_balance_sheet
|
||||
# - cash flow statement
|
||||
msft.cashflow
|
||||
msft.quarterly_cashflow
|
||||
# see `Ticker.get_income_stmt()` for more options
|
||||
|
||||
# show holders
|
||||
msft.major_holders
|
||||
msft.institutional_holders
|
||||
msft.mutualfund_holders
|
||||
msft.insider_transactions
|
||||
msft.insider_purchases
|
||||
msft.insider_roster_holders
|
||||
|
||||
msft.sustainability
|
||||
|
||||
# show recommendations
|
||||
msft.recommendations
|
||||
msft.recommendations_summary
|
||||
msft.upgrades_downgrades
|
||||
|
||||
# show analysts data
|
||||
msft.analyst_price_targets
|
||||
msft.earnings_estimate
|
||||
msft.revenue_estimate
|
||||
msft.earnings_history
|
||||
msft.eps_trend
|
||||
msft.eps_revisions
|
||||
msft.growth_estimates
|
||||
|
||||
# Show future and historic earnings dates, returns at most next 4 quarters and last 8 quarters by default.
|
||||
# Note: If more are needed use msft.get_earnings_dates(limit=XX) with increased limit argument.
|
||||
msft.earnings_dates
|
||||
|
||||
# show ISIN code - *experimental*
|
||||
# ISIN = International Securities Identification Number
|
||||
msft.isin
|
||||
|
||||
# show options expirations
|
||||
msft.options
|
||||
|
||||
# show news
|
||||
msft.news
|
||||
|
||||
# get option chain for specific expiration
|
||||
opt = msft.option_chain('YYYY-MM-DD')
|
||||
# data available via: opt.calls, opt.puts
|
||||
```
|
||||
|
||||
For tickers that are ETFs/Mutual Funds, `Ticker.funds_data` provides access to fund related data.
|
||||
|
||||
Funds' Top Holdings and other data with category average is returned as `pd.DataFrame`.
|
||||
|
||||
```python
|
||||
import yfinance as yf
|
||||
spy = yf.Ticker('SPY')
|
||||
data = spy.funds_data
|
||||
|
||||
# show fund description
|
||||
data.description
|
||||
|
||||
# show operational information
|
||||
data.fund_overview
|
||||
data.fund_operations
|
||||
|
||||
# show holdings related information
|
||||
data.asset_classes
|
||||
data.top_holdings
|
||||
data.equity_holdings
|
||||
data.bond_holdings
|
||||
data.bond_ratings
|
||||
data.sector_weightings
|
||||
```
|
||||
|
||||
If you want to use a proxy server for downloading data, use:
|
||||
|
||||
```python
|
||||
import yfinance as yf
|
||||
|
||||
msft = yf.Ticker("MSFT")
|
||||
|
||||
msft.history(..., proxy="PROXY_SERVER")
|
||||
msft.get_actions(proxy="PROXY_SERVER")
|
||||
msft.get_dividends(proxy="PROXY_SERVER")
|
||||
msft.get_splits(proxy="PROXY_SERVER")
|
||||
msft.get_capital_gains(proxy="PROXY_SERVER")
|
||||
msft.get_balance_sheet(proxy="PROXY_SERVER")
|
||||
msft.get_cashflow(proxy="PROXY_SERVER")
|
||||
msft.option_chain(..., proxy="PROXY_SERVER")
|
||||
...
|
||||
```
|
||||
|
||||
### Multiple tickers
|
||||
|
||||
To initialize multiple `Ticker` objects, use
|
||||
|
||||
```python
|
||||
import yfinance as yf
|
||||
|
||||
tickers = yf.Tickers('msft aapl goog')
|
||||
|
||||
# access each ticker using (example)
|
||||
tickers.tickers['MSFT'].info
|
||||
tickers.tickers['AAPL'].history(period="1mo")
|
||||
tickers.tickers['GOOG'].actions
|
||||
```
|
||||
|
||||
To download price history into one table:
|
||||
|
||||
```python
|
||||
import yfinance as yf
|
||||
data = yf.download("SPY AAPL", period="1mo")
|
||||
```
|
||||
|
||||
#### `yf.download()` and `Ticker.history()` have many options for configuring fetching and processing. [Review the Wiki](https://github.com/ranaroussi/yfinance/wiki) for more options and detail.
|
||||
|
||||
### Sector and Industry
|
||||
|
||||
The `Sector` and `Industry` modules allow you to access the US market information.
|
||||
|
||||
To initialize, use the relevant sector or industry key as below. (Complete mapping of the keys is available in `const.py`.)
|
||||
|
||||
```python
|
||||
import yfinance as yf
|
||||
|
||||
tech = yf.Sector('technology')
|
||||
software = yf.Industry('software-infrastructure')
|
||||
|
||||
# Common information
|
||||
tech.key
|
||||
tech.name
|
||||
tech.symbol
|
||||
tech.ticker
|
||||
tech.overview
|
||||
tech.top_companies
|
||||
tech.research_reports
|
||||
|
||||
# Sector information
|
||||
tech.top_etfs
|
||||
tech.top_mutual_funds
|
||||
tech.industries
|
||||
|
||||
# Industry information
|
||||
software.sector_key
|
||||
software.sector_name
|
||||
software.top_performing_companies
|
||||
software.top_growth_companies
|
||||
```
|
||||
|
||||
The modules can be chained with Ticker as below.
|
||||
```python
|
||||
import yfinance as yf
|
||||
|
||||
# Ticker to Sector and Industry
|
||||
msft = yf.Ticker('MSFT')
|
||||
tech = yf.Sector(msft.info.get('sectorKey'))
|
||||
software = yf.Industry(msft.info.get('industryKey'))
|
||||
|
||||
# Sector and Industry to Ticker
|
||||
tech_ticker = tech.ticker
|
||||
tech_ticker.info
|
||||
software_ticker = software.ticker
|
||||
software_ticker.history()
|
||||
```
|
||||
|
||||
### Market Screener
|
||||
The `Screener` module allows you to screen the market based on specified queries.
|
||||
|
||||
#### Query Construction
|
||||
To create a query, you can use the `EquityQuery` class to construct your filters step by step. The queries support operators: `GT` (greater than), `LT` (less than), `BTWN` (between), `EQ` (equals), and logical operators `AND` and `OR` for combining multiple conditions.
|
||||
|
||||
#### Screener
|
||||
The `Screener` class is used to execute the queries and return the filtered results. You can set a custom body for the screener or use predefined configurations.
|
||||
|
||||
<!-- TODO: link to Github Pages for more including list of predefined bodies, supported fields, operands, and sample code -->
|
||||
|
||||
### Logging
|
||||
|
||||
`yfinance` now uses the `logging` module to handle messages, default behaviour is only print errors. If debugging, use `yf.enable_debug_mode()` to switch logging to debug with custom formatting.
|
||||
|
||||
### Smarter scraping
|
||||
|
||||
Install the `nospam` packages for smarter scraping using `pip` (see [Installation](#installation)). These packages help cache calls such that Yahoo is not spammed with requests.
|
||||
|
||||
To use a custom `requests` session, pass a `session=` argument to
|
||||
the Ticker constructor. This allows for caching calls to the API as well as a custom way to modify requests via the `User-agent` header.
|
||||
|
||||
```python
|
||||
import requests_cache
|
||||
session = requests_cache.CachedSession('yfinance.cache')
|
||||
session.headers['User-agent'] = 'my-program/1.0'
|
||||
ticker = yf.Ticker('msft', session=session)
|
||||
# The scraped response will be stored in the cache
|
||||
ticker.actions
|
||||
```
|
||||
|
||||
Combine `requests_cache` with rate-limiting to avoid triggering Yahoo's rate-limiter/blocker that can corrupt data.
|
||||
```python
|
||||
from requests import Session
|
||||
from requests_cache import CacheMixin, SQLiteCache
|
||||
from requests_ratelimiter import LimiterMixin, MemoryQueueBucket
|
||||
from pyrate_limiter import Duration, RequestRate, Limiter
|
||||
class CachedLimiterSession(CacheMixin, LimiterMixin, Session):
|
||||
pass
|
||||
|
||||
session = CachedLimiterSession(
|
||||
limiter=Limiter(RequestRate(2, Duration.SECOND*5)), # max 2 requests per 5 seconds
|
||||
bucket_class=MemoryQueueBucket,
|
||||
backend=SQLiteCache("yfinance.cache"),
|
||||
)
|
||||
```
|
||||
|
||||
### Managing Multi-Level Columns
|
||||
|
||||
The following answer on Stack Overflow is for [How to deal with
|
||||
multi-level column names downloaded with
|
||||
yfinance?](https://stackoverflow.com/questions/63107801)
|
||||
|
||||
- `yfinance` returns a `pandas.DataFrame` with multi-level column
|
||||
names, with a level for the ticker and a level for the stock price
|
||||
data
|
||||
- The answer discusses:
|
||||
- How to correctly read the the multi-level columns after
|
||||
saving the dataframe to a csv with `pandas.DataFrame.to_csv`
|
||||
- How to download single or multiple tickers into a single
|
||||
dataframe with single level column names and a ticker column
|
||||
|
||||
### Persistent cache store
|
||||
|
||||
To reduce Yahoo, yfinance store some data locally: timezones to localize dates, and cookie. Cache location is:
|
||||
|
||||
- Windows = C:/Users/\<USER\>/AppData/Local/py-yfinance
|
||||
- Linux = /home/\<USER\>/.cache/py-yfinance
|
||||
- MacOS = /Users/\<USER\>/Library/Caches/py-yfinance
|
||||
|
||||
You can direct cache to use a different location with `set_tz_cache_location()`:
|
||||
|
||||
```python
|
||||
import yfinance as yf
|
||||
yf.set_tz_cache_location("custom/cache/location")
|
||||
...
|
||||
```
|
||||
|
||||
---
|
||||
The list of changes can be found in the [Changelog](https://github.com/ranaroussi/yfinance/blob/main/CHANGELOG.rst)
|
||||
|
||||
## Developers: want to contribute?
|
||||
|
||||
`yfinance` relies on community to investigate bugs and contribute code. Developer guide: https://github.com/ranaroussi/yfinance/discussions/1084
|
||||
`yfinance` relies on community to investigate bugs, review code, and contribute code. Developer guide: https://github.com/ranaroussi/yfinance/discussions/1084
|
||||
|
||||
---
|
||||
|
||||
@@ -362,7 +67,6 @@ yf.set_tz_cache_location("custom/cache/location")
|
||||
**yfinance** is distributed under the **Apache Software License**. See
|
||||
the [LICENSE.txt](./LICENSE.txt) file in the release for details.
|
||||
|
||||
|
||||
AGAIN - yfinance is **not** affiliated, endorsed, or vetted by Yahoo, Inc. It's
|
||||
an open-source tool that uses Yahoo's publicly available APIs, and is
|
||||
intended for research and educational purposes. You should refer to Yahoo!'s terms of use
|
||||
@@ -378,3 +82,4 @@ details on your rights to use the actual data downloaded.
|
||||
Please drop me a note with any feedback you have.
|
||||
|
||||
**Ran Aroussi**
|
||||
|
||||
|
||||
20
doc/Makefile
Normal file
20
doc/Makefile
Normal file
@@ -0,0 +1,20 @@
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
SOURCEDIR = source
|
||||
BUILDDIR = build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
35
doc/make.bat
Normal file
35
doc/make.bat
Normal file
@@ -0,0 +1,35 @@
|
||||
@ECHO OFF
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set SOURCEDIR=source
|
||||
set BUILDDIR=build
|
||||
|
||||
%SPHINXBUILD% >NUL 2>NUL
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.https://www.sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
goto end
|
||||
|
||||
:help
|
||||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
|
||||
:end
|
||||
popd
|
||||
4
doc/source/_static/yfinance.css
Normal file
4
doc/source/_static/yfinance.css
Normal file
@@ -0,0 +1,4 @@
|
||||
/* Hide the "Section Navigation" title */
|
||||
p.bd-links__title {
|
||||
display: none;
|
||||
}
|
||||
29
doc/source/_templates/autosummary/class.rst
Normal file
29
doc/source/_templates/autosummary/class.rst
Normal file
@@ -0,0 +1,29 @@
|
||||
:orphan:
|
||||
|
||||
{{ objname | escape | underline }}
|
||||
|
||||
.. currentmodule:: {{ module }}
|
||||
|
||||
.. autoclass:: {{ objname }}
|
||||
|
||||
{% block attributes %}
|
||||
{% if attributes %}
|
||||
.. rubric:: Attributes
|
||||
|
||||
{% for item in attributes %}
|
||||
.. autoattribute:: {{ item }}
|
||||
:noindex:
|
||||
{%- endfor %}
|
||||
{% endif %}
|
||||
{% endblock attributes %}
|
||||
|
||||
{% block methods %}
|
||||
{% if methods %}
|
||||
.. rubric:: Methods
|
||||
|
||||
{% for item in methods %}
|
||||
.. automethod:: {{ item }}
|
||||
:noindex:
|
||||
{%- endfor %}
|
||||
{% endif %}
|
||||
{% endblock methods %}
|
||||
59
doc/source/advanced/caching.rst
Normal file
59
doc/source/advanced/caching.rst
Normal file
@@ -0,0 +1,59 @@
|
||||
Caching
|
||||
=======
|
||||
|
||||
Smarter Scraping
|
||||
----------------
|
||||
|
||||
Install the `nospam` package to cache API calls and reduce spam to Yahoo:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install yfinance[nospam]
|
||||
|
||||
To use a custom `requests` session, pass a `session=` argument to
|
||||
the Ticker constructor. This allows for caching calls to the API as well as a custom way to modify requests via the `User-agent` header.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import requests_cache
|
||||
session = requests_cache.CachedSession('yfinance.cache')
|
||||
session.headers['User-agent'] = 'my-program/1.0'
|
||||
ticker = yf.Ticker('MSFT', session=session)
|
||||
|
||||
# The scraped response will be stored in the cache
|
||||
ticker.actions
|
||||
|
||||
|
||||
Combine `requests_cache` with rate-limiting to avoid triggering Yahoo's rate-limiter/blocker that can corrupt data.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from requests import Session
|
||||
from requests_cache import CacheMixin, SQLiteCache
|
||||
from requests_ratelimiter import LimiterMixin, MemoryQueueBucket
|
||||
from pyrate_limiter import Duration, RequestRate, Limiter
|
||||
class CachedLimiterSession(CacheMixin, LimiterMixin, Session):
|
||||
pass
|
||||
|
||||
session = CachedLimiterSession(
|
||||
limiter=Limiter(RequestRate(2, Duration.SECOND*5)), # max 2 requests per 5 seconds
|
||||
bucket_class=MemoryQueueBucket,
|
||||
backend=SQLiteCache("yfinance.cache"),
|
||||
)
|
||||
|
||||
|
||||
Persistent Cache
|
||||
----------------
|
||||
|
||||
To reduce Yahoo, yfinance store some data locally: timezones to localize dates, and cookie. Cache location is:
|
||||
|
||||
- Windows = C:/Users/\<USER\>/AppData/Local/py-yfinance
|
||||
- Linux = /home/\<USER\>/.cache/py-yfinance
|
||||
- MacOS = /Users/\<USER\>/Library/Caches/py-yfinance
|
||||
|
||||
You can direct cache to use a different location with :attr:`set_tz_cache_location <yfinance.set_tz_cache_location>`:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import yfinance as yf
|
||||
yf.set_tz_cache_location("custom/cache/location")
|
||||
11
doc/source/advanced/index.rst
Normal file
11
doc/source/advanced/index.rst
Normal file
@@ -0,0 +1,11 @@
|
||||
========
|
||||
Advanced
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
logging
|
||||
proxy
|
||||
caching
|
||||
multi_level_columns
|
||||
11
doc/source/advanced/logging.rst
Normal file
11
doc/source/advanced/logging.rst
Normal file
@@ -0,0 +1,11 @@
|
||||
Logging
|
||||
=======
|
||||
|
||||
`yfinance` uses the `logging` module to handle messages. By default, only errors are logged.
|
||||
|
||||
If debugging, you can switch to debug mode with custom formatting using:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import yfinance as yf
|
||||
yf.enable_debug_mode()
|
||||
13
doc/source/advanced/multi_level_columns.rst
Normal file
13
doc/source/advanced/multi_level_columns.rst
Normal file
@@ -0,0 +1,13 @@
|
||||
************************
|
||||
Multi-Level Column Index
|
||||
************************
|
||||
|
||||
The following answer on Stack Overflow is for `How to deal with
|
||||
multi-level column names downloaded with yfinance? <https://stackoverflow.com/questions/63107801>`_
|
||||
|
||||
- `yfinance` returns a `pandas.DataFrame` with multi-level column names, with a level for the ticker and a level for the stock price data
|
||||
|
||||
The answer discusses:
|
||||
|
||||
- How to correctly read the the multi-level columns after saving the dataframe to a csv with `pandas.DataFrame.to_csv`
|
||||
- How to download single or multiple tickers into a singledataframe with single level column names and a ticker column
|
||||
11
doc/source/advanced/proxy.rst
Normal file
11
doc/source/advanced/proxy.rst
Normal file
@@ -0,0 +1,11 @@
|
||||
************
|
||||
Proxy Server
|
||||
************
|
||||
|
||||
You can download data via a proxy:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
msft = yf.Ticker("MSFT")
|
||||
msft.history(..., proxy="PROXY_SERVER")
|
||||
|
||||
46
doc/source/conf.py
Normal file
46
doc/source/conf.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import os
|
||||
import sys
|
||||
sys.path.insert(0, os.path.abspath('../..'))
|
||||
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# For the full list of built-in configuration values, see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
||||
|
||||
project = 'yfinance - market data downloader'
|
||||
copyright = '2017-2019 Ran Aroussi'
|
||||
author = 'Ran Aroussi'
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
||||
|
||||
extensions = ['sphinx.ext.autodoc',
|
||||
'sphinx.ext.napoleon',
|
||||
"sphinx.ext.githubpages",
|
||||
"sphinx.ext.autosectionlabel",
|
||||
"sphinx.ext.autosummary",
|
||||
"sphinx_copybutton"]
|
||||
|
||||
templates_path = ['_templates']
|
||||
exclude_patterns = []
|
||||
autoclass_content = 'both'
|
||||
autosummary_generate = True
|
||||
autodoc_default_options = {
|
||||
'exclude-members': '__init__',
|
||||
'members': True,
|
||||
}
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
||||
|
||||
html_title = 'yfinance'
|
||||
html_theme = 'pydata_sphinx_theme'
|
||||
html_theme_options = {
|
||||
"github_url": "https://github.com/ranaroussi/yfinance",
|
||||
"navbar_align": "left"
|
||||
}
|
||||
html_static_path = ['_static']
|
||||
html_css_files = ['yfinance.css']
|
||||
BIN
doc/source/development/assets/branches.png
Normal file
BIN
doc/source/development/assets/branches.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
109
doc/source/development/contributing.rst
Normal file
109
doc/source/development/contributing.rst
Normal file
@@ -0,0 +1,109 @@
|
||||
********************************
|
||||
Contributiong to yfinance
|
||||
********************************
|
||||
|
||||
`yfinance` relies on the community to investigate bugs and contribute code. Here’s how you can help:
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
1. Fork the repository on GitHub.
|
||||
2. Clone your forked repository:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
git clone https://github.com/your-username/yfinance.git
|
||||
|
||||
3. Create a new branch for your feature or bug fix:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
git checkout -b feature-branch-name
|
||||
|
||||
4. Make your changes, commit them, and push your branch to GitHub. To keep the commit history and `network graph <https://github.com/ranaroussi/yfinance/network>`_ compact:
|
||||
|
||||
Use short summaries for commits
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git commit -m "short summary" -m "full commit message"
|
||||
|
||||
**Squash** tiny or negligible commits with meaningful ones.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git rebase -i HEAD~2
|
||||
git push --force-with-lease origin <branch-name>
|
||||
|
||||
5. Open a pull request on the `yfinance` GitHub page.
|
||||
|
||||
For more information, see the `Developer Guide <https://github.com/ranaroussi/yfinance/discussions/1084>`_.
|
||||
|
||||
Branches
|
||||
---------
|
||||
|
||||
To support rapid development without breaking stable versions, this project uses a two-layer branch model:
|
||||
|
||||
.. image:: assets/branches.png
|
||||
:alt: Branching Model
|
||||
|
||||
`Inspiration <https://miro.medium.com/max/700/1*2YagIpX6LuauC3ASpwHekg.png>`_
|
||||
|
||||
- **dev**: New features and some bug fixes are merged here. This branch allows collective testing, conflict resolution, and further stabilization before merging into the stable branch.
|
||||
- **main**: Stable branch where PIP releases are created.
|
||||
|
||||
By default, branches target **main**, but most contributions should target **dev**.
|
||||
|
||||
**Exceptions**:
|
||||
Direct merges to **main** are allowed if:
|
||||
|
||||
- `yfinance` is massively broken
|
||||
- Part of `yfinance` is broken, and the fix is simple and isolated
|
||||
|
||||
Unit Tests
|
||||
----------
|
||||
|
||||
Tests are written using Python’s `unittest` module. Here are some ways to run tests:
|
||||
|
||||
- **Run all price tests**:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
python -m unittest tests.test_prices
|
||||
|
||||
- **Run a subset of price tests**:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
python -m unittest tests.test_prices.TestPriceRepair
|
||||
|
||||
- **Run a specific test**:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
python -m unittest tests.test_prices.TestPriceRepair.test_ticker_missing
|
||||
|
||||
- **Run all tests**:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
python -m unittest discover -s tests
|
||||
|
||||
Rebasing
|
||||
--------------
|
||||
|
||||
If asked to move your branch from **main** to **dev**:
|
||||
|
||||
1. Ensure all relevant branches are pulled.
|
||||
2. Run:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git checkout <your-branch>
|
||||
git rebase --onto dev main <branch-name>
|
||||
git push --force-with-lease origin <branch-name>
|
||||
|
||||
Running the GitHub Version of yfinance
|
||||
--------------------------------------
|
||||
|
||||
To download and run a GitHub version of `yfinance`, refer to `GitHub discussion <https://github.com/ranaroussi/yfinance/discussions/1080>`_
|
||||
46
doc/source/development/documentation.rst
Normal file
46
doc/source/development/documentation.rst
Normal file
@@ -0,0 +1,46 @@
|
||||
*************************************
|
||||
Contribution to the documentation
|
||||
*************************************
|
||||
|
||||
.. contents:: Documentation:
|
||||
:local:
|
||||
|
||||
About documentation
|
||||
------------------------
|
||||
* yfinance documentation is written in reStructuredText (rst) and built using Sphinx.
|
||||
* The documentation file is in `doc/source/..`.
|
||||
* Most of the notes under API References read from class and methods docstrings. These documentations, found in `doc/source/reference/api` is autogenerated by Sphinx and not included in git.
|
||||
|
||||
Building documentation locally
|
||||
-------------------------------
|
||||
To build the documentation locally, follow these steps:
|
||||
|
||||
1. **Install Required Dependencies**:
|
||||
|
||||
* Make sure `Sphinx` and any other dependencies are installed. If a `requirements.txt` file is available, you can install dependencies by running:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install -r requirements.txt
|
||||
|
||||
|
||||
2. **Build with Sphinx**:
|
||||
|
||||
* After dependencies are installed, use the sphinx-build command to generate HTML documentation.
|
||||
* Go to `doc/` directory Run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
make clean && make html
|
||||
|
||||
3. **View Documentation Locally**:
|
||||
|
||||
* Open `doc/build/html/index.html` in the browser to view the generated documentation.
|
||||
|
||||
Building documentation on main
|
||||
-------------------------------
|
||||
The documentation updates are built on merge to `main` branch. This is done via GitHub Actions workflow based on `/yfinance/.github/workflows/deploy_doc.yml`.
|
||||
|
||||
1. Reivew the changes locally and push to `dev`.
|
||||
|
||||
2. When `dev` gets merged to `main`, GitHub Actions workflow is automated to build documentation.
|
||||
10
doc/source/development/index.rst
Normal file
10
doc/source/development/index.rst
Normal file
@@ -0,0 +1,10 @@
|
||||
===========
|
||||
Development
|
||||
===========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
contributing
|
||||
documentation
|
||||
reporting_bug
|
||||
5
doc/source/development/reporting_bug.rst
Normal file
5
doc/source/development/reporting_bug.rst
Normal file
@@ -0,0 +1,5 @@
|
||||
********************************
|
||||
Reporting a Bug
|
||||
********************************
|
||||
|
||||
Open a new issue on our `GitHub <https://github.com/ranaroussi/yfinance/issues>`_.
|
||||
74
doc/source/index.rst
Normal file
74
doc/source/index.rst
Normal file
@@ -0,0 +1,74 @@
|
||||
yfinance documentation
|
||||
======================
|
||||
|
||||
Download Market Data from Yahoo! Finance's API
|
||||
----------------------------------------------
|
||||
|
||||
.. admonition:: IMPORTANT LEGAL DISCLAIMER
|
||||
|
||||
**Yahoo!, Y!Finance, and Yahoo! finance are registered trademarks of Yahoo, Inc.**
|
||||
|
||||
yfinance is **not** affiliated, endorsed, or vetted by Yahoo, Inc. It's
|
||||
an open-source tool that uses Yahoo's publicly available APIs, and is
|
||||
intended for research and educational purposes.
|
||||
|
||||
**You should refer to Yahoo!'s terms of use**
|
||||
(`here <https://policies.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/index.htm>`__),
|
||||
(`here <https://legal.yahoo.com/us/en/yahoo/terms/otos/index.html>`__),
|
||||
and (`here <https://policies.yahoo.com/us/en/yahoo/terms/index.htm>`__)
|
||||
for details on your rights to use the actual data downloaded.
|
||||
Remember - the Yahoo! finance API is intended for personal use only.
|
||||
|
||||
Install
|
||||
-------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ pip install yfinance
|
||||
|
||||
Quick start
|
||||
-----------
|
||||
|
||||
Showing a small sample of yfinance API, the full API is much bigger and covered in :doc:`reference/index`.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import yfinance as yf
|
||||
dat = yf.Ticker("MSFT")
|
||||
|
||||
|
||||
One ticker symbol
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
dat = yf.Ticker("MSFT")
|
||||
dat.info
|
||||
dat.calendar
|
||||
dat.analyst_price_targets
|
||||
dat.quarterly_income_stmt
|
||||
dat.history(period='1mo')
|
||||
dat.option_chain(dat.options[0]).calls
|
||||
|
||||
Multiple ticker symbols
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
tickers = yf.Tickers('MSFT AAPL GOOG')
|
||||
tickers.tickers['MSFT'].info
|
||||
yf.download(['MSFT', 'AAPL', 'GOOG'], period='1mo')
|
||||
|
||||
Funds
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
spy = yf.Ticker('SPY').funds_data
|
||||
spy.description
|
||||
spy.top_holdings
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:titlesonly:
|
||||
|
||||
advanced/index
|
||||
reference/index
|
||||
development/index
|
||||
2
doc/source/reference/examples/download.py
Normal file
2
doc/source/reference/examples/download.py
Normal file
@@ -0,0 +1,2 @@
|
||||
import yfinance as yf
|
||||
data = yf.download("SPY AAPL", period="1mo")
|
||||
18
doc/source/reference/examples/funds_data.py
Normal file
18
doc/source/reference/examples/funds_data.py
Normal file
@@ -0,0 +1,18 @@
|
||||
import yfinance as yf
|
||||
spy = yf.Ticker('SPY')
|
||||
data = spy.funds_data
|
||||
|
||||
# show fund description
|
||||
data.description
|
||||
|
||||
# show operational information
|
||||
data.fund_overview
|
||||
data.fund_operations
|
||||
|
||||
# show holdings related information
|
||||
data.asset_classes
|
||||
data.top_holdings
|
||||
data.equity_holdings
|
||||
data.bond_holdings
|
||||
data.bond_ratings
|
||||
data.sector_weightings
|
||||
6
doc/source/reference/examples/market.py
Normal file
6
doc/source/reference/examples/market.py
Normal file
@@ -0,0 +1,6 @@
|
||||
import yfinance as yf
|
||||
|
||||
EUROPE = yf.Market("EUROPE")
|
||||
|
||||
status = EUROPE.status
|
||||
summary = EUROPE.summary
|
||||
13
doc/source/reference/examples/proxy.py
Normal file
13
doc/source/reference/examples/proxy.py
Normal file
@@ -0,0 +1,13 @@
|
||||
import yfinance as yf
|
||||
|
||||
msft = yf.Ticker("MSFT")
|
||||
|
||||
msft.history(..., proxy="PROXY_SERVER")
|
||||
msft.get_actions(proxy="PROXY_SERVER")
|
||||
msft.get_dividends(proxy="PROXY_SERVER")
|
||||
msft.get_splits(proxy="PROXY_SERVER")
|
||||
msft.get_capital_gains(proxy="PROXY_SERVER")
|
||||
msft.get_balance_sheet(proxy="PROXY_SERVER")
|
||||
msft.get_cashflow(proxy="PROXY_SERVER")
|
||||
msft.option_chain(..., proxy="PROXY_SERVER")
|
||||
...
|
||||
10
doc/source/reference/examples/search.py
Normal file
10
doc/source/reference/examples/search.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import yfinance as yf
|
||||
|
||||
# get list of quotes
|
||||
quotes = yf.Search("AAPL", max_results=10).quotes
|
||||
|
||||
# get list of news
|
||||
news = yf.Search("Google", news_count=10).news
|
||||
|
||||
# get list of related research
|
||||
research = yf.Search("apple", include_research=True).research
|
||||
25
doc/source/reference/examples/sector_industry.py
Normal file
25
doc/source/reference/examples/sector_industry.py
Normal file
@@ -0,0 +1,25 @@
|
||||
import yfinance as yf
|
||||
|
||||
tech = yf.Sector('technology')
|
||||
software = yf.Industry('software-infrastructure')
|
||||
|
||||
# Common information
|
||||
tech.key
|
||||
tech.name
|
||||
tech.symbol
|
||||
tech.ticker
|
||||
tech.overview
|
||||
tech.top_companies
|
||||
tech.research_reports
|
||||
|
||||
# Sector information
|
||||
tech.top_etfs
|
||||
tech.top_mutual_funds
|
||||
tech.industries
|
||||
|
||||
# Industry information
|
||||
software.sector_key
|
||||
software.sector_name
|
||||
software.top_performing_companies
|
||||
software.top_growth_companies
|
||||
|
||||
11
doc/source/reference/examples/sector_industry_ticker.py
Normal file
11
doc/source/reference/examples/sector_industry_ticker.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import yfinance as yf
|
||||
# Ticker to Sector and Industry
|
||||
msft = yf.Ticker('MSFT')
|
||||
tech = yf.Sector(msft.info.get('sectorKey'))
|
||||
software = yf.Industry(msft.info.get('industryKey'))
|
||||
|
||||
# Sector and Industry to Ticker
|
||||
tech_ticker = tech.ticker
|
||||
tech_ticker.info
|
||||
software_ticker = software.ticker
|
||||
software_ticker.history()
|
||||
22
doc/source/reference/examples/ticker.py
Normal file
22
doc/source/reference/examples/ticker.py
Normal file
@@ -0,0 +1,22 @@
|
||||
import yfinance as yf
|
||||
|
||||
dat = yf.Ticker("MSFT")
|
||||
|
||||
# get historical market data
|
||||
dat.history(period='1mo')
|
||||
|
||||
# options
|
||||
dat.option_chain(dat.options[0]).calls
|
||||
|
||||
# get financials
|
||||
dat.balance_sheet
|
||||
dat.quarterly_income_stmt
|
||||
|
||||
# dates
|
||||
dat.calendar
|
||||
|
||||
# general info
|
||||
dat.info
|
||||
|
||||
# analysis
|
||||
dat.analyst_price_targets
|
||||
8
doc/source/reference/examples/tickers.py
Normal file
8
doc/source/reference/examples/tickers.py
Normal file
@@ -0,0 +1,8 @@
|
||||
import yfinance as yf
|
||||
|
||||
tickers = yf.Tickers('msft aapl goog')
|
||||
|
||||
# access each ticker using (example)
|
||||
tickers.tickers['MSFT'].info
|
||||
tickers.tickers['AAPL'].history(period="1mo")
|
||||
tickers.tickers['GOOG'].actions
|
||||
47
doc/source/reference/index.rst
Normal file
47
doc/source/reference/index.rst
Normal file
@@ -0,0 +1,47 @@
|
||||
=============
|
||||
API Reference
|
||||
=============
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The `yfinance` package provides easy access to Yahoo! Finance's API to retrieve market data. It includes classes and functions for downloading historical market data, accessing ticker information, managing cache, and more.
|
||||
|
||||
|
||||
Public API
|
||||
==========
|
||||
|
||||
The following are the publicly available classes, and functions exposed by the `yfinance` package:
|
||||
|
||||
- :attr:`Ticker <yfinance.Ticker>`: Class for accessing single ticker data.
|
||||
- :attr:`Tickers <yfinance.Tickers>`: Class for handling multiple tickers.
|
||||
- :attr:`Market <yfinance.Market>`: Class for accessing market summary.
|
||||
- :attr:`download <yfinance.download>`: Function to download market data for multiple tickers.
|
||||
- :attr:`Search <yfinance.Search>`: Class for accessing search results.
|
||||
- :attr:`Sector <yfinance.Sector>`: Domain class for accessing sector information.
|
||||
- :attr:`Industry <yfinance.Industry>`: Domain class for accessing industry information.
|
||||
- :attr:`Market <yfinance.Market>`: Class for accessing market status & summary.
|
||||
- :attr:`EquityQuery <yfinance.EquityQuery>`: Class to build equity query filters.
|
||||
- :attr:`FundQuery <yfinance.FundQuery>`: Class to build fund query filters.
|
||||
- :attr:`screen <yfinance.screen>`: Run equity/fund queries.
|
||||
- :attr:`enable_debug_mode <yfinance.enable_debug_mode>`: Function to enable debug mode for logging.
|
||||
- :attr:`set_tz_cache_location <yfinance.set_tz_cache_location>`: Function to set the timezone cache location.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
|
||||
yfinance.ticker_tickers
|
||||
yfinance.stock
|
||||
yfinance.market
|
||||
yfinance.financials
|
||||
yfinance.analysis
|
||||
yfinance.market
|
||||
yfinance.search
|
||||
yfinance.sector_industry
|
||||
yfinance.screener
|
||||
yfinance.functions
|
||||
|
||||
yfinance.funds_data
|
||||
yfinance.price_history
|
||||
81
doc/source/reference/yfinance.analysis.rst
Normal file
81
doc/source/reference/yfinance.analysis.rst
Normal file
@@ -0,0 +1,81 @@
|
||||
===================
|
||||
Analysis & Holdings
|
||||
===================
|
||||
|
||||
.. currentmodule:: yfinance.Ticker
|
||||
|
||||
Analysis
|
||||
--------
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
get_recommendations
|
||||
recommendations
|
||||
|
||||
get_recommendations_summary
|
||||
recommendations_summary
|
||||
|
||||
get_upgrades_downgrades
|
||||
upgrades_downgrades
|
||||
|
||||
get_sustainability
|
||||
sustainability
|
||||
|
||||
get_analyst_price_targets
|
||||
analyst_price_targets
|
||||
|
||||
get_earnings_estimate
|
||||
earnings_estimate
|
||||
|
||||
get_revenue_estimate
|
||||
revenue_estimate
|
||||
|
||||
get_earnings_history
|
||||
earnings_history
|
||||
|
||||
get_eps_trend
|
||||
eps_trend
|
||||
|
||||
get_eps_revisions
|
||||
eps_revisions
|
||||
|
||||
get_growth_estimates
|
||||
growth_estimates
|
||||
|
||||
|
||||
Holdings
|
||||
--------
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
get_funds_data
|
||||
funds_data
|
||||
|
||||
.. seealso::
|
||||
:meth:`yfinance.scrapers.funds.FundsData`
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
get_insider_purchases
|
||||
insider_purchases
|
||||
|
||||
get_insider_transactions
|
||||
insider_transactions
|
||||
|
||||
get_insider_roster_holders
|
||||
insider_roster_holders
|
||||
|
||||
get_major_holders
|
||||
major_holders
|
||||
|
||||
get_institutional_holders
|
||||
institutional_holders
|
||||
|
||||
get_mutualfund_holders
|
||||
mutualfund_holders
|
||||
29
doc/source/reference/yfinance.financials.rst
Normal file
29
doc/source/reference/yfinance.financials.rst
Normal file
@@ -0,0 +1,29 @@
|
||||
==========
|
||||
Financials
|
||||
==========
|
||||
|
||||
.. currentmodule:: yfinance.Ticker
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
get_income_stmt
|
||||
income_stmt
|
||||
|
||||
get_balance_sheet
|
||||
balance_sheet
|
||||
|
||||
get_cashflow
|
||||
cashflow
|
||||
|
||||
get_earnings
|
||||
earnings
|
||||
|
||||
calendar
|
||||
|
||||
get_earnings_dates
|
||||
earnings_dates
|
||||
|
||||
get_sec_filings
|
||||
sec_filings
|
||||
32
doc/source/reference/yfinance.functions.rst
Normal file
32
doc/source/reference/yfinance.functions.rst
Normal file
@@ -0,0 +1,32 @@
|
||||
=========================
|
||||
Functions and Utilities
|
||||
=========================
|
||||
|
||||
.. currentmodule:: yfinance
|
||||
|
||||
Download Market Data
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
The `download` function allows you to retrieve market data for multiple tickers at once.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
|
||||
download
|
||||
|
||||
Enable Debug Mode
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Enables logging of debug information for the `yfinance` package.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
|
||||
enable_debug_mode
|
||||
|
||||
Set Timezone Cache Location
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Sets the cache location for timezone data.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
|
||||
set_tz_cache_location
|
||||
11
doc/source/reference/yfinance.funds_data.rst
Normal file
11
doc/source/reference/yfinance.funds_data.rst
Normal file
@@ -0,0 +1,11 @@
|
||||
====================
|
||||
`FundsData` class
|
||||
====================
|
||||
|
||||
.. currentmodule:: yfinance.scrapers.funds
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
FundsData
|
||||
41
doc/source/reference/yfinance.market.rst
Normal file
41
doc/source/reference/yfinance.market.rst
Normal file
@@ -0,0 +1,41 @@
|
||||
=====================
|
||||
Market
|
||||
=====================
|
||||
|
||||
.. currentmodule:: yfinance
|
||||
|
||||
|
||||
Class
|
||||
------------
|
||||
The `Market` class, allows you to access market data in a Pythonic way.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
|
||||
Market
|
||||
|
||||
Market Sample Code
|
||||
------------------
|
||||
|
||||
.. literalinclude:: examples/market.py
|
||||
:language: python
|
||||
|
||||
|
||||
Markets
|
||||
------------
|
||||
There are 8 different markets available in Yahoo Finance.
|
||||
|
||||
* US
|
||||
* GB
|
||||
|
||||
\
|
||||
|
||||
* ASIA
|
||||
* EUROPE
|
||||
|
||||
\
|
||||
|
||||
* RATES
|
||||
* COMMODITIES
|
||||
* CURRENCIES
|
||||
* CRYPTOCURRENCIES
|
||||
9
doc/source/reference/yfinance.price_history.rst
Normal file
9
doc/source/reference/yfinance.price_history.rst
Normal file
@@ -0,0 +1,9 @@
|
||||
====================
|
||||
`PriceHistory` class
|
||||
====================
|
||||
|
||||
.. currentmodule:: yfinance.scrapers.history
|
||||
|
||||
.. autoclass:: PriceHistory
|
||||
:members:
|
||||
:undoc-members:
|
||||
27
doc/source/reference/yfinance.screener.rst
Normal file
27
doc/source/reference/yfinance.screener.rst
Normal file
@@ -0,0 +1,27 @@
|
||||
=========================
|
||||
Screener & Query
|
||||
=========================
|
||||
|
||||
.. currentmodule:: yfinance
|
||||
|
||||
Query Market Data
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
The `Sector` and `Industry` modules allow you to access the sector and industry information.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
|
||||
EquityQuery
|
||||
FundQuery
|
||||
screen
|
||||
|
||||
.. seealso::
|
||||
:attr:`EquityQuery.valid_fields <yfinance.EquityQuery.valid_fields>`
|
||||
supported operand values for query
|
||||
:attr:`EquityQuery.valid_values <yfinance.EquityQuery.valid_values>`
|
||||
supported `EQ query operand parameters`
|
||||
:attr:`FundQuery.valid_fields <yfinance.FundQuery.valid_fields>`
|
||||
supported operand values for query
|
||||
:attr:`FundQuery.valid_values <yfinance.FundQuery.valid_values>`
|
||||
supported `EQ query operand parameters`
|
||||
|
||||
22
doc/source/reference/yfinance.search.rst
Normal file
22
doc/source/reference/yfinance.search.rst
Normal file
@@ -0,0 +1,22 @@
|
||||
=====================
|
||||
Search & News
|
||||
=====================
|
||||
|
||||
.. currentmodule:: yfinance
|
||||
|
||||
|
||||
Class
|
||||
------------
|
||||
The `Search` module, allows you to access search data in a Pythonic way.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
|
||||
Search
|
||||
|
||||
Search Sample Code
|
||||
------------------
|
||||
The `Search` module, allows you to access search data in a Pythonic way.
|
||||
|
||||
.. literalinclude:: examples/search.py
|
||||
:language: python
|
||||
32
doc/source/reference/yfinance.sector_industry.rst
Normal file
32
doc/source/reference/yfinance.sector_industry.rst
Normal file
@@ -0,0 +1,32 @@
|
||||
=======================
|
||||
Sector and Industry
|
||||
=======================
|
||||
|
||||
.. currentmodule:: yfinance
|
||||
|
||||
Sector class
|
||||
--------------
|
||||
The `Sector` and `Industry` modules provide access to the Sector and Industry information.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
Sector
|
||||
Industry
|
||||
|
||||
.. seealso::
|
||||
:attr:`Sector.industries <yfinance.Sector.industries>`
|
||||
Map of sector and industry
|
||||
|
||||
Sample Code
|
||||
---------------------
|
||||
To initialize, use the relevant sector or industry key as below.
|
||||
|
||||
.. literalinclude:: examples/sector_industry.py
|
||||
:language: python
|
||||
|
||||
The modules can be chained with Ticker as below.
|
||||
|
||||
.. literalinclude:: examples/sector_industry_ticker.py
|
||||
:language: python
|
||||
50
doc/source/reference/yfinance.stock.rst
Normal file
50
doc/source/reference/yfinance.stock.rst
Normal file
@@ -0,0 +1,50 @@
|
||||
=====
|
||||
Stock
|
||||
=====
|
||||
|
||||
.. currentmodule:: yfinance.Ticker
|
||||
|
||||
Ticker stock methods
|
||||
--------------------
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
get_isin
|
||||
isin
|
||||
|
||||
history
|
||||
|
||||
.. seealso::
|
||||
:meth:`yfinance.scrapers.history.PriceHistory.history`
|
||||
Documentation for history
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
:recursive:
|
||||
|
||||
get_history_metadata
|
||||
|
||||
get_dividends
|
||||
dividends
|
||||
|
||||
get_splits
|
||||
splits
|
||||
|
||||
get_actions
|
||||
actions
|
||||
|
||||
get_capital_gains
|
||||
capital_gains
|
||||
|
||||
get_shares_full
|
||||
|
||||
get_info
|
||||
info
|
||||
|
||||
get_fast_info
|
||||
fast_info
|
||||
|
||||
get_news
|
||||
news
|
||||
46
doc/source/reference/yfinance.ticker_tickers.rst
Normal file
46
doc/source/reference/yfinance.ticker_tickers.rst
Normal file
@@ -0,0 +1,46 @@
|
||||
=====================
|
||||
Ticker and Tickers
|
||||
=====================
|
||||
|
||||
.. currentmodule:: yfinance
|
||||
|
||||
|
||||
Class
|
||||
------------
|
||||
The `Ticker` module, allows you to access ticker data in a Pythonic way.
|
||||
|
||||
.. autosummary::
|
||||
:toctree: api/
|
||||
|
||||
Ticker
|
||||
Tickers
|
||||
|
||||
|
||||
Ticker Sample Code
|
||||
------------------
|
||||
The `Ticker` module, allows you to access ticker data in a Pythonic way.
|
||||
|
||||
.. literalinclude:: examples/ticker.py
|
||||
:language: python
|
||||
|
||||
To initialize multiple `Ticker` objects, use
|
||||
|
||||
.. literalinclude:: examples/tickers.py
|
||||
:language: python
|
||||
|
||||
For tickers that are ETFs/Mutual Funds, `Ticker.funds_data` provides access to fund related data.
|
||||
|
||||
Funds' Top Holdings and other data with category average is returned as `pd.DataFrame`.
|
||||
|
||||
.. literalinclude:: examples/funds_data.py
|
||||
:language: python
|
||||
|
||||
If you want to use a proxy server for downloading data, use:
|
||||
|
||||
.. literalinclude:: examples/proxy.py
|
||||
:language: python
|
||||
|
||||
To initialize multiple `Ticker` objects, use `Tickers` module
|
||||
|
||||
.. literalinclude:: examples/tickers.py
|
||||
:language: python
|
||||
@@ -1,5 +1,5 @@
|
||||
{% set name = "yfinance" %}
|
||||
{% set version = "0.2.46" %}
|
||||
{% set version = "0.2.53" %}
|
||||
|
||||
package:
|
||||
name: "{{ name|lower }}"
|
||||
|
||||
19
mkdocs.yml
19
mkdocs.yml
@@ -1,19 +0,0 @@
|
||||
# site_name: My Docs
|
||||
|
||||
# # mkdocs.yml
|
||||
# theme:
|
||||
# name: "material"
|
||||
|
||||
# plugins:
|
||||
# - search
|
||||
# - mkdocstrings
|
||||
|
||||
# nav:
|
||||
# - Introduction: 'index.md'
|
||||
# - Installation: 'installation.md'
|
||||
# - Quick Start: 'quickstart.md'
|
||||
# # - Ticker: 'Ticker.md'
|
||||
# - TickerBase: 'TickerBase.md'
|
||||
# # - Tickers: 'Tickers.md'
|
||||
# - utils: 'utils.md'
|
||||
# - multi: 'multi.md'
|
||||
@@ -2,10 +2,11 @@ pandas>=1.3.0
|
||||
numpy>=1.16.5
|
||||
requests>=2.31
|
||||
multitasking>=0.0.7
|
||||
lxml>=4.9.1
|
||||
platformdirs>=2.0.0
|
||||
pytz>=2022.5
|
||||
frozendict>=2.3.4
|
||||
beautifulsoup4>=4.11.1
|
||||
html5lib>=1.1
|
||||
peewee>=3.16.2
|
||||
requests_cache>=1.0
|
||||
requests_ratelimiter>=0.3.1
|
||||
scipy>=1.6.3
|
||||
4
setup.py
4
setup.py
@@ -61,9 +61,9 @@ setup(
|
||||
packages=find_packages(exclude=['contrib', 'docs', 'tests', 'examples']),
|
||||
install_requires=['pandas>=1.3.0', 'numpy>=1.16.5',
|
||||
'requests>=2.31', 'multitasking>=0.0.7',
|
||||
'lxml>=4.9.1', 'platformdirs>=2.0.0', 'pytz>=2022.5',
|
||||
'platformdirs>=2.0.0', 'pytz>=2022.5',
|
||||
'frozendict>=2.3.4', 'peewee>=3.16.2',
|
||||
'beautifulsoup4>=4.11.1', 'html5lib>=1.1'],
|
||||
'beautifulsoup4>=4.11.1'],
|
||||
extras_require={
|
||||
'nospam': ['requests_cache>=1.0', 'requests_ratelimiter>=0.3.1'],
|
||||
'repair': ['scipy>=1.6.3'],
|
||||
|
||||
@@ -5,9 +5,7 @@ import datetime as _dt
|
||||
import sys
|
||||
import os
|
||||
import yfinance
|
||||
from requests import Session
|
||||
from requests_cache import CacheMixin, SQLiteCache
|
||||
from requests_ratelimiter import LimiterMixin, MemoryQueueBucket
|
||||
from requests_ratelimiter import LimiterSession
|
||||
from pyrate_limiter import Duration, RequestRate, Limiter
|
||||
|
||||
_parent_dp = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
||||
@@ -27,19 +25,21 @@ if os.path.isdir(testing_cache_dirpath):
|
||||
import shutil
|
||||
shutil.rmtree(testing_cache_dirpath)
|
||||
|
||||
|
||||
# Setup a session to rate-limit and cache persistently:
|
||||
class CachedLimiterSession(CacheMixin, LimiterMixin, Session):
|
||||
pass
|
||||
history_rate = RequestRate(1, Duration.SECOND*2)
|
||||
# Setup a session to only rate-limit
|
||||
history_rate = RequestRate(1, Duration.SECOND)
|
||||
limiter = Limiter(history_rate)
|
||||
cache_fp = os.path.join(testing_cache_dirpath, "unittests-cache")
|
||||
session_gbl = CachedLimiterSession(
|
||||
limiter=limiter,
|
||||
bucket_class=MemoryQueueBucket,
|
||||
backend=SQLiteCache(cache_fp, expire_after=_dt.timedelta(hours=1)),
|
||||
)
|
||||
# Use this instead if only want rate-limiting:
|
||||
# from requests_ratelimiter import LimiterSession
|
||||
# session_gbl = LimiterSession(limiter=limiter)
|
||||
session_gbl = LimiterSession(limiter=limiter)
|
||||
|
||||
# Use this instead if you also want caching:
|
||||
# from requests_cache import CacheMixin, SQLiteCache
|
||||
# from requests_ratelimiter import LimiterMixin
|
||||
# from requests import Session
|
||||
# from pyrate_limiter import MemoryQueueBucket
|
||||
# class CachedLimiterSession(CacheMixin, LimiterMixin, Session):
|
||||
# pass
|
||||
# cache_fp = os.path.join(testing_cache_dirpath, "unittests-cache")
|
||||
# session_gbl = CachedLimiterSession(
|
||||
# limiter=limiter,
|
||||
# bucket_class=MemoryQueueBucket,
|
||||
# backend=SQLiteCache(cache_fp, expire_after=_dt.timedelta(hours=1)),
|
||||
# )
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,391 +1,391 @@
|
||||
Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gains,Repaired?
|
||||
2022-01-04 00:00:00+00:00,0.6875,0.6940000152587891,0.675,0.6875,0.5880703675715848,14877,0.0,0.0,0.0,True
|
||||
2022-01-05 00:00:00+00:00,0.6875,0.6751000213623047,0.675,0.6875,0.5880703675715848,15180,0.0,0.0,0.0,True
|
||||
2022-01-06 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-01-07 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-01-10 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-01-11 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-01-12 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-01-13 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-01-14 00:00:00+00:00,0.6875,0.6940000152587891,0.675,0.6875,0.5880703675715848,10268,0.0,0.0,0.0,True
|
||||
2022-01-17 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880703675715848,1004,0.0,0.0,0.0,True
|
||||
2022-01-18 00:00:00+00:00,0.6875,0.6940000152587891,0.675,0.6875,0.5880703675715848,15202,0.0,0.0,0.0,True
|
||||
2022-01-19 00:00:00+00:00,0.6875,0.675,0.67,0.6875,0.5880703675715848,26258,0.0,0.0,0.0,True
|
||||
2022-01-20 00:00:00+00:00,0.6875,0.675,0.675,0.6875,0.5880703675715848,11286,0.0,0.0,0.0,True
|
||||
2022-01-21 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880703675715848,653,0.0,0.0,0.0,True
|
||||
2022-01-24 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880703675715848,300,0.0,0.0,0.0,True
|
||||
2022-01-25 00:00:00+00:00,0.6875,0.67,0.67,0.6825,0.5837933928330346,18000,0.0,0.0,0.0,True
|
||||
2022-01-26 00:00:00+00:00,0.6825,0.6940000152587891,0.6940000152587891,0.6825,0.5837933928330346,1560,0.0,0.0,0.0,True
|
||||
2022-01-27 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.5837933928330346,1000,0.0,0.0,0.0,True
|
||||
2022-01-28 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.5837933928330346,5588,0.0,0.0,0.0,True
|
||||
2022-01-31 00:00:00+00:00,0.6825,0.6825,0.6825,0.6825,0.5837933928330346,0,0.0,0.0,0.0,True
|
||||
2022-02-01 00:00:00+00:00,0.6825,0.66,0.65,0.66,0.564547577937833,30612,0.0,0.0,0.0,True
|
||||
2022-02-02 00:00:00+00:00,0.66,0.65,0.65,0.66,0.564547577937833,9000,0.0,0.0,0.0,True
|
||||
2022-02-03 00:00:00+00:00,0.67,0.68,0.67,0.6775,0.5795166024261857,19301,0.0,0.0,0.0,True
|
||||
2022-02-04 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5795166024261857,29455,0.0,0.0,0.0,True
|
||||
2022-02-07 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5795166024261857,3125,0.0,0.0,0.0,True
|
||||
2022-02-08 00:00:00+00:00,0.6775,0.685,0.67,0.6775,0.5795166024261857,15202,0.0,0.0,0.0,True
|
||||
2022-02-09 00:00:00+00:00,0.6775,0.6775,0.6775,0.6775,0.5795166024261857,0,0.0,0.0,0.0,True
|
||||
2022-02-10 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5795166024261857,3506,0.0,0.0,0.0,True
|
||||
2022-02-11 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-02-14 00:00:00+00:00,0.6875,0.68,0.68,0.6875,0.5880703675715848,2461,0.0,0.0,0.0,True
|
||||
2022-02-15 00:00:00+00:00,0.6875,0.68,0.68,0.6875,0.5880703675715848,19756,0.0,0.0,0.0,True
|
||||
2022-02-16 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-02-17 00:00:00+00:00,0.6875,0.6825,0.6825,0.6875,0.5880703675715848,7275,0.0,0.0,0.0,True
|
||||
2022-02-18 00:00:00+00:00,0.6875,0.68,0.675,0.6875,0.5880703675715848,45627,0.0,0.0,0.0,True
|
||||
2022-02-21 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-02-22 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-02-23 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-02-24 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880703675715848,14323,0.0,0.0,0.0,True
|
||||
2022-02-25 00:00:00+00:00,0.6875,0.6827999877929688,0.6827999877929688,0.6875,0.5880703675715848,28473,0.0,0.0,0.0,True
|
||||
2022-02-28 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-01 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-02 00:00:00+00:00,0.6875,0.6825,0.6825,0.6875,0.5880703675715848,1559,0.0,0.0,0.0,True
|
||||
2022-03-03 00:00:00+00:00,0.6875,0.67,0.67,0.6875,0.5880703675715848,1524,0.0,0.0,0.0,True
|
||||
2022-03-04 00:00:00+00:00,0.6875,0.6809999847412109,0.6809999847412109,0.6875,0.5880703675715848,718,0.0,0.0,0.0,True
|
||||
2022-03-07 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-08 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-09 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-10 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-11 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-14 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-15 00:00:00+00:00,0.6875,0.68,0.65,0.6875,0.5880703675715848,1430,0.0,0.0,0.0,True
|
||||
2022-03-16 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-17 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880703675715848,0,0.0,0.0,0.0,True
|
||||
2022-03-18 00:00:00+00:00,0.665,0.655,0.655,0.66,0.564547577937833,2500,0.0,0.0,0.0,True
|
||||
2022-03-21 00:00:00+00:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-03-22 00:00:00+00:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-03-23 00:00:00+00:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-03-24 00:00:00+00:00,0.66,0.65,0.65,0.66,0.564547577937833,24314,0.0,0.0,0.0,True
|
||||
2022-03-25 00:00:00+00:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-03-28 00:00:00+01:00,0.66,0.6552999877929687,0.6552999877929687,0.66,0.564547577937833,16749,0.0,0.0,0.0,True
|
||||
2022-03-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-03-30 00:00:00+01:00,0.66,0.665,0.65,0.66,0.564547577937833,38438,0.0,0.0,0.0,True
|
||||
2022-03-31 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-04-01 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-04-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-04-05 00:00:00+01:00,0.66,0.66,0.65,0.66,0.564547577937833,16181,0.0,0.0,0.0,True
|
||||
2022-04-06 00:00:00+01:00,0.66,0.65,0.65,0.66,0.564547577937833,672,0.0,0.0,0.0,True
|
||||
2022-04-07 00:00:00+01:00,0.66,0.66,0.6501000213623047,0.66,0.564547577937833,55267,0.0,0.0,0.0,True
|
||||
2022-04-08 00:00:00+01:00,0.66,0.6598000335693359,0.6598000335693359,0.66,0.564547577937833,1496,0.0,0.0,0.0,True
|
||||
2022-04-11 00:00:00+01:00,0.66,0.659000015258789,0.65,0.66,0.564547577937833,10068,0.0,0.0,0.0,True
|
||||
2022-04-12 00:00:00+01:00,0.66,0.6588999938964843,0.6588999938964843,0.66,0.564547577937833,7588,0.0,0.0,0.0,True
|
||||
2022-04-13 00:00:00+01:00,0.66,0.658499984741211,0.658499984741211,0.66,0.564547577937833,1511,0.0,0.0,0.0,True
|
||||
2022-04-14 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-04-19 00:00:00+01:00,0.66,0.6583999633789063,0.65,0.66,0.564547577937833,12524,0.0,0.0,0.0,True
|
||||
2022-04-20 00:00:00+01:00,0.66,0.6583999633789063,0.6583999633789063,0.66,0.564547577937833,580,0.0,0.0,0.0,True
|
||||
2022-04-21 00:00:00+01:00,0.66,0.6583999633789063,0.64,0.66,0.564547577937833,22992,0.0,0.0,0.0,True
|
||||
2022-04-22 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-04-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-04-26 00:00:00+01:00,0.66,0.6580000305175782,0.6580000305175782,0.66,0.564547577937833,1500,0.0,0.0,0.0,True
|
||||
2022-04-27 00:00:00+01:00,0.66,0.64,0.64,0.66,0.564547577937833,17000,0.0,0.0,0.0,True
|
||||
2022-04-28 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-04-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-03 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-05 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.564547577937833,5000,0.0,0.0,0.0,True
|
||||
2022-05-06 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-09 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-10 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-11 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.564547577937833,20230,0.0,0.0,0.0,True
|
||||
2022-05-12 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-13 00:00:00+01:00,0.66,0.6573999786376953,0.6573999786376953,0.66,0.564547577937833,7567,0.0,0.0,0.0,True
|
||||
2022-05-16 00:00:00+01:00,0.66,0.65,0.65,0.66,0.564547577937833,5842,0.0,0.0,0.0,True
|
||||
2022-05-17 00:00:00+01:00,0.66,0.65,0.65,0.66,0.564547577937833,27137,0.0,0.0,0.0,True
|
||||
2022-05-18 00:00:00+01:00,0.66,0.65,0.65,0.66,0.564547577937833,24000,0.0,0.0,0.0,True
|
||||
2022-05-19 00:00:00+01:00,0.66,0.6569999694824219,0.635,0.66,0.564547577937833,10757,0.0,0.0,0.0,True
|
||||
2022-05-20 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-23 00:00:00+01:00,0.66,0.6558000183105469,0.6558000183105469,0.66,0.564547577937833,1517,0.0,0.0,0.0,True
|
||||
2022-05-24 00:00:00+01:00,0.66,0.635,0.635,0.66,0.564547577937833,13072,0.0,0.0,0.0,True
|
||||
2022-05-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.564547577937833,0,0.0,0.0,0.0,True
|
||||
2022-05-26 00:00:00+01:00,0.66,0.64,0.64,0.655,0.5602706400656228,7206,0.0,0.0,0.0,True
|
||||
2022-05-27 00:00:00+01:00,0.655,0.655,0.655,0.655,0.5602706400656228,0,0.0,0.0,0.0,True
|
||||
2022-05-30 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5602706400656228,5000,0.0,0.0,0.0,True
|
||||
2022-05-31 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5602706400656228,1518,0.0,0.0,0.0,True
|
||||
2022-06-01 00:00:00+01:00,0.655,0.65,0.65,0.645,0.5517169486529044,1,0.0,0.0,0.0,True
|
||||
2022-06-06 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5517169486529044,15500,0.0,0.0,0.0,True
|
||||
2022-06-07 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5517169486529044,1004,0.0,0.0,0.0,True
|
||||
2022-06-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-09 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5517169486529044,8341,0.0,0.0,0.0,True
|
||||
2022-06-10 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-14 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5517169486529044,31092,0.0,0.0,0.0,True
|
||||
2022-06-15 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-16 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-17 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-20 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-21 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-22 00:00:00+01:00,0.645,0.6498000335693359,0.64,0.645,0.5517169486529044,189418,0.0,0.0,0.0,True
|
||||
2022-06-23 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-24 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-27 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-28 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5517169486529044,2500,0.0,0.0,0.0,True
|
||||
2022-06-29 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-06-30 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-01 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-04 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-05 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-06 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-07 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-11 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-12 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-14 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517169486529044,0,0.0,0.0,0.0,True
|
||||
2022-07-15 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-07-18 00:00:00+01:00,0.6375000000000001,0.64,0.6388000106811523,0.6375000000000001,0.5453015787109297,31351,0.0,0.0,0.0,True
|
||||
2022-07-19 00:00:00+01:00,0.6375000000000001,0.65,0.63,0.6375000000000001,0.5453015787109297,38011,0.0,0.0,0.0,True
|
||||
2022-07-20 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-07-21 00:00:00+01:00,0.62,0.62,0.62,0.62,0.5475093195004799,0,0.02,0.0,0.0,True
|
||||
2022-07-22 00:00:00+01:00,0.62,0.6,0.6,0.6175,0.5453015787109297,3600,0.0,0.0,0.0,True
|
||||
2022-07-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-07-26 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5453015787109297,5000,0.0,0.0,0.0,True
|
||||
2022-07-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-07-28 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5453015787109297,2288,0.0,0.0,0.0,True
|
||||
2022-07-29 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453015787109297,2909,0.0,0.0,0.0,True
|
||||
2022-08-01 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-02 00:00:00+01:00,0.6175,0.62,0.605,0.6175,0.5453015787109297,17150,0.0,0.0,0.0,True
|
||||
2022-08-03 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-04 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453015787109297,200,0.0,0.0,0.0,True
|
||||
2022-08-05 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453015787109297,15000,0.0,0.0,0.0,True
|
||||
2022-08-08 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5453015787109297,4797,0.0,0.0,0.0,True
|
||||
2022-08-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-10 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453015787109297,30000,0.0,0.0,0.0,True
|
||||
2022-08-11 00:00:00+01:00,0.6175,0.6197999954223633,0.6075,0.6175,0.5453015787109297,25000,0.0,0.0,0.0,True
|
||||
2022-08-12 00:00:00+01:00,0.6175,0.6195000076293945,0.6195000076293945,0.6175,0.5453015787109297,1195,0.0,0.0,0.0,True
|
||||
2022-08-15 00:00:00+01:00,0.6175,0.6190999984741211,0.6190999984741211,0.6175,0.5453015787109297,3,0.0,0.0,0.0,True
|
||||
2022-08-16 00:00:00+01:00,0.6175,0.6187799835205078,0.6187799835205078,0.6175,0.5453015787109297,148,0.0,0.0,0.0,True
|
||||
2022-08-17 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-18 00:00:00+01:00,0.6175,0.6086999893188477,0.6086999893188477,0.6175,0.5453015787109297,112147,0.0,0.0,0.0,True
|
||||
2022-08-19 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-23 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5453015787109297,13403,0.0,0.0,0.0,True
|
||||
2022-08-24 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5453015787109297,3509,0.0,0.0,0.0,True
|
||||
2022-08-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-26 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-08-31 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-01 00:00:00+01:00,0.6175,0.6176200103759766,0.6176200103759766,0.6175,0.5453015787109297,233,0.0,0.0,0.0,True
|
||||
2022-09-02 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5453015787109297,3879,0.0,0.0,0.0,True
|
||||
2022-09-05 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-06 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-07 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-08 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-12 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-13 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-14 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-15 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5453015787109297,175,0.0,0.0,0.0,True
|
||||
2022-09-16 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-20 00:00:00+01:00,0.6175,0.617599983215332,0.617599983215332,0.6175,0.5453015787109297,32400,0.0,0.0,0.0,True
|
||||
2022-09-21 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-23 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-26 00:00:00+01:00,0.6175,0.617599983215332,0.6054999923706055,0.6054999923706055,0.5347046441191305,12005,0.0,0.0,0.0,True
|
||||
2022-09-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-28 00:00:00+01:00,0.6175,0.6136999893188476,0.6086999893188477,0.6175,0.5453015787109297,58251,0.0,0.0,0.0,True
|
||||
2022-09-29 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-09-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453015787109297,0,0.0,0.0,0.0,True
|
||||
2022-10-03 00:00:00+01:00,0.6175,0.6,0.59,0.61,0.5386784669413001,22000,0.0,0.0,0.0,True
|
||||
2022-10-04 00:00:00+01:00,0.61,0.595,0.585,0.61,0.5386784669413001,38754,0.0,0.0,0.0,True
|
||||
2022-10-05 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5386784669413001,0,0.0,0.0,0.0,True
|
||||
2022-10-06 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5386784669413001,0,0.0,0.0,0.0,True
|
||||
2022-10-07 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5386784669413001,0,0.0,0.0,0.0,True
|
||||
2022-10-10 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5386784669413001,0,0.0,0.0,0.0,True
|
||||
2022-10-11 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5386784669413001,0,0.0,0.0,0.0,True
|
||||
2022-10-12 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5386784669413001,0,0.0,0.0,0.0,True
|
||||
2022-10-13 00:00:00+01:00,0.61,0.58,0.58,0.605,0.5342631328275609,1000,0.0,0.0,0.0,True
|
||||
2022-10-14 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342631328275609,0,0.0,0.0,0.0,True
|
||||
2022-10-17 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342631328275609,0,0.0,0.0,0.0,True
|
||||
2022-10-18 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342631328275609,0,0.0,0.0,0.0,True
|
||||
2022-10-19 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342631328275609,0,0.0,0.0,0.0,True
|
||||
2022-10-20 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-10-21 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-10-24 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5298477249811411,315,0.0,0.0,0.0,True
|
||||
2022-10-25 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-10-26 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-10-27 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5298477249811411,171,0.0,0.0,0.0,True
|
||||
2022-10-28 00:00:00+01:00,0.6,0.6,0.59,0.6,0.5298477249811411,8289,0.0,0.0,0.0,True
|
||||
2022-10-31 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-01 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-02 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-03 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-04 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-07 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-08 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-09 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-10 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-11 00:00:00+00:00,0.6,0.6,0.5725,0.6,0.5298477249811411,31003,0.0,0.0,0.0,True
|
||||
2022-11-14 00:00:00+00:00,0.6,0.5725,0.5725,0.6,0.5298477249811411,3249,0.0,0.0,0.0,True
|
||||
2022-11-15 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-16 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-17 00:00:00+00:00,0.6,0.5990000152587891,0.5990000152587891,0.6,0.5298477249811411,16000,0.0,0.0,0.0,True
|
||||
2022-11-18 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-21 00:00:00+00:00,0.6025,0.5725,0.5725,0.6,0.5298477249811411,4785,0.0,0.0,0.0,True
|
||||
2022-11-22 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-23 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-24 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-25 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-11-28 00:00:00+00:00,0.6,0.6040000152587891,0.59,0.6,0.5298477249811411,20750,0.0,0.0,0.0,True
|
||||
2022-11-29 00:00:00+00:00,0.6,0.59,0.59,0.6,0.5298477249811411,26354,0.0,0.0,0.0,True
|
||||
2022-11-30 00:00:00+00:00,0.6,0.6038000106811524,0.6038000106811524,0.6,0.5298477249811411,227,0.0,0.0,0.0,True
|
||||
2022-12-01 00:00:00+00:00,0.6,0.5983000183105469,0.59,0.6,0.5298477249811411,819097,0.0,0.0,0.0,True
|
||||
2022-12-02 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-12-05 00:00:00+00:00,0.6,0.6,0.59,0.6,0.5298477249811411,67809,0.0,0.0,0.0,True
|
||||
2022-12-06 00:00:00+00:00,0.6,0.6038000106811524,0.6038000106811524,0.6,0.5298477249811411,18000,0.0,0.0,0.0,True
|
||||
2022-12-07 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5298477249811411,0,0.0,0.0,0.0,True
|
||||
2022-12-08 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.02,0.0,0.0,True
|
||||
2022-12-09 00:00:00+00:00,0.585,0.57125,0.5700000000000001,0.585,0.5344153539467067,18119,0.0,0.0,0.0,True
|
||||
2022-12-12 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344153539467067,8300,0.0,0.0,0.0,True
|
||||
2022-12-13 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5344153539467067,4797,0.0,0.0,0.0,True
|
||||
2022-12-14 00:00:00+00:00,0.585,0.5712799835205078,0.5711999893188476,0.585,0.5344153539467067,7000,0.0,0.0,0.0,True
|
||||
2022-12-15 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2022-12-16 00:00:00+00:00,0.585,0.5712799835205078,0.5700000000000001,0.585,0.5344153539467067,31125,0.0,0.0,0.0,True
|
||||
2022-12-19 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5344153539467067,8500,0.0,0.0,0.0,True
|
||||
2022-12-20 00:00:00+00:00,0.585,0.5793000030517578,0.5793000030517578,0.585,0.5344153539467067,94265,0.0,0.0,0.0,True
|
||||
2022-12-21 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5344153539467067,8475,0.0,0.0,0.0,True
|
||||
2022-12-22 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344153539467067,320,0.0,0.0,0.0,True
|
||||
2022-12-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2022-12-28 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5344153539467067,12452,0.0,0.0,0.0,True
|
||||
2022-12-29 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5344153539467067,1228,0.0,0.0,0.0,True
|
||||
2022-12-30 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2023-01-03 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5344153539467067,25461,0.0,0.0,0.0,True
|
||||
2023-01-04 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2023-01-05 00:00:00+00:00,0.585,0.5906999969482422,0.5720000076293945,0.585,0.5344153539467067,9855,0.0,0.0,0.0,True
|
||||
2023-01-06 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5344153539467067,1500,0.0,0.0,0.0,True
|
||||
2023-01-09 00:00:00+00:00,0.585,0.5702999877929688,0.5702999877929688,0.585,0.5344153539467067,9101,0.0,0.0,0.0,True
|
||||
2023-01-10 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344153539467067,20891,0.0,0.0,0.0,True
|
||||
2023-01-11 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2023-01-12 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2023-01-13 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5344153539467067,8881,0.0,0.0,0.0,True
|
||||
2023-01-16 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344153539467067,1271,0.0,0.0,0.0,True
|
||||
2023-01-17 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5344153539467067,20064,0.0,0.0,0.0,True
|
||||
2023-01-18 00:00:00+00:00,0.585,0.5700000000000001,0.56,0.585,0.5344153539467067,3709,0.0,0.0,0.0,True
|
||||
2023-01-19 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2023-01-20 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344153539467067,1225,0.0,0.0,0.0,True
|
||||
2023-01-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2023-01-24 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344153539467067,10000,0.0,0.0,0.0,True
|
||||
2023-01-25 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344153539467067,2706,0.0,0.0,0.0,True
|
||||
2023-01-26 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344153539467067,2076,0.0,0.0,0.0,True
|
||||
2023-01-27 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344153539467067,0,0.0,0.0,0.0,True
|
||||
2023-01-30 00:00:00+00:00,0.585,0.555,0.555,0.58,0.5298477618474814,20247,0.0,0.0,0.0,True
|
||||
2023-01-31 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.5298477618474814,10000,0.0,0.0,0.0,True
|
||||
2023-02-01 00:00:00+00:00,0.58,0.55,0.55,0.58,0.5298477618474814,10644,0.0,0.0,0.0,True
|
||||
2023-02-02 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5298477618474814,0,0.0,0.0,0.0,True
|
||||
2023-02-03 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.5298477618474814,1228,0.0,0.0,0.0,True
|
||||
2023-02-06 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5298477618474814,0,0.0,0.0,0.0,True
|
||||
2023-02-07 00:00:00+00:00,0.58,0.555,0.555,0.58,0.5298477618474814,2500,0.0,0.0,0.0,True
|
||||
2023-02-08 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5298477618474814,0,0.0,0.0,0.0,True
|
||||
2023-02-09 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5298477618474814,0,0.0,0.0,0.0,True
|
||||
2023-02-10 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5298477618474814,0,0.0,0.0,0.0,True
|
||||
2023-02-13 00:00:00+00:00,0.58,0.58,0.58,0.5750000000000001,0.5252800960155755,12276,0.0,0.0,0.0,True
|
||||
2023-02-14 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.5252800960155755,4049,0.0,0.0,0.0,True
|
||||
2023-02-15 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.5252800960155755,5000,0.0,0.0,0.0,True
|
||||
2023-02-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-02-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-02-20 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.5252800960155755,20123,0.0,0.0,0.0,True
|
||||
2023-02-21 00:00:00+00:00,0.5750000000000001,0.5668999862670898,0.56,0.5750000000000001,0.5252800960155755,413641,0.0,0.0,0.0,True
|
||||
2023-02-22 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5252800960155755,51462,0.0,0.0,0.0,True
|
||||
2023-02-23 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-02-24 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-02-27 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-02-28 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5252800960155755,21569,0.0,0.0,0.0,True
|
||||
2023-03-01 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5252800960155755,10000,0.0,0.0,0.0,True
|
||||
2023-03-02 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-03 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5252800960155755,7892,0.0,0.0,0.0,True
|
||||
2023-03-06 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.56,0.5750000000000001,0.5252800960155755,35268,0.0,0.0,0.0,True
|
||||
2023-03-07 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5252800960155755,13200,0.0,0.0,0.0,True
|
||||
2023-03-08 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-09 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5252800960155755,7663,0.0,0.0,0.0,True
|
||||
2023-03-10 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-13 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-14 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-15 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-20 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-21 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-22 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-23 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5252800960155755,17334,0.0,0.0,0.0,True
|
||||
2023-03-24 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5252800960155755,22500,0.0,0.0,0.0,True
|
||||
2023-03-27 00:00:00+01:00,0.5750000000000001,0.58,0.56,0.5750000000000001,0.5252800960155755,7206,0.0,0.0,0.0,True
|
||||
2023-03-28 00:00:00+01:00,0.5750000000000001,0.5718999862670898,0.5668999862670898,0.5750000000000001,0.5252800960155755,182252,0.0,0.0,0.0,True
|
||||
2023-03-29 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.5252800960155755,8118,0.0,0.0,0.0,True
|
||||
2023-03-30 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-03-31 00:00:00+01:00,0.5750000000000001,0.564900016784668,0.56,0.5750000000000001,0.5252800960155755,12159,0.0,0.0,0.0,True
|
||||
2023-04-03 00:00:00+01:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5252800960155755,9477,0.0,0.0,0.0,True
|
||||
2023-04-04 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-04-05 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-04-06 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5252800960155755,0,0.0,0.0,0.0,True
|
||||
2023-04-11 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.5252800960155755,16661,0.0,0.0,0.0,True
|
||||
2023-04-12 00:00:00+01:00,0.5750000000000001,0.535,0.535,0.5725,0.5229962262332822,12000,0.0,0.0,0.0,True
|
||||
2023-04-13 00:00:00+01:00,0.5725,0.56,0.56,0.5700000000000001,0.5207124301836694,1459,0.0,0.0,0.0,True
|
||||
2023-04-14 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207124301836694,7500,0.0,0.0,0.0,True
|
||||
2023-04-17 00:00:00+01:00,0.5700000000000001,0.569900016784668,0.569900016784668,0.5700000000000001,0.5207124301836694,5227,0.0,0.0,0.0,True
|
||||
2023-04-18 00:00:00+01:00,0.5700000000000001,0.5695000076293946,0.555,0.5700000000000001,0.5207124301836694,9687,0.0,0.0,0.0,True
|
||||
2023-04-19 00:00:00+01:00,0.5700000000000001,0.5695000076293946,0.5695000076293946,0.5700000000000001,0.5207124301836694,5231,0.0,0.0,0.0,True
|
||||
2023-04-20 00:00:00+01:00,0.5700000000000001,0.555,0.555,0.5700000000000001,0.5207124301836694,2938,0.0,0.0,0.0,True
|
||||
2023-04-21 00:00:00+01:00,0.5700000000000001,0.555,0.555,0.5700000000000001,0.5207124301836694,8199,0.0,0.0,0.0,True
|
||||
2023-04-24 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207124301836694,0,0.0,0.0,0.0,True
|
||||
2023-04-25 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207124301836694,0,0.0,0.0,0.0,True
|
||||
2023-04-26 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207124301836694,0,0.0,0.0,0.0,True
|
||||
2023-04-27 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207124301836694,0,0.0,0.0,0.0,True
|
||||
2023-04-28 00:00:00+01:00,0.5700000000000001,0.5679999923706055,0.5679999923706055,0.5700000000000001,0.5207124301836694,5141,0.0,0.0,0.0,True
|
||||
2023-05-02 00:00:00+01:00,0.5700000000000001,0.54,0.54,0.5650000000000001,0.5161447643517635,16905,0.0,0.0,0.0,True
|
||||
2023-05-03 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-04 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-05 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-09 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-10 00:00:00+01:00,0.5650000000000001,0.55,0.55,0.5650000000000001,0.5161447643517635,486,0.0,0.0,0.0,True
|
||||
2023-05-11 00:00:00+01:00,0.5650000000000001,0.5629999923706055,0.5629999923706055,0.5650000000000001,0.5161447643517635,4000,0.0,0.0,0.0,True
|
||||
2023-05-12 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.5650000000000001,0.5161447643517635,5720,0.0,0.0,0.0,True
|
||||
2023-05-15 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-16 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-17 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-18 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-19 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-22 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-23 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-24 00:00:00+01:00,0.5650000000000001,0.5608000183105469,0.5608000183105469,0.5650000000000001,0.5161447643517635,17250,0.0,0.0,0.0,True
|
||||
2023-05-25 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-26 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-30 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-05-31 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-01 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-02 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-05 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-06 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-07 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-08 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-09 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-12 00:00:00+01:00,0.5650000000000001,0.5608000183105469,0.5608000183105469,0.5650000000000001,0.5161447643517635,3750,0.0,0.0,0.0,True
|
||||
2023-06-13 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.5650000000000001,0.5161447643517635,4006,0.0,0.0,0.0,True
|
||||
2023-06-14 00:00:00+01:00,0.5650000000000001,0.5608000183105469,0.54,0.5650000000000001,0.5161447643517635,3597,0.0,0.0,0.0,True
|
||||
2023-06-15 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161447643517635,0,0.0,0.0,0.0,True
|
||||
2023-06-16 00:00:00+01:00,0.5825,0.585,0.585,0.5975,0.5458344816601314,1000,0.0,0.0,0.0,True
|
||||
2023-06-19 00:00:00+01:00,0.5975,0.585,0.585,0.5975,0.5458344816601314,12038,0.0,0.0,0.0,True
|
||||
2023-06-20 00:00:00+01:00,0.5975,0.5975,0.5975,0.5975,0.5458344816601314,0,0.0,0.0,0.0,True
|
||||
2023-06-21 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-06-22 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-06-23 00:00:00+01:00,0.6,0.585,0.585,0.6,0.5481183514424247,6482,0.0,0.0,0.0,True
|
||||
2023-06-26 00:00:00+01:00,0.6,0.585,0.585,0.6,0.5481183514424247,10884,0.0,0.0,0.0,True
|
||||
2023-06-27 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-06-28 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-06-29 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-06-30 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-07-03 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-07-04 00:00:00+01:00,0.6,0.6054000091552735,0.6054000091552735,0.6,0.5481183514424247,6557,0.0,0.0,0.0,True
|
||||
2023-07-05 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481183514424247,0,0.0,0.0,0.0,True
|
||||
2023-07-06 00:00:00+01:00,0.6,0.585,0.5802999877929688,0.595,0.5435506856105188,7299,0.0,0.0,0.0,True
|
||||
2023-07-07 00:00:00+01:00,0.595,0.5802999877929688,0.5802999877929688,0.595,0.5435506856105188,13000,0.0,0.0,0.0,True
|
||||
2023-07-10 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5435506856105188,0,0.0,0.0,0.0,True
|
||||
2023-07-11 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5435506856105188,0,0.0,0.0,0.0,True
|
||||
2023-07-12 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5435506856105188,0,0.0,0.0,0.0,True
|
||||
2023-07-13 00:00:00+01:00,0.595,0.6025,0.585,0.595,0.5435506856105188,372468,0.0,0.0,0.0,True
|
||||
2023-07-14 00:00:00+01:00,0.595,0.5700000000000001,0.5700000000000001,0.595,0.5435506856105188,1919,0.0,0.0,0.0,True
|
||||
2023-07-17 00:00:00+01:00,0.595,0.6025,0.6025,0.595,0.5435506856105188,3400,0.0,0.0,0.0,True
|
||||
2023-07-18 00:00:00+01:00,0.595,0.5650000000000001,0.5650000000000001,0.59,0.5389830197786127,14146,0.0,0.0,0.0,True
|
||||
2023-07-19 00:00:00+01:00,0.59,0.5970000076293945,0.5970000076293945,0.59,0.5389830197786127,1000,0.0,0.0,0.0,True
|
||||
2022-01-04 00:00:00+00:00,0.6875,0.6940000152587891,0.675,0.6875,0.5880744894644663,14877,0.0,0.0,0.0,True
|
||||
2022-01-05 00:00:00+00:00,0.6875,0.6751000213623047,0.675,0.6875,0.5880744894644663,15180,0.0,0.0,0.0,True
|
||||
2022-01-06 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-01-07 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-01-10 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-01-11 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-01-12 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-01-13 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-01-14 00:00:00+00:00,0.6875,0.6940000152587891,0.675,0.6875,0.5880744894644663,10268,0.0,0.0,0.0,True
|
||||
2022-01-17 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880744894644663,1004,0.0,0.0,0.0,True
|
||||
2022-01-18 00:00:00+00:00,0.6875,0.6940000152587891,0.675,0.6875,0.5880744894644663,15202,0.0,0.0,0.0,True
|
||||
2022-01-19 00:00:00+00:00,0.6875,0.675,0.67,0.6875,0.5880744894644663,26258,0.0,0.0,0.0,True
|
||||
2022-01-20 00:00:00+00:00,0.6875,0.675,0.675,0.6875,0.5880744894644663,11286,0.0,0.0,0.0,True
|
||||
2022-01-21 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880744894644663,653,0.0,0.0,0.0,True
|
||||
2022-01-24 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880744894644663,300,0.0,0.0,0.0,True
|
||||
2022-01-25 00:00:00+00:00,0.6875,0.67,0.67,0.6825,0.5837975584810143,18000,0.0,0.0,0.0,True
|
||||
2022-01-26 00:00:00+00:00,0.6825,0.6940000152587891,0.6940000152587891,0.6825,0.5837975584810143,1560,0.0,0.0,0.0,True
|
||||
2022-01-27 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.5837975584810143,1000,0.0,0.0,0.0,True
|
||||
2022-01-28 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.5837975584810143,5588,0.0,0.0,0.0,True
|
||||
2022-01-31 00:00:00+00:00,0.6825,0.6825,0.6825,0.6825,0.5837975584810143,0,0.0,0.0,0.0,True
|
||||
2022-02-01 00:00:00+00:00,0.6825,0.66,0.65,0.66,0.5645514243553786,30612,0.0,0.0,0.0,True
|
||||
2022-02-02 00:00:00+00:00,0.66,0.65,0.65,0.66,0.5645514243553786,9000,0.0,0.0,0.0,True
|
||||
2022-02-03 00:00:00+00:00,0.67,0.68,0.67,0.6775,0.5795207380973585,19301,0.0,0.0,0.0,True
|
||||
2022-02-04 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5795207380973585,29455,0.0,0.0,0.0,True
|
||||
2022-02-07 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5795207380973585,3125,0.0,0.0,0.0,True
|
||||
2022-02-08 00:00:00+00:00,0.6775,0.685,0.67,0.6775,0.5795207380973585,15202,0.0,0.0,0.0,True
|
||||
2022-02-09 00:00:00+00:00,0.6775,0.6775,0.6775,0.6775,0.5795207380973585,0,0.0,0.0,0.0,True
|
||||
2022-02-10 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5795207380973585,3506,0.0,0.0,0.0,True
|
||||
2022-02-11 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-02-14 00:00:00+00:00,0.6875,0.68,0.68,0.6875,0.5880744894644663,2461,0.0,0.0,0.0,True
|
||||
2022-02-15 00:00:00+00:00,0.6875,0.68,0.68,0.6875,0.5880744894644663,19756,0.0,0.0,0.0,True
|
||||
2022-02-16 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-02-17 00:00:00+00:00,0.6875,0.6825,0.6825,0.6875,0.5880744894644663,7275,0.0,0.0,0.0,True
|
||||
2022-02-18 00:00:00+00:00,0.6875,0.68,0.675,0.6875,0.5880744894644663,45627,0.0,0.0,0.0,True
|
||||
2022-02-21 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-02-22 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-02-23 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-02-24 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.5880744894644663,14323,0.0,0.0,0.0,True
|
||||
2022-02-25 00:00:00+00:00,0.6875,0.6827999877929688,0.6827999877929688,0.6875,0.5880744894644663,28473,0.0,0.0,0.0,True
|
||||
2022-02-28 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-01 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-02 00:00:00+00:00,0.6875,0.6825,0.6825,0.6875,0.5880744894644663,1559,0.0,0.0,0.0,True
|
||||
2022-03-03 00:00:00+00:00,0.6875,0.67,0.67,0.6875,0.5880744894644663,1524,0.0,0.0,0.0,True
|
||||
2022-03-04 00:00:00+00:00,0.6875,0.6809999847412109,0.6809999847412109,0.6875,0.5880744894644663,718,0.0,0.0,0.0,True
|
||||
2022-03-07 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-08 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-09 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-10 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-11 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-14 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-15 00:00:00+00:00,0.6875,0.68,0.65,0.6875,0.5880744894644663,1430,0.0,0.0,0.0,True
|
||||
2022-03-16 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-17 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.5880744894644663,0,0.0,0.0,0.0,True
|
||||
2022-03-18 00:00:00+00:00,0.665,0.655,0.655,0.66,0.5645514243553786,2500,0.0,0.0,0.0,True
|
||||
2022-03-21 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-03-22 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-03-23 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-03-24 00:00:00+00:00,0.66,0.65,0.65,0.66,0.5645514243553786,24314,0.0,0.0,0.0,True
|
||||
2022-03-25 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-03-28 00:00:00+01:00,0.66,0.6552999877929687,0.6552999877929687,0.66,0.5645514243553786,16749,0.0,0.0,0.0,True
|
||||
2022-03-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-03-30 00:00:00+01:00,0.66,0.665,0.65,0.66,0.5645514243553786,38438,0.0,0.0,0.0,True
|
||||
2022-03-31 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-04-01 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-04-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-04-05 00:00:00+01:00,0.66,0.66,0.65,0.66,0.5645514243553786,16181,0.0,0.0,0.0,True
|
||||
2022-04-06 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5645514243553786,672,0.0,0.0,0.0,True
|
||||
2022-04-07 00:00:00+01:00,0.66,0.66,0.6501000213623047,0.66,0.5645514243553786,55267,0.0,0.0,0.0,True
|
||||
2022-04-08 00:00:00+01:00,0.66,0.6598000335693359,0.6598000335693359,0.66,0.5645514243553786,1496,0.0,0.0,0.0,True
|
||||
2022-04-11 00:00:00+01:00,0.66,0.659000015258789,0.65,0.66,0.5645514243553786,10068,0.0,0.0,0.0,True
|
||||
2022-04-12 00:00:00+01:00,0.66,0.6588999938964843,0.6588999938964843,0.66,0.5645514243553786,7588,0.0,0.0,0.0,True
|
||||
2022-04-13 00:00:00+01:00,0.66,0.658499984741211,0.658499984741211,0.66,0.5645514243553786,1511,0.0,0.0,0.0,True
|
||||
2022-04-14 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-04-19 00:00:00+01:00,0.66,0.6583999633789063,0.65,0.66,0.5645514243553786,12524,0.0,0.0,0.0,True
|
||||
2022-04-20 00:00:00+01:00,0.66,0.6583999633789063,0.6583999633789063,0.66,0.5645514243553786,580,0.0,0.0,0.0,True
|
||||
2022-04-21 00:00:00+01:00,0.66,0.6583999633789063,0.64,0.66,0.5645514243553786,22992,0.0,0.0,0.0,True
|
||||
2022-04-22 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-04-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-04-26 00:00:00+01:00,0.66,0.6580000305175782,0.6580000305175782,0.66,0.5645514243553786,1500,0.0,0.0,0.0,True
|
||||
2022-04-27 00:00:00+01:00,0.66,0.64,0.64,0.66,0.5645514243553786,17000,0.0,0.0,0.0,True
|
||||
2022-04-28 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-04-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-03 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-05 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.5645514243553786,5000,0.0,0.0,0.0,True
|
||||
2022-05-06 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-09 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-10 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-11 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.5645514243553786,20230,0.0,0.0,0.0,True
|
||||
2022-05-12 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-13 00:00:00+01:00,0.66,0.6573999786376953,0.6573999786376953,0.66,0.5645514243553786,7567,0.0,0.0,0.0,True
|
||||
2022-05-16 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5645514243553786,5842,0.0,0.0,0.0,True
|
||||
2022-05-17 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5645514243553786,27137,0.0,0.0,0.0,True
|
||||
2022-05-18 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5645514243553786,24000,0.0,0.0,0.0,True
|
||||
2022-05-19 00:00:00+01:00,0.66,0.6569999694824219,0.635,0.66,0.5645514243553786,10757,0.0,0.0,0.0,True
|
||||
2022-05-20 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-23 00:00:00+01:00,0.66,0.6558000183105469,0.6558000183105469,0.66,0.5645514243553786,1517,0.0,0.0,0.0,True
|
||||
2022-05-24 00:00:00+01:00,0.66,0.635,0.635,0.66,0.5645514243553786,13072,0.0,0.0,0.0,True
|
||||
2022-05-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5645514243553786,0,0.0,0.0,0.0,True
|
||||
2022-05-26 00:00:00+01:00,0.66,0.64,0.64,0.655,0.5602746039717228,7206,0.0,0.0,0.0,True
|
||||
2022-05-27 00:00:00+01:00,0.655,0.655,0.655,0.655,0.5602746039717228,0,0.0,0.0,0.0,True
|
||||
2022-05-30 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5602746039717228,5000,0.0,0.0,0.0,True
|
||||
2022-05-31 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5602746039717228,1518,0.0,0.0,0.0,True
|
||||
2022-06-01 00:00:00+01:00,0.655,0.65,0.65,0.645,0.5517207420048189,1,0.0,0.0,0.0,True
|
||||
2022-06-06 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5517207420048189,15500,0.0,0.0,0.0,True
|
||||
2022-06-07 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5517207420048189,1004,0.0,0.0,0.0,True
|
||||
2022-06-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-09 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5517207420048189,8341,0.0,0.0,0.0,True
|
||||
2022-06-10 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-14 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5517207420048189,31092,0.0,0.0,0.0,True
|
||||
2022-06-15 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-16 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-17 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-20 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-21 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-22 00:00:00+01:00,0.645,0.6498000335693359,0.64,0.645,0.5517207420048189,189418,0.0,0.0,0.0,True
|
||||
2022-06-23 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-24 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-27 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-28 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5517207420048189,2500,0.0,0.0,0.0,True
|
||||
2022-06-29 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-06-30 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-01 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-04 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-05 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-06 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-07 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-11 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-12 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-14 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5517207420048189,0,0.0,0.0,0.0,True
|
||||
2022-07-15 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-07-18 00:00:00+01:00,0.6375000000000001,0.64,0.6388000106811523,0.6375000000000001,0.5453054376961378,31351,0.0,0.0,0.0,True
|
||||
2022-07-19 00:00:00+01:00,0.6375000000000001,0.65,0.63,0.6375000000000001,0.5453054376961378,38011,0.0,0.0,0.0,True
|
||||
2022-07-20 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-07-21 00:00:00+01:00,0.62,0.62,0.62,0.62,0.5475131570935486,0,0.02,0.0,0.0,True
|
||||
2022-07-22 00:00:00+01:00,0.62,0.6,0.6,0.6175,0.5453054376961378,3600,0.0,0.0,0.0,True
|
||||
2022-07-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-07-26 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5453054376961378,5000,0.0,0.0,0.0,True
|
||||
2022-07-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-07-28 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5453054376961378,2288,0.0,0.0,0.0,True
|
||||
2022-07-29 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453054376961378,2909,0.0,0.0,0.0,True
|
||||
2022-08-01 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-02 00:00:00+01:00,0.6175,0.62,0.605,0.6175,0.5453054376961378,17150,0.0,0.0,0.0,True
|
||||
2022-08-03 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-04 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453054376961378,200,0.0,0.0,0.0,True
|
||||
2022-08-05 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453054376961378,15000,0.0,0.0,0.0,True
|
||||
2022-08-08 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5453054376961378,4797,0.0,0.0,0.0,True
|
||||
2022-08-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-10 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5453054376961378,30000,0.0,0.0,0.0,True
|
||||
2022-08-11 00:00:00+01:00,0.6175,0.6197999954223633,0.6075,0.6175,0.5453054376961378,25000,0.0,0.0,0.0,True
|
||||
2022-08-12 00:00:00+01:00,0.6175,0.6195000076293945,0.6195000076293945,0.6175,0.5453054376961378,1195,0.0,0.0,0.0,True
|
||||
2022-08-15 00:00:00+01:00,0.6175,0.6190999984741211,0.6190999984741211,0.6175,0.5453054376961378,3,0.0,0.0,0.0,True
|
||||
2022-08-16 00:00:00+01:00,0.6175,0.6187799835205078,0.6187799835205078,0.6175,0.5453054376961378,148,0.0,0.0,0.0,True
|
||||
2022-08-17 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-18 00:00:00+01:00,0.6175,0.6086999893188477,0.6086999893188477,0.6175,0.5453054376961378,112147,0.0,0.0,0.0,True
|
||||
2022-08-19 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-23 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5453054376961378,13403,0.0,0.0,0.0,True
|
||||
2022-08-24 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5453054376961378,3509,0.0,0.0,0.0,True
|
||||
2022-08-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-26 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-08-31 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-01 00:00:00+01:00,0.6175,0.6176200103759766,0.6176200103759766,0.6175,0.5453054376961378,233,0.0,0.0,0.0,True
|
||||
2022-09-02 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5453054376961378,3879,0.0,0.0,0.0,True
|
||||
2022-09-05 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-06 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-07 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-08 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-12 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-13 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-14 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-15 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5453054376961378,175,0.0,0.0,0.0,True
|
||||
2022-09-16 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-20 00:00:00+01:00,0.6175,0.617599983215332,0.617599983215332,0.6175,0.5453054376961378,32400,0.0,0.0,0.0,True
|
||||
2022-09-21 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-23 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-26 00:00:00+01:00,0.6175,0.617599983215332,0.6054999923706055,0.6054999923706055,0.5347084288284838,12005,0.0,0.0,0.0,True
|
||||
2022-09-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-28 00:00:00+01:00,0.6175,0.6136999893188476,0.6086999893188477,0.6175,0.5453054376961378,58251,0.0,0.0,0.0,True
|
||||
2022-09-29 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-09-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5453054376961378,0,0.0,0.0,0.0,True
|
||||
2022-10-03 00:00:00+01:00,0.6175,0.6,0.59,0.61,0.538682279503905,22000,0.0,0.0,0.0,True
|
||||
2022-10-04 00:00:00+01:00,0.61,0.595,0.585,0.61,0.538682279503905,38754,0.0,0.0,0.0,True
|
||||
2022-10-05 00:00:00+01:00,0.61,0.61,0.61,0.61,0.538682279503905,0,0.0,0.0,0.0,True
|
||||
2022-10-06 00:00:00+01:00,0.61,0.61,0.61,0.61,0.538682279503905,0,0.0,0.0,0.0,True
|
||||
2022-10-07 00:00:00+01:00,0.61,0.61,0.61,0.61,0.538682279503905,0,0.0,0.0,0.0,True
|
||||
2022-10-10 00:00:00+01:00,0.61,0.61,0.61,0.61,0.538682279503905,0,0.0,0.0,0.0,True
|
||||
2022-10-11 00:00:00+01:00,0.61,0.61,0.61,0.61,0.538682279503905,0,0.0,0.0,0.0,True
|
||||
2022-10-12 00:00:00+01:00,0.61,0.61,0.61,0.61,0.538682279503905,0,0.0,0.0,0.0,True
|
||||
2022-10-13 00:00:00+01:00,0.61,0.58,0.58,0.605,0.5342668775756819,1000,0.0,0.0,0.0,True
|
||||
2022-10-14 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342668775756819,0,0.0,0.0,0.0,True
|
||||
2022-10-17 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342668775756819,0,0.0,0.0,0.0,True
|
||||
2022-10-18 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342668775756819,0,0.0,0.0,0.0,True
|
||||
2022-10-19 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5342668775756819,0,0.0,0.0,0.0,True
|
||||
2022-10-20 00:00:00+01:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-10-21 00:00:00+01:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-10-24 00:00:00+01:00,0.6,0.6,0.6,0.6,0.52985143878086,315,0.0,0.0,0.0,True
|
||||
2022-10-25 00:00:00+01:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-10-26 00:00:00+01:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-10-27 00:00:00+01:00,0.6,0.6,0.6,0.6,0.52985143878086,171,0.0,0.0,0.0,True
|
||||
2022-10-28 00:00:00+01:00,0.6,0.6,0.59,0.6,0.52985143878086,8289,0.0,0.0,0.0,True
|
||||
2022-10-31 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-01 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-02 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-03 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-04 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-07 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-08 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-09 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-10 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-11 00:00:00+00:00,0.6,0.6,0.5725,0.6,0.52985143878086,31003,0.0,0.0,0.0,True
|
||||
2022-11-14 00:00:00+00:00,0.6,0.5725,0.5725,0.6,0.52985143878086,3249,0.0,0.0,0.0,True
|
||||
2022-11-15 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-16 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-17 00:00:00+00:00,0.6,0.5990000152587891,0.5990000152587891,0.6,0.52985143878086,16000,0.0,0.0,0.0,True
|
||||
2022-11-18 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-21 00:00:00+00:00,0.6025,0.5725,0.5725,0.6,0.52985143878086,4785,0.0,0.0,0.0,True
|
||||
2022-11-22 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-23 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-24 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-25 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-11-28 00:00:00+00:00,0.6,0.6040000152587891,0.59,0.6,0.52985143878086,20750,0.0,0.0,0.0,True
|
||||
2022-11-29 00:00:00+00:00,0.6,0.59,0.59,0.6,0.52985143878086,26354,0.0,0.0,0.0,True
|
||||
2022-11-30 00:00:00+00:00,0.6,0.6038000106811524,0.6038000106811524,0.6,0.52985143878086,227,0.0,0.0,0.0,True
|
||||
2022-12-01 00:00:00+00:00,0.6,0.5983000183105469,0.59,0.6,0.52985143878086,819097,0.0,0.0,0.0,True
|
||||
2022-12-02 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-12-05 00:00:00+00:00,0.6,0.6,0.59,0.6,0.52985143878086,67809,0.0,0.0,0.0,True
|
||||
2022-12-06 00:00:00+00:00,0.6,0.6038000106811524,0.6038000106811524,0.6,0.52985143878086,18000,0.0,0.0,0.0,True
|
||||
2022-12-07 00:00:00+00:00,0.6,0.6,0.6,0.6,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2022-12-08 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.02,0.0,0.0,True
|
||||
2022-12-09 00:00:00+00:00,0.585,0.57125,0.5700000000000001,0.585,0.5344191366283723,18119,0.0,0.0,0.0,True
|
||||
2022-12-12 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344191366283723,8300,0.0,0.0,0.0,True
|
||||
2022-12-13 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5344191366283723,4797,0.0,0.0,0.0,True
|
||||
2022-12-14 00:00:00+00:00,0.585,0.5712799835205078,0.5711999893188476,0.585,0.5344191366283723,7000,0.0,0.0,0.0,True
|
||||
2022-12-15 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2022-12-16 00:00:00+00:00,0.585,0.5712799835205078,0.5700000000000001,0.585,0.5344191366283723,31125,0.0,0.0,0.0,True
|
||||
2022-12-19 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5344191366283723,8500,0.0,0.0,0.0,True
|
||||
2022-12-20 00:00:00+00:00,0.585,0.5793000030517578,0.5793000030517578,0.585,0.5344191366283723,94265,0.0,0.0,0.0,True
|
||||
2022-12-21 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5344191366283723,8475,0.0,0.0,0.0,True
|
||||
2022-12-22 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344191366283723,320,0.0,0.0,0.0,True
|
||||
2022-12-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2022-12-28 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5344191366283723,12452,0.0,0.0,0.0,True
|
||||
2022-12-29 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5344191366283723,1228,0.0,0.0,0.0,True
|
||||
2022-12-30 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2023-01-03 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5344191366283723,25461,0.0,0.0,0.0,True
|
||||
2023-01-04 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2023-01-05 00:00:00+00:00,0.585,0.5906999969482422,0.5720000076293945,0.585,0.5344191366283723,9855,0.0,0.0,0.0,True
|
||||
2023-01-06 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5344191366283723,1500,0.0,0.0,0.0,True
|
||||
2023-01-09 00:00:00+00:00,0.585,0.5702999877929688,0.5702999877929688,0.585,0.5344191366283723,9101,0.0,0.0,0.0,True
|
||||
2023-01-10 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344191366283723,20891,0.0,0.0,0.0,True
|
||||
2023-01-11 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2023-01-12 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2023-01-13 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5344191366283723,8881,0.0,0.0,0.0,True
|
||||
2023-01-16 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344191366283723,1271,0.0,0.0,0.0,True
|
||||
2023-01-17 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5344191366283723,20064,0.0,0.0,0.0,True
|
||||
2023-01-18 00:00:00+00:00,0.585,0.5700000000000001,0.56,0.585,0.5344191366283723,3709,0.0,0.0,0.0,True
|
||||
2023-01-19 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2023-01-20 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344191366283723,1225,0.0,0.0,0.0,True
|
||||
2023-01-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2023-01-24 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5344191366283723,10000,0.0,0.0,0.0,True
|
||||
2023-01-25 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344191366283723,2706,0.0,0.0,0.0,True
|
||||
2023-01-26 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5344191366283723,2076,0.0,0.0,0.0,True
|
||||
2023-01-27 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5344191366283723,0,0.0,0.0,0.0,True
|
||||
2023-01-30 00:00:00+00:00,0.585,0.555,0.555,0.58,0.52985143878086,20247,0.0,0.0,0.0,True
|
||||
2023-01-31 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.52985143878086,10000,0.0,0.0,0.0,True
|
||||
2023-02-01 00:00:00+00:00,0.58,0.55,0.55,0.58,0.52985143878086,10644,0.0,0.0,0.0,True
|
||||
2023-02-02 00:00:00+00:00,0.58,0.58,0.58,0.58,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2023-02-03 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.52985143878086,1228,0.0,0.0,0.0,True
|
||||
2023-02-06 00:00:00+00:00,0.58,0.58,0.58,0.58,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2023-02-07 00:00:00+00:00,0.58,0.555,0.555,0.58,0.52985143878086,2500,0.0,0.0,0.0,True
|
||||
2023-02-08 00:00:00+00:00,0.58,0.58,0.58,0.58,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2023-02-09 00:00:00+00:00,0.58,0.58,0.58,0.58,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2023-02-10 00:00:00+00:00,0.58,0.58,0.58,0.58,0.52985143878086,0,0.0,0.0,0.0,True
|
||||
2023-02-13 00:00:00+00:00,0.58,0.58,0.58,0.5750000000000001,0.525283740933348,12276,0.0,0.0,0.0,True
|
||||
2023-02-14 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.525283740933348,4049,0.0,0.0,0.0,True
|
||||
2023-02-15 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.525283740933348,5000,0.0,0.0,0.0,True
|
||||
2023-02-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-02-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-02-20 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.525283740933348,20123,0.0,0.0,0.0,True
|
||||
2023-02-21 00:00:00+00:00,0.5750000000000001,0.5668999862670898,0.56,0.5750000000000001,0.525283740933348,413641,0.0,0.0,0.0,True
|
||||
2023-02-22 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.525283740933348,51462,0.0,0.0,0.0,True
|
||||
2023-02-23 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-02-24 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-02-27 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-02-28 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.525283740933348,21569,0.0,0.0,0.0,True
|
||||
2023-03-01 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.525283740933348,10000,0.0,0.0,0.0,True
|
||||
2023-03-02 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-03 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.525283740933348,7892,0.0,0.0,0.0,True
|
||||
2023-03-06 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.56,0.5750000000000001,0.525283740933348,35268,0.0,0.0,0.0,True
|
||||
2023-03-07 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.525283740933348,13200,0.0,0.0,0.0,True
|
||||
2023-03-08 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-09 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.525283740933348,7663,0.0,0.0,0.0,True
|
||||
2023-03-10 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-13 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-14 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-15 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-20 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-21 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-22 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-23 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.525283740933348,17334,0.0,0.0,0.0,True
|
||||
2023-03-24 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.525283740933348,22500,0.0,0.0,0.0,True
|
||||
2023-03-27 00:00:00+01:00,0.5750000000000001,0.58,0.56,0.5750000000000001,0.525283740933348,7206,0.0,0.0,0.0,True
|
||||
2023-03-28 00:00:00+01:00,0.5750000000000001,0.5718999862670898,0.5668999862670898,0.5750000000000001,0.525283740933348,182252,0.0,0.0,0.0,True
|
||||
2023-03-29 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.525283740933348,8118,0.0,0.0,0.0,True
|
||||
2023-03-30 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-03-31 00:00:00+01:00,0.5750000000000001,0.564900016784668,0.56,0.5750000000000001,0.525283740933348,12159,0.0,0.0,0.0,True
|
||||
2023-04-03 00:00:00+01:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.525283740933348,9477,0.0,0.0,0.0,True
|
||||
2023-04-04 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-04-05 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-04-06 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.525283740933348,0,0.0,0.0,0.0,True
|
||||
2023-04-11 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.525283740933348,16661,0.0,0.0,0.0,True
|
||||
2023-04-12 00:00:00+01:00,0.5750000000000001,0.535,0.535,0.5725,0.5229999288761906,12000,0.0,0.0,0.0,True
|
||||
2023-04-13 00:00:00+01:00,0.5725,0.56,0.56,0.5700000000000001,0.5207160799524346,1459,0.0,0.0,0.0,True
|
||||
2023-04-14 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207160799524346,7500,0.0,0.0,0.0,True
|
||||
2023-04-17 00:00:00+01:00,0.5700000000000001,0.569900016784668,0.569900016784668,0.5700000000000001,0.5207160799524346,5227,0.0,0.0,0.0,True
|
||||
2023-04-18 00:00:00+01:00,0.5700000000000001,0.5695000076293946,0.555,0.5700000000000001,0.5207160799524346,9687,0.0,0.0,0.0,True
|
||||
2023-04-19 00:00:00+01:00,0.5700000000000001,0.5695000076293946,0.5695000076293946,0.5700000000000001,0.5207160799524346,5231,0.0,0.0,0.0,True
|
||||
2023-04-20 00:00:00+01:00,0.5700000000000001,0.555,0.555,0.5700000000000001,0.5207160799524346,2938,0.0,0.0,0.0,True
|
||||
2023-04-21 00:00:00+01:00,0.5700000000000001,0.555,0.555,0.5700000000000001,0.5207160799524346,8199,0.0,0.0,0.0,True
|
||||
2023-04-24 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207160799524346,0,0.0,0.0,0.0,True
|
||||
2023-04-25 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207160799524346,0,0.0,0.0,0.0,True
|
||||
2023-04-26 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207160799524346,0,0.0,0.0,0.0,True
|
||||
2023-04-27 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5207160799524346,0,0.0,0.0,0.0,True
|
||||
2023-04-28 00:00:00+01:00,0.5700000000000001,0.5679999923706055,0.5679999923706055,0.5700000000000001,0.5207160799524346,5141,0.0,0.0,0.0,True
|
||||
2023-05-02 00:00:00+01:00,0.5700000000000001,0.54,0.54,0.5650000000000001,0.5161483821049224,16905,0.0,0.0,0.0,True
|
||||
2023-05-03 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-04 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-05 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-09 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-10 00:00:00+01:00,0.5650000000000001,0.55,0.55,0.5650000000000001,0.5161483821049224,486,0.0,0.0,0.0,True
|
||||
2023-05-11 00:00:00+01:00,0.5650000000000001,0.5629999923706055,0.5629999923706055,0.5650000000000001,0.5161483821049224,4000,0.0,0.0,0.0,True
|
||||
2023-05-12 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.5650000000000001,0.5161483821049224,5720,0.0,0.0,0.0,True
|
||||
2023-05-15 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-16 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-17 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-18 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-19 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-22 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-23 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-24 00:00:00+01:00,0.5650000000000001,0.5608000183105469,0.5608000183105469,0.5650000000000001,0.5161483821049224,17250,0.0,0.0,0.0,True
|
||||
2023-05-25 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-26 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-30 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-05-31 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-01 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-02 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-05 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-06 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-07 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-08 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-09 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-12 00:00:00+01:00,0.5650000000000001,0.5608000183105469,0.5608000183105469,0.5650000000000001,0.5161483821049224,3750,0.0,0.0,0.0,True
|
||||
2023-06-13 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.5650000000000001,0.5161483821049224,4006,0.0,0.0,0.0,True
|
||||
2023-06-14 00:00:00+01:00,0.5650000000000001,0.5608000183105469,0.54,0.5650000000000001,0.5161483821049224,3597,0.0,0.0,0.0,True
|
||||
2023-06-15 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5161483821049224,0,0.0,0.0,0.0,True
|
||||
2023-06-16 00:00:00+01:00,0.5825,0.585,0.585,0.5975,0.5458383443805539,1000,0.0,0.0,0.0,True
|
||||
2023-06-19 00:00:00+01:00,0.5975,0.585,0.585,0.5975,0.5458383443805539,12038,0.0,0.0,0.0,True
|
||||
2023-06-20 00:00:00+01:00,0.5975,0.5975,0.5975,0.5975,0.5458383443805539,0,0.0,0.0,0.0,True
|
||||
2023-06-21 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-06-22 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-06-23 00:00:00+01:00,0.6,0.585,0.585,0.6,0.5481221933043099,6482,0.0,0.0,0.0,True
|
||||
2023-06-26 00:00:00+01:00,0.6,0.585,0.585,0.6,0.5481221933043099,10884,0.0,0.0,0.0,True
|
||||
2023-06-27 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-06-28 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-06-29 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-06-30 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-07-03 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-07-04 00:00:00+01:00,0.6,0.6054000091552735,0.6054000091552735,0.6,0.5481221933043099,6557,0.0,0.0,0.0,True
|
||||
2023-07-05 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5481221933043099,0,0.0,0.0,0.0,True
|
||||
2023-07-06 00:00:00+01:00,0.6,0.585,0.5802999877929688,0.595,0.5435545323233965,7299,0.0,0.0,0.0,True
|
||||
2023-07-07 00:00:00+01:00,0.595,0.5802999877929688,0.5802999877929688,0.595,0.5435545323233965,13000,0.0,0.0,0.0,True
|
||||
2023-07-10 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5435545323233965,0,0.0,0.0,0.0,True
|
||||
2023-07-11 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5435545323233965,0,0.0,0.0,0.0,True
|
||||
2023-07-12 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5435545323233965,0,0.0,0.0,0.0,True
|
||||
2023-07-13 00:00:00+01:00,0.595,0.6025,0.585,0.595,0.5435545323233965,372468,0.0,0.0,0.0,True
|
||||
2023-07-14 00:00:00+01:00,0.595,0.5700000000000001,0.5700000000000001,0.595,0.5435545323233965,1919,0.0,0.0,0.0,True
|
||||
2023-07-17 00:00:00+01:00,0.595,0.6025,0.6025,0.595,0.5435545323233965,3400,0.0,0.0,0.0,True
|
||||
2023-07-18 00:00:00+01:00,0.595,0.5650000000000001,0.5650000000000001,0.59,0.5389868344758844,14146,0.0,0.0,0.0,True
|
||||
2023-07-19 00:00:00+01:00,0.59,0.5970000076293945,0.5970000076293945,0.59,0.5389868344758844,1000,0.0,0.0,0.0,True
|
||||
2023-07-20 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5389831924438476,0,0.02,0.0,0.0,False
|
||||
2023-07-21 00:00:00+01:00,0.5700000000000001,0.5770000076293945,0.5770000076293945,0.5700000000000001,0.5389831924438476,344,0.0,0.0,0.0,False
|
||||
2023-07-24 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5389831924438476,0,0.0,0.0,0.0,False
|
||||
@@ -396,7 +396,7 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2023-07-31 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.534255256652832,0,0.0,0.0,0.0,False
|
||||
2023-08-01 00:00:00+01:00,0.5650000000000001,0.5720000076293945,0.5720000076293945,0.5650000000000001,0.534255256652832,600,0.0,0.0,0.0,False
|
||||
2023-08-02 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.534255256652832,0,0.0,0.0,0.0,False
|
||||
2023-08-03 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.54,0.5106156539916993,1731,0.0,0.0,0.0,False
|
||||
2023-08-03 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.54,0.5106156921386719,1731,0.0,0.0,0.0,False
|
||||
2023-08-04 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.5650000000000001,0.534255256652832,1800,0.0,0.0,0.0,False
|
||||
2023-08-07 00:00:00+01:00,0.5650000000000001,0.5720000076293945,0.5720000076293945,0.5650000000000001,0.534255256652832,8612,0.0,0.0,0.0,False
|
||||
2023-08-08 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.534255256652832,0,0.0,0.0,0.0,False
|
||||
@@ -684,3 +684,43 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2024-09-18 00:00:00+01:00,0.555,0.54,0.54,0.555,0.555,9547,0.0,0.0,0.0,False
|
||||
2024-09-19 00:00:00+01:00,0.555,0.54,0.54,0.555,0.555,10580,0.0,0.0,0.0,False
|
||||
2024-09-20 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-09-23 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-09-24 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-09-25 00:00:00+01:00,0.555,0.545099983215332,0.545099983215332,0.555,0.555,223787,0.0,0.0,0.0,False
|
||||
2024-09-26 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-09-27 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-09-30 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-01 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-02 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-03 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-04 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-07 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-08 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-09 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-10 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-11 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-14 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-15 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-16 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-17 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-18 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0,False
|
||||
2024-10-21 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-10-22 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-10-23 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-10-24 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-10-25 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-10-28 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-10-29 00:00:00+00:00,0.555,0.5650000000000001,0.54,0.555,0.555,1056,0.0,0.0,0.0,False
|
||||
2024-10-30 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-10-31 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-01 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-04 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-05 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-06 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-07 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-08 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-11 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-12 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-13 00:00:00+00:00,0.555,0.54,0.54,0.555,0.555,1180,0.0,0.0,0.0,False
|
||||
2024-11-14 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
2024-11-15 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0,False
|
||||
|
||||
|
@@ -14,19 +14,19 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2022-01-20 00:00:00+00:00,0.6875,0.675,0.675,0.6875,0.6084982681274415,11286,0.0,0.0,0.0
|
||||
2022-01-21 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.6084982681274415,653,0.0,0.0,0.0
|
||||
2022-01-24 00:00:00+00:00,0.6875,0.6940000152587891,0.6940000152587891,0.6875,0.6084982681274415,300,0.0,0.0,0.0
|
||||
2022-01-25 00:00:00+00:00,0.6875,0.67,0.67,0.6825,0.6040727233886719,18000,0.0,0.0,0.0
|
||||
2022-01-26 00:00:00+00:00,0.6825,0.6940000152587891,0.6940000152587891,0.6825,0.6040727233886719,1560,0.0,0.0,0.0
|
||||
2022-01-27 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.6040727233886719,1000,0.0,0.0,0.0
|
||||
2022-01-28 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.6040727233886719,5588,0.0,0.0,0.0
|
||||
2022-01-31 00:00:00+00:00,0.6825,0.6825,0.6825,0.6825,0.6040727233886719,0,0.0,0.0,0.0
|
||||
2022-02-01 00:00:00+00:00,0.6825,0.66,0.65,0.66,0.5841583633422852,30612,0.0,0.0,0.0
|
||||
2022-02-02 00:00:00+00:00,0.66,0.65,0.65,0.66,0.5841583633422852,9000,0.0,0.0,0.0
|
||||
2022-02-03 00:00:00+00:00,0.67,0.68,0.67,0.6775,0.5996473693847656,19301,0.0,0.0,0.0
|
||||
2022-02-04 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5996473693847656,29455,0.0,0.0,0.0
|
||||
2022-02-07 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5996473693847656,3125,0.0,0.0,0.0
|
||||
2022-02-08 00:00:00+00:00,0.6775,0.685,0.67,0.6775,0.5996473693847656,15202,0.0,0.0,0.0
|
||||
2022-02-09 00:00:00+00:00,0.6775,0.6775,0.6775,0.6775,0.5996473693847656,0,0.0,0.0,0.0
|
||||
2022-02-10 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.5996473693847656,3506,0.0,0.0,0.0
|
||||
2022-01-25 00:00:00+00:00,0.6875,0.67,0.67,0.6825,0.6040727996826172,18000,0.0,0.0,0.0
|
||||
2022-01-26 00:00:00+00:00,0.6825,0.6940000152587891,0.6940000152587891,0.6825,0.6040727996826172,1560,0.0,0.0,0.0
|
||||
2022-01-27 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.6040727996826172,1000,0.0,0.0,0.0
|
||||
2022-01-28 00:00:00+00:00,0.6825,0.67,0.67,0.6825,0.6040727996826172,5588,0.0,0.0,0.0
|
||||
2022-01-31 00:00:00+00:00,0.6825,0.6825,0.6825,0.6825,0.6040727996826172,0,0.0,0.0,0.0
|
||||
2022-02-01 00:00:00+00:00,0.6825,0.66,0.65,0.66,0.5841582489013672,30612,0.0,0.0,0.0
|
||||
2022-02-02 00:00:00+00:00,0.66,0.65,0.65,0.66,0.5841582489013672,9000,0.0,0.0,0.0
|
||||
2022-02-03 00:00:00+00:00,0.67,0.68,0.67,0.6775,0.599647445678711,19301,0.0,0.0,0.0
|
||||
2022-02-04 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.599647445678711,29455,0.0,0.0,0.0
|
||||
2022-02-07 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.599647445678711,3125,0.0,0.0,0.0
|
||||
2022-02-08 00:00:00+00:00,0.6775,0.685,0.67,0.6775,0.599647445678711,15202,0.0,0.0,0.0
|
||||
2022-02-09 00:00:00+00:00,0.6775,0.6775,0.6775,0.6775,0.599647445678711,0,0.0,0.0,0.0
|
||||
2022-02-10 00:00:00+00:00,0.6775,0.67,0.67,0.6775,0.599647445678711,3506,0.0,0.0,0.0
|
||||
2022-02-11 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.6084982681274415,0,0.0,0.0,0.0
|
||||
2022-02-14 00:00:00+00:00,0.6875,0.68,0.68,0.6875,0.6084982681274415,2461,0.0,0.0,0.0
|
||||
2022-02-15 00:00:00+00:00,0.6875,0.68,0.68,0.6875,0.6084982681274415,19756,0.0,0.0,0.0
|
||||
@@ -52,148 +52,148 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2022-03-15 00:00:00+00:00,0.6875,0.68,0.65,0.6875,0.6084982681274415,1430,0.0,0.0,0.0
|
||||
2022-03-16 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.6084982681274415,0,0.0,0.0,0.0
|
||||
2022-03-17 00:00:00+00:00,0.6875,0.6875,0.6875,0.6875,0.6084982681274415,0,0.0,0.0,0.0
|
||||
2022-03-18 00:00:00+00:00,0.665,0.655,0.655,0.66,0.5841583633422852,2500,0.0,0.0,0.0
|
||||
2022-03-21 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-03-22 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-03-23 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-03-24 00:00:00+00:00,0.66,0.65,0.65,0.66,0.5841583633422852,24314,0.0,0.0,0.0
|
||||
2022-03-25 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-03-28 00:00:00+01:00,0.66,0.6552999877929687,0.6552999877929687,0.66,0.5841583633422852,16749,0.0,0.0,0.0
|
||||
2022-03-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-03-30 00:00:00+01:00,0.66,0.665,0.65,0.66,0.5841583633422852,38438,0.0,0.0,0.0
|
||||
2022-03-31 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-04-01 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-04-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-04-05 00:00:00+01:00,0.66,0.66,0.65,0.66,0.5841583633422852,16181,0.0,0.0,0.0
|
||||
2022-04-06 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841583633422852,672,0.0,0.0,0.0
|
||||
2022-04-07 00:00:00+01:00,0.66,0.66,0.6501000213623047,0.66,0.5841583633422852,55267,0.0,0.0,0.0
|
||||
2022-04-08 00:00:00+01:00,0.66,0.6598000335693359,0.6598000335693359,0.66,0.5841583633422852,1496,0.0,0.0,0.0
|
||||
2022-04-11 00:00:00+01:00,0.66,0.659000015258789,0.65,0.66,0.5841583633422852,10068,0.0,0.0,0.0
|
||||
2022-04-12 00:00:00+01:00,0.66,0.6588999938964843,0.6588999938964843,0.66,0.5841583633422852,7588,0.0,0.0,0.0
|
||||
2022-04-13 00:00:00+01:00,0.66,0.658499984741211,0.658499984741211,0.66,0.5841583633422852,1511,0.0,0.0,0.0
|
||||
2022-04-14 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-04-19 00:00:00+01:00,0.66,0.6583999633789063,0.65,0.66,0.5841583633422852,12524,0.0,0.0,0.0
|
||||
2022-04-20 00:00:00+01:00,0.66,0.6583999633789063,0.6583999633789063,0.66,0.5841583633422852,580,0.0,0.0,0.0
|
||||
2022-04-21 00:00:00+01:00,0.66,0.6583999633789063,0.64,0.66,0.5841583633422852,22992,0.0,0.0,0.0
|
||||
2022-04-22 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-04-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-04-26 00:00:00+01:00,0.66,0.6580000305175782,0.6580000305175782,0.66,0.5841583633422852,1500,0.0,0.0,0.0
|
||||
2022-04-27 00:00:00+01:00,0.66,0.64,0.64,0.66,0.5841583633422852,17000,0.0,0.0,0.0
|
||||
2022-04-28 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-04-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-03 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-05 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.5841583633422852,5000,0.0,0.0,0.0
|
||||
2022-05-06 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-09 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-10 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-11 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.5841583633422852,20230,0.0,0.0,0.0
|
||||
2022-05-12 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-13 00:00:00+01:00,0.66,0.6573999786376953,0.6573999786376953,0.66,0.5841583633422852,7567,0.0,0.0,0.0
|
||||
2022-05-16 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841583633422852,5842,0.0,0.0,0.0
|
||||
2022-05-17 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841583633422852,27137,0.0,0.0,0.0
|
||||
2022-05-18 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841583633422852,24000,0.0,0.0,0.0
|
||||
2022-05-19 00:00:00+01:00,0.66,0.6569999694824219,0.635,0.66,0.5841583633422852,10757,0.0,0.0,0.0
|
||||
2022-05-20 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-23 00:00:00+01:00,0.66,0.6558000183105469,0.6558000183105469,0.66,0.5841583633422852,1517,0.0,0.0,0.0
|
||||
2022-05-24 00:00:00+01:00,0.66,0.635,0.635,0.66,0.5841583633422852,13072,0.0,0.0,0.0
|
||||
2022-05-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841583633422852,0,0.0,0.0,0.0
|
||||
2022-05-26 00:00:00+01:00,0.66,0.64,0.64,0.655,0.5797328567504882,7206,0.0,0.0,0.0
|
||||
2022-05-27 00:00:00+01:00,0.655,0.655,0.655,0.655,0.5797328567504882,0,0.0,0.0,0.0
|
||||
2022-05-30 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5797328567504882,5000,0.0,0.0,0.0
|
||||
2022-05-31 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5797328567504882,1518,0.0,0.0,0.0
|
||||
2022-06-01 00:00:00+01:00,0.655,0.65,0.65,0.645,0.5708820343017579,1,0.0,0.0,0.0
|
||||
2022-06-06 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5708820343017579,15500,0.0,0.0,0.0
|
||||
2022-06-07 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5708820343017579,1004,0.0,0.0,0.0
|
||||
2022-06-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-09 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5708820343017579,8341,0.0,0.0,0.0
|
||||
2022-06-10 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-14 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5708820343017579,31092,0.0,0.0,0.0
|
||||
2022-06-15 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-16 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-17 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-20 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-21 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-22 00:00:00+01:00,0.645,0.6498000335693359,0.64,0.645,0.5708820343017579,189418,0.0,0.0,0.0
|
||||
2022-06-23 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-24 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-27 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-28 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5708820343017579,2500,0.0,0.0,0.0
|
||||
2022-06-29 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-06-30 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-01 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-04 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-05 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-06 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-07 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-11 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-12 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-14 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708820343017579,0,0.0,0.0,0.0
|
||||
2022-07-15 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-07-18 00:00:00+01:00,0.6375000000000001,0.64,0.6388000106811523,0.6375000000000001,0.5642438125610352,31351,0.0,0.0,0.0
|
||||
2022-07-19 00:00:00+01:00,0.6375000000000001,0.65,0.63,0.6375000000000001,0.5642438125610352,38011,0.0,0.0,0.0
|
||||
2022-07-20 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-03-18 00:00:00+00:00,0.665,0.655,0.655,0.66,0.5841582489013672,2500,0.0,0.0,0.0
|
||||
2022-03-21 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-03-22 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-03-23 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-03-24 00:00:00+00:00,0.66,0.65,0.65,0.66,0.5841582489013672,24314,0.0,0.0,0.0
|
||||
2022-03-25 00:00:00+00:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-03-28 00:00:00+01:00,0.66,0.6552999877929687,0.6552999877929687,0.66,0.5841582489013672,16749,0.0,0.0,0.0
|
||||
2022-03-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-03-30 00:00:00+01:00,0.66,0.665,0.65,0.66,0.5841582489013672,38438,0.0,0.0,0.0
|
||||
2022-03-31 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-04-01 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-04-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-04-05 00:00:00+01:00,0.66,0.66,0.65,0.66,0.5841582489013672,16181,0.0,0.0,0.0
|
||||
2022-04-06 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841582489013672,672,0.0,0.0,0.0
|
||||
2022-04-07 00:00:00+01:00,0.66,0.66,0.6501000213623047,0.66,0.5841582489013672,55267,0.0,0.0,0.0
|
||||
2022-04-08 00:00:00+01:00,0.66,0.6598000335693359,0.6598000335693359,0.66,0.5841582489013672,1496,0.0,0.0,0.0
|
||||
2022-04-11 00:00:00+01:00,0.66,0.659000015258789,0.65,0.66,0.5841582489013672,10068,0.0,0.0,0.0
|
||||
2022-04-12 00:00:00+01:00,0.66,0.6588999938964843,0.6588999938964843,0.66,0.5841582489013672,7588,0.0,0.0,0.0
|
||||
2022-04-13 00:00:00+01:00,0.66,0.658499984741211,0.658499984741211,0.66,0.5841582489013672,1511,0.0,0.0,0.0
|
||||
2022-04-14 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-04-19 00:00:00+01:00,0.66,0.6583999633789063,0.65,0.66,0.5841582489013672,12524,0.0,0.0,0.0
|
||||
2022-04-20 00:00:00+01:00,0.66,0.6583999633789063,0.6583999633789063,0.66,0.5841582489013672,580,0.0,0.0,0.0
|
||||
2022-04-21 00:00:00+01:00,0.66,0.6583999633789063,0.64,0.66,0.5841582489013672,22992,0.0,0.0,0.0
|
||||
2022-04-22 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-04-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-04-26 00:00:00+01:00,0.66,0.6580000305175782,0.6580000305175782,0.66,0.5841582489013672,1500,0.0,0.0,0.0
|
||||
2022-04-27 00:00:00+01:00,0.66,0.64,0.64,0.66,0.5841582489013672,17000,0.0,0.0,0.0
|
||||
2022-04-28 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-04-29 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-03 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-04 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-05 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.5841582489013672,5000,0.0,0.0,0.0
|
||||
2022-05-06 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-09 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-10 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-11 00:00:00+01:00,0.66,0.6576000213623047,0.6576000213623047,0.66,0.5841582489013672,20230,0.0,0.0,0.0
|
||||
2022-05-12 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-13 00:00:00+01:00,0.66,0.6573999786376953,0.6573999786376953,0.66,0.5841582489013672,7567,0.0,0.0,0.0
|
||||
2022-05-16 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841582489013672,5842,0.0,0.0,0.0
|
||||
2022-05-17 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841582489013672,27137,0.0,0.0,0.0
|
||||
2022-05-18 00:00:00+01:00,0.66,0.65,0.65,0.66,0.5841582489013672,24000,0.0,0.0,0.0
|
||||
2022-05-19 00:00:00+01:00,0.66,0.6569999694824219,0.635,0.66,0.5841582489013672,10757,0.0,0.0,0.0
|
||||
2022-05-20 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-23 00:00:00+01:00,0.66,0.6558000183105469,0.6558000183105469,0.66,0.5841582489013672,1517,0.0,0.0,0.0
|
||||
2022-05-24 00:00:00+01:00,0.66,0.635,0.635,0.66,0.5841582489013672,13072,0.0,0.0,0.0
|
||||
2022-05-25 00:00:00+01:00,0.66,0.66,0.66,0.66,0.5841582489013672,0,0.0,0.0,0.0
|
||||
2022-05-26 00:00:00+01:00,0.66,0.64,0.64,0.655,0.5797328948974609,7206,0.0,0.0,0.0
|
||||
2022-05-27 00:00:00+01:00,0.655,0.655,0.655,0.655,0.5797328948974609,0,0.0,0.0,0.0
|
||||
2022-05-30 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5797328948974609,5000,0.0,0.0,0.0
|
||||
2022-05-31 00:00:00+01:00,0.655,0.65,0.65,0.655,0.5797328948974609,1518,0.0,0.0,0.0
|
||||
2022-06-01 00:00:00+01:00,0.655,0.65,0.65,0.645,0.5708819580078125,1,0.0,0.0,0.0
|
||||
2022-06-06 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5708819580078125,15500,0.0,0.0,0.0
|
||||
2022-06-07 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5708819580078125,1004,0.0,0.0,0.0
|
||||
2022-06-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-09 00:00:00+01:00,0.645,0.635,0.635,0.645,0.5708819580078125,8341,0.0,0.0,0.0
|
||||
2022-06-10 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-14 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5708819580078125,31092,0.0,0.0,0.0
|
||||
2022-06-15 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-16 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-17 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-20 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-21 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-22 00:00:00+01:00,0.645,0.6498000335693359,0.64,0.645,0.5708819580078125,189418,0.0,0.0,0.0
|
||||
2022-06-23 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-24 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-27 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-28 00:00:00+01:00,0.645,0.64,0.64,0.645,0.5708819580078125,2500,0.0,0.0,0.0
|
||||
2022-06-29 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-06-30 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-01 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-04 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-05 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-06 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-07 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-08 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-11 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-12 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-13 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-14 00:00:00+01:00,0.645,0.645,0.645,0.645,0.5708819580078125,0,0.0,0.0,0.0
|
||||
2022-07-15 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-07-18 00:00:00+01:00,0.6375000000000001,0.64,0.6388000106811523,0.6375000000000001,0.5642438507080079,31351,0.0,0.0,0.0
|
||||
2022-07-19 00:00:00+01:00,0.6375000000000001,0.65,0.63,0.6375000000000001,0.5642438507080079,38011,0.0,0.0,0.0
|
||||
2022-07-20 00:00:00+01:00,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.6375000000000001,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-07-21 00:00:00+01:00,0.62,0.62,0.62,0.62,0.5665282440185547,0,0.02,0.0,0.0
|
||||
2022-07-22 00:00:00+01:00,0.62,0.6,0.6,0.6175,0.5642438125610352,3600,0.0,0.0,0.0
|
||||
2022-07-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-07-26 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5642438125610352,5000,0.0,0.0,0.0
|
||||
2022-07-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-07-28 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5642438125610352,2288,0.0,0.0,0.0
|
||||
2022-07-29 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438125610352,2909,0.0,0.0,0.0
|
||||
2022-08-01 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-02 00:00:00+01:00,0.6175,0.62,0.605,0.6175,0.5642438125610352,17150,0.0,0.0,0.0
|
||||
2022-08-03 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-04 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438125610352,200,0.0,0.0,0.0
|
||||
2022-08-05 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438125610352,15000,0.0,0.0,0.0
|
||||
2022-08-08 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5642438125610352,4797,0.0,0.0,0.0
|
||||
2022-08-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-10 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438125610352,30000,0.0,0.0,0.0
|
||||
2022-08-11 00:00:00+01:00,0.6175,0.6197999954223633,0.6075,0.6175,0.5642438125610352,25000,0.0,0.0,0.0
|
||||
2022-08-12 00:00:00+01:00,0.6175,0.6195000076293945,0.6195000076293945,0.6175,0.5642438125610352,1195,0.0,0.0,0.0
|
||||
2022-08-15 00:00:00+01:00,0.6175,0.6190999984741211,0.6190999984741211,0.6175,0.5642438125610352,3,0.0,0.0,0.0
|
||||
2022-08-16 00:00:00+01:00,0.6175,0.6187799835205078,0.6187799835205078,0.6175,0.5642438125610352,148,0.0,0.0,0.0
|
||||
2022-08-17 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-18 00:00:00+01:00,0.6175,0.6086999893188477,0.6086999893188477,0.6175,0.5642438125610352,112147,0.0,0.0,0.0
|
||||
2022-08-19 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-23 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5642438125610352,13403,0.0,0.0,0.0
|
||||
2022-08-24 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5642438125610352,3509,0.0,0.0,0.0
|
||||
2022-08-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-26 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-08-31 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-01 00:00:00+01:00,0.6175,0.6176200103759766,0.6176200103759766,0.6175,0.5642438125610352,233,0.0,0.0,0.0
|
||||
2022-09-02 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5642438125610352,3879,0.0,0.0,0.0
|
||||
2022-09-05 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-06 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-07 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-08 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-12 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-13 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-14 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-15 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5642438125610352,175,0.0,0.0,0.0
|
||||
2022-09-16 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-20 00:00:00+01:00,0.6175,0.617599983215332,0.617599983215332,0.6175,0.5642438125610352,32400,0.0,0.0,0.0
|
||||
2022-09-21 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-23 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-26 00:00:00+01:00,0.6175,0.617599983215332,0.6054999923706055,0.6054999923706055,0.5532787704467773,12005,0.0,0.0,0.0
|
||||
2022-09-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-28 00:00:00+01:00,0.6175,0.6136999893188476,0.6086999893188477,0.6175,0.5642438125610352,58251,0.0,0.0,0.0
|
||||
2022-09-29 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-09-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438125610352,0,0.0,0.0,0.0
|
||||
2022-10-03 00:00:00+01:00,0.6175,0.6,0.59,0.61,0.5573906326293946,22000,0.0,0.0,0.0
|
||||
2022-10-04 00:00:00+01:00,0.61,0.595,0.585,0.61,0.5573906326293946,38754,0.0,0.0,0.0
|
||||
2022-10-05 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906326293946,0,0.0,0.0,0.0
|
||||
2022-10-06 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906326293946,0,0.0,0.0,0.0
|
||||
2022-10-07 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906326293946,0,0.0,0.0,0.0
|
||||
2022-10-10 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906326293946,0,0.0,0.0,0.0
|
||||
2022-10-11 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906326293946,0,0.0,0.0,0.0
|
||||
2022-10-12 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906326293946,0,0.0,0.0,0.0
|
||||
2022-07-22 00:00:00+01:00,0.62,0.6,0.6,0.6175,0.5642438507080079,3600,0.0,0.0,0.0
|
||||
2022-07-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-07-26 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5642438507080079,5000,0.0,0.0,0.0
|
||||
2022-07-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-07-28 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5642438507080079,2288,0.0,0.0,0.0
|
||||
2022-07-29 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438507080079,2909,0.0,0.0,0.0
|
||||
2022-08-01 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-02 00:00:00+01:00,0.6175,0.62,0.605,0.6175,0.5642438507080079,17150,0.0,0.0,0.0
|
||||
2022-08-03 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-04 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438507080079,200,0.0,0.0,0.0
|
||||
2022-08-05 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438507080079,15000,0.0,0.0,0.0
|
||||
2022-08-08 00:00:00+01:00,0.6175,0.605999984741211,0.605999984741211,0.6175,0.5642438507080079,4797,0.0,0.0,0.0
|
||||
2022-08-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-10 00:00:00+01:00,0.6175,0.605,0.605,0.6175,0.5642438507080079,30000,0.0,0.0,0.0
|
||||
2022-08-11 00:00:00+01:00,0.6175,0.6197999954223633,0.6075,0.6175,0.5642438507080079,25000,0.0,0.0,0.0
|
||||
2022-08-12 00:00:00+01:00,0.6175,0.6195000076293945,0.6195000076293945,0.6175,0.5642438507080079,1195,0.0,0.0,0.0
|
||||
2022-08-15 00:00:00+01:00,0.6175,0.6190999984741211,0.6190999984741211,0.6175,0.5642438507080079,3,0.0,0.0,0.0
|
||||
2022-08-16 00:00:00+01:00,0.6175,0.6187799835205078,0.6187799835205078,0.6175,0.5642438507080079,148,0.0,0.0,0.0
|
||||
2022-08-17 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-18 00:00:00+01:00,0.6175,0.6086999893188477,0.6086999893188477,0.6175,0.5642438507080079,112147,0.0,0.0,0.0
|
||||
2022-08-19 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-23 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5642438507080079,13403,0.0,0.0,0.0
|
||||
2022-08-24 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5642438507080079,3509,0.0,0.0,0.0
|
||||
2022-08-25 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-26 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-08-31 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-01 00:00:00+01:00,0.6175,0.6176200103759766,0.6176200103759766,0.6175,0.5642438507080079,233,0.0,0.0,0.0
|
||||
2022-09-02 00:00:00+01:00,0.6175,0.6054999923706055,0.6054999923706055,0.6175,0.5642438507080079,3879,0.0,0.0,0.0
|
||||
2022-09-05 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-06 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-07 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-08 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-09 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-12 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-13 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-14 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-15 00:00:00+01:00,0.6175,0.625,0.625,0.6175,0.5642438507080079,175,0.0,0.0,0.0
|
||||
2022-09-16 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-20 00:00:00+01:00,0.6175,0.617599983215332,0.617599983215332,0.6175,0.5642438507080079,32400,0.0,0.0,0.0
|
||||
2022-09-21 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-22 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-23 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-26 00:00:00+01:00,0.6175,0.617599983215332,0.6054999923706055,0.6054999923706055,0.55327880859375,12005,0.0,0.0,0.0
|
||||
2022-09-27 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-28 00:00:00+01:00,0.6175,0.6136999893188476,0.6086999893188477,0.6175,0.5642438507080079,58251,0.0,0.0,0.0
|
||||
2022-09-29 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-09-30 00:00:00+01:00,0.6175,0.6175,0.6175,0.6175,0.5642438507080079,0,0.0,0.0,0.0
|
||||
2022-10-03 00:00:00+01:00,0.6175,0.6,0.59,0.61,0.5573906707763672,22000,0.0,0.0,0.0
|
||||
2022-10-04 00:00:00+01:00,0.61,0.595,0.585,0.61,0.5573906707763672,38754,0.0,0.0,0.0
|
||||
2022-10-05 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906707763672,0,0.0,0.0,0.0
|
||||
2022-10-06 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906707763672,0,0.0,0.0,0.0
|
||||
2022-10-07 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906707763672,0,0.0,0.0,0.0
|
||||
2022-10-10 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906707763672,0,0.0,0.0,0.0
|
||||
2022-10-11 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906707763672,0,0.0,0.0,0.0
|
||||
2022-10-12 00:00:00+01:00,0.61,0.61,0.61,0.61,0.5573906707763672,0,0.0,0.0,0.0
|
||||
2022-10-13 00:00:00+01:00,0.61,0.58,0.58,0.605,0.5528219223022461,1000,0.0,0.0,0.0
|
||||
2022-10-14 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5528219223022461,0,0.0,0.0,0.0
|
||||
2022-10-17 00:00:00+01:00,0.605,0.605,0.605,0.605,0.5528219223022461,0,0.0,0.0,0.0
|
||||
@@ -234,91 +234,91 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2022-12-05 00:00:00+00:00,0.6,0.6,0.59,0.6,0.5482531356811523,67809,0.0,0.0,0.0
|
||||
2022-12-06 00:00:00+00:00,0.6,0.6038000106811524,0.6038000106811524,0.6,0.5482531356811523,18000,0.0,0.0,0.0
|
||||
2022-12-07 00:00:00+00:00,0.6,0.6,0.6,0.6,0.5482531356811523,0,0.0,0.0,0.0
|
||||
2022-12-08 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.02,0.0,0.0
|
||||
2022-12-09 00:00:00+00:00,0.585,0.57125,0.5700000000000001,0.585,0.5529794311523437,18119,0.0,0.0,0.0
|
||||
2022-12-12 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794311523437,8300,0.0,0.0,0.0
|
||||
2022-12-13 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5529794311523437,4797,0.0,0.0,0.0
|
||||
2022-12-14 00:00:00+00:00,0.585,0.5712799835205078,0.5711999893188476,0.585,0.5529794311523437,7000,0.0,0.0,0.0
|
||||
2022-12-15 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2022-12-16 00:00:00+00:00,0.585,0.5712799835205078,0.5700000000000001,0.585,0.5529794311523437,31125,0.0,0.0,0.0
|
||||
2022-12-19 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5529794311523437,8500,0.0,0.0,0.0
|
||||
2022-12-20 00:00:00+00:00,0.585,0.5793000030517578,0.5793000030517578,0.585,0.5529794311523437,94265,0.0,0.0,0.0
|
||||
2022-12-21 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5529794311523437,8475,0.0,0.0,0.0
|
||||
2022-12-22 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794311523437,320,0.0,0.0,0.0
|
||||
2022-12-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2022-12-28 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5529794311523437,12452,0.0,0.0,0.0
|
||||
2022-12-29 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5529794311523437,1228,0.0,0.0,0.0
|
||||
2022-12-30 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2023-01-03 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5529794311523437,25461,0.0,0.0,0.0
|
||||
2023-01-04 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2023-01-05 00:00:00+00:00,0.585,0.5906999969482422,0.5720000076293945,0.585,0.5529794311523437,9855,0.0,0.0,0.0
|
||||
2023-01-06 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5529794311523437,1500,0.0,0.0,0.0
|
||||
2023-01-09 00:00:00+00:00,0.585,0.5702999877929688,0.5702999877929688,0.585,0.5529794311523437,9101,0.0,0.0,0.0
|
||||
2023-01-10 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794311523437,20891,0.0,0.0,0.0
|
||||
2023-01-11 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2023-01-12 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2023-01-13 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5529794311523437,8881,0.0,0.0,0.0
|
||||
2023-01-16 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794311523437,1271,0.0,0.0,0.0
|
||||
2023-01-17 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5529794311523437,20064,0.0,0.0,0.0
|
||||
2023-01-18 00:00:00+00:00,0.585,0.5700000000000001,0.56,0.585,0.5529794311523437,3709,0.0,0.0,0.0
|
||||
2023-01-19 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2023-01-20 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794311523437,1225,0.0,0.0,0.0
|
||||
2023-01-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2023-01-24 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794311523437,10000,0.0,0.0,0.0
|
||||
2023-01-25 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794311523437,2706,0.0,0.0,0.0
|
||||
2023-01-26 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794311523437,2076,0.0,0.0,0.0
|
||||
2023-01-27 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794311523437,0,0.0,0.0,0.0
|
||||
2023-01-30 00:00:00+00:00,0.585,0.555,0.555,0.58,0.548253173828125,20247,0.0,0.0,0.0
|
||||
2023-01-31 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.548253173828125,10000,0.0,0.0,0.0
|
||||
2023-02-01 00:00:00+00:00,0.58,0.55,0.55,0.58,0.548253173828125,10644,0.0,0.0,0.0
|
||||
2023-02-02 00:00:00+00:00,0.58,0.58,0.58,0.58,0.548253173828125,0,0.0,0.0,0.0
|
||||
2023-02-03 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.548253173828125,1228,0.0,0.0,0.0
|
||||
2023-02-06 00:00:00+00:00,0.58,0.58,0.58,0.58,0.548253173828125,0,0.0,0.0,0.0
|
||||
2023-02-07 00:00:00+00:00,0.58,0.555,0.555,0.58,0.548253173828125,2500,0.0,0.0,0.0
|
||||
2023-02-08 00:00:00+00:00,0.58,0.58,0.58,0.58,0.548253173828125,0,0.0,0.0,0.0
|
||||
2023-02-09 00:00:00+00:00,0.58,0.58,0.58,0.58,0.548253173828125,0,0.0,0.0,0.0
|
||||
2023-02-10 00:00:00+00:00,0.58,0.58,0.58,0.58,0.548253173828125,0,0.0,0.0,0.0
|
||||
2023-02-13 00:00:00+00:00,0.58,0.58,0.58,0.5750000000000001,0.543526840209961,12276,0.0,0.0,0.0
|
||||
2023-02-14 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.543526840209961,4049,0.0,0.0,0.0
|
||||
2023-02-15 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.543526840209961,5000,0.0,0.0,0.0
|
||||
2023-02-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-02-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-02-20 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.543526840209961,20123,0.0,0.0,0.0
|
||||
2023-02-21 00:00:00+00:00,0.5750000000000001,0.5668999862670898,0.56,0.5750000000000001,0.543526840209961,413641,0.0,0.0,0.0
|
||||
2023-02-22 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.543526840209961,51462,0.0,0.0,0.0
|
||||
2023-02-23 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-02-24 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-02-27 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-02-28 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.543526840209961,21569,0.0,0.0,0.0
|
||||
2023-03-01 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.543526840209961,10000,0.0,0.0,0.0
|
||||
2023-03-02 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-03 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.543526840209961,7892,0.0,0.0,0.0
|
||||
2023-03-06 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.56,0.5750000000000001,0.543526840209961,35268,0.0,0.0,0.0
|
||||
2023-03-07 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.543526840209961,13200,0.0,0.0,0.0
|
||||
2023-03-08 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-09 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.543526840209961,7663,0.0,0.0,0.0
|
||||
2023-03-10 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-13 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-14 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-15 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-20 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-21 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-22 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-23 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.543526840209961,17334,0.0,0.0,0.0
|
||||
2023-03-24 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.543526840209961,22500,0.0,0.0,0.0
|
||||
2023-03-27 00:00:00+01:00,0.5750000000000001,0.58,0.56,0.5750000000000001,0.543526840209961,7206,0.0,0.0,0.0
|
||||
2023-03-28 00:00:00+01:00,0.5750000000000001,0.5718999862670898,0.5668999862670898,0.5750000000000001,0.543526840209961,182252,0.0,0.0,0.0
|
||||
2023-03-29 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.543526840209961,8118,0.0,0.0,0.0
|
||||
2023-03-30 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-03-31 00:00:00+01:00,0.5750000000000001,0.564900016784668,0.56,0.5750000000000001,0.543526840209961,12159,0.0,0.0,0.0
|
||||
2023-04-03 00:00:00+01:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.543526840209961,9477,0.0,0.0,0.0
|
||||
2023-04-04 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-04-05 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-04-06 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.543526840209961,0,0.0,0.0,0.0
|
||||
2023-04-11 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.543526840209961,16661,0.0,0.0,0.0
|
||||
2023-04-12 00:00:00+01:00,0.5750000000000001,0.535,0.535,0.5725,0.5411636352539063,12000,0.0,0.0,0.0
|
||||
2022-12-08 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.02,0.0,0.0
|
||||
2022-12-09 00:00:00+00:00,0.585,0.57125,0.5700000000000001,0.585,0.5529794692993164,18119,0.0,0.0,0.0
|
||||
2022-12-12 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794692993164,8300,0.0,0.0,0.0
|
||||
2022-12-13 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5529794692993164,4797,0.0,0.0,0.0
|
||||
2022-12-14 00:00:00+00:00,0.585,0.5712799835205078,0.5711999893188476,0.585,0.5529794692993164,7000,0.0,0.0,0.0
|
||||
2022-12-15 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2022-12-16 00:00:00+00:00,0.585,0.5712799835205078,0.5700000000000001,0.585,0.5529794692993164,31125,0.0,0.0,0.0
|
||||
2022-12-19 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5529794692993164,8500,0.0,0.0,0.0
|
||||
2022-12-20 00:00:00+00:00,0.585,0.5793000030517578,0.5793000030517578,0.585,0.5529794692993164,94265,0.0,0.0,0.0
|
||||
2022-12-21 00:00:00+00:00,0.585,0.5712799835205078,0.5712799835205078,0.585,0.5529794692993164,8475,0.0,0.0,0.0
|
||||
2022-12-22 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794692993164,320,0.0,0.0,0.0
|
||||
2022-12-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2022-12-28 00:00:00+00:00,0.585,0.5700000000000001,0.5700000000000001,0.585,0.5529794692993164,12452,0.0,0.0,0.0
|
||||
2022-12-29 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5529794692993164,1228,0.0,0.0,0.0
|
||||
2022-12-30 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2023-01-03 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5529794692993164,25461,0.0,0.0,0.0
|
||||
2023-01-04 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2023-01-05 00:00:00+00:00,0.585,0.5906999969482422,0.5720000076293945,0.585,0.5529794692993164,9855,0.0,0.0,0.0
|
||||
2023-01-06 00:00:00+00:00,0.585,0.5713100051879882,0.5713100051879882,0.585,0.5529794692993164,1500,0.0,0.0,0.0
|
||||
2023-01-09 00:00:00+00:00,0.585,0.5702999877929688,0.5702999877929688,0.585,0.5529794692993164,9101,0.0,0.0,0.0
|
||||
2023-01-10 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794692993164,20891,0.0,0.0,0.0
|
||||
2023-01-11 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2023-01-12 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2023-01-13 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5529794692993164,8881,0.0,0.0,0.0
|
||||
2023-01-16 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794692993164,1271,0.0,0.0,0.0
|
||||
2023-01-17 00:00:00+00:00,0.585,0.5906999969482422,0.56,0.585,0.5529794692993164,20064,0.0,0.0,0.0
|
||||
2023-01-18 00:00:00+00:00,0.585,0.5700000000000001,0.56,0.585,0.5529794692993164,3709,0.0,0.0,0.0
|
||||
2023-01-19 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2023-01-20 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794692993164,1225,0.0,0.0,0.0
|
||||
2023-01-23 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2023-01-24 00:00:00+00:00,0.585,0.5906999969482422,0.5906999969482422,0.585,0.5529794692993164,10000,0.0,0.0,0.0
|
||||
2023-01-25 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794692993164,2706,0.0,0.0,0.0
|
||||
2023-01-26 00:00:00+00:00,0.585,0.56,0.56,0.585,0.5529794692993164,2076,0.0,0.0,0.0
|
||||
2023-01-27 00:00:00+00:00,0.585,0.585,0.585,0.585,0.5529794692993164,0,0.0,0.0,0.0
|
||||
2023-01-30 00:00:00+00:00,0.585,0.555,0.555,0.58,0.5482531356811523,20247,0.0,0.0,0.0
|
||||
2023-01-31 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.5482531356811523,10000,0.0,0.0,0.0
|
||||
2023-02-01 00:00:00+00:00,0.58,0.55,0.55,0.58,0.5482531356811523,10644,0.0,0.0,0.0
|
||||
2023-02-02 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5482531356811523,0,0.0,0.0,0.0
|
||||
2023-02-03 00:00:00+00:00,0.58,0.5856999969482422,0.5856999969482422,0.58,0.5482531356811523,1228,0.0,0.0,0.0
|
||||
2023-02-06 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5482531356811523,0,0.0,0.0,0.0
|
||||
2023-02-07 00:00:00+00:00,0.58,0.555,0.555,0.58,0.5482531356811523,2500,0.0,0.0,0.0
|
||||
2023-02-08 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5482531356811523,0,0.0,0.0,0.0
|
||||
2023-02-09 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5482531356811523,0,0.0,0.0,0.0
|
||||
2023-02-10 00:00:00+00:00,0.58,0.58,0.58,0.58,0.5482531356811523,0,0.0,0.0,0.0
|
||||
2023-02-13 00:00:00+00:00,0.58,0.58,0.58,0.5750000000000001,0.5435268020629883,12276,0.0,0.0,0.0
|
||||
2023-02-14 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.5435268020629883,4049,0.0,0.0,0.0
|
||||
2023-02-15 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.5435268020629883,5000,0.0,0.0,0.0
|
||||
2023-02-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-02-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-02-20 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.5602999877929687,0.5750000000000001,0.5435268020629883,20123,0.0,0.0,0.0
|
||||
2023-02-21 00:00:00+00:00,0.5750000000000001,0.5668999862670898,0.56,0.5750000000000001,0.5435268020629883,413641,0.0,0.0,0.0
|
||||
2023-02-22 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5435268020629883,51462,0.0,0.0,0.0
|
||||
2023-02-23 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-02-24 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-02-27 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-02-28 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5435268020629883,21569,0.0,0.0,0.0
|
||||
2023-03-01 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5435268020629883,10000,0.0,0.0,0.0
|
||||
2023-03-02 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-03 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5435268020629883,7892,0.0,0.0,0.0
|
||||
2023-03-06 00:00:00+00:00,0.5750000000000001,0.5602999877929687,0.56,0.5750000000000001,0.5435268020629883,35268,0.0,0.0,0.0
|
||||
2023-03-07 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5435268020629883,13200,0.0,0.0,0.0
|
||||
2023-03-08 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-09 00:00:00+00:00,0.5750000000000001,0.56,0.56,0.5750000000000001,0.5435268020629883,7663,0.0,0.0,0.0
|
||||
2023-03-10 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-13 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-14 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-15 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-16 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-17 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-20 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-21 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-22 00:00:00+00:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-23 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5435268020629883,17334,0.0,0.0,0.0
|
||||
2023-03-24 00:00:00+00:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5435268020629883,22500,0.0,0.0,0.0
|
||||
2023-03-27 00:00:00+01:00,0.5750000000000001,0.58,0.56,0.5750000000000001,0.5435268020629883,7206,0.0,0.0,0.0
|
||||
2023-03-28 00:00:00+01:00,0.5750000000000001,0.5718999862670898,0.5668999862670898,0.5750000000000001,0.5435268020629883,182252,0.0,0.0,0.0
|
||||
2023-03-29 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.5435268020629883,8118,0.0,0.0,0.0
|
||||
2023-03-30 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-03-31 00:00:00+01:00,0.5750000000000001,0.564900016784668,0.56,0.5750000000000001,0.5435268020629883,12159,0.0,0.0,0.0
|
||||
2023-04-03 00:00:00+01:00,0.5750000000000001,0.5806999969482421,0.56,0.5750000000000001,0.5435268020629883,9477,0.0,0.0,0.0
|
||||
2023-04-04 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-04-05 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-04-06 00:00:00+01:00,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5750000000000001,0.5435268020629883,0,0.0,0.0,0.0
|
||||
2023-04-11 00:00:00+01:00,0.5750000000000001,0.54,0.54,0.5750000000000001,0.5435268020629883,16661,0.0,0.0,0.0
|
||||
2023-04-12 00:00:00+01:00,0.5750000000000001,0.535,0.535,0.5725,0.5411636734008789,12000,0.0,0.0,0.0
|
||||
2023-04-13 00:00:00+01:00,0.5725,0.56,0.56,0.5700000000000001,0.5388005065917969,1459,0.0,0.0,0.0
|
||||
2023-04-14 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5388005065917969,7500,0.0,0.0,0.0
|
||||
2023-04-17 00:00:00+01:00,0.5700000000000001,0.569900016784668,0.569900016784668,0.5700000000000001,0.5388005065917969,5227,0.0,0.0,0.0
|
||||
@@ -362,9 +362,9 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2023-06-13 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.5650000000000001,0.5340741729736328,4006,0.0,0.0,0.0
|
||||
2023-06-14 00:00:00+01:00,0.5650000000000001,0.5608000183105469,0.54,0.5650000000000001,0.5340741729736328,3597,0.0,0.0,0.0
|
||||
2023-06-15 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5340741729736328,0,0.0,0.0,0.0
|
||||
2023-06-16 00:00:00+01:00,0.5825,0.585,0.585,0.5975,0.5647952270507812,1000,0.0,0.0,0.0
|
||||
2023-06-19 00:00:00+01:00,0.5975,0.585,0.585,0.5975,0.5647952270507812,12038,0.0,0.0,0.0
|
||||
2023-06-20 00:00:00+01:00,0.5975,0.5975,0.5975,0.5975,0.5647952270507812,0,0.0,0.0,0.0
|
||||
2023-06-16 00:00:00+01:00,0.5825,0.585,0.585,0.5975,0.5647952651977539,1000,0.0,0.0,0.0
|
||||
2023-06-19 00:00:00+01:00,0.5975,0.585,0.585,0.5975,0.5647952651977539,12038,0.0,0.0,0.0
|
||||
2023-06-20 00:00:00+01:00,0.5975,0.5975,0.5975,0.5975,0.5647952651977539,0,0.0,0.0,0.0
|
||||
2023-06-21 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5671584320068359,0,0.0,0.0,0.0
|
||||
2023-06-22 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5671584320068359,0,0.0,0.0,0.0
|
||||
2023-06-23 00:00:00+01:00,0.6,0.585,0.585,0.6,0.5671584320068359,6482,0.0,0.0,0.0
|
||||
@@ -376,16 +376,16 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2023-07-03 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5671584320068359,0,0.0,0.0,0.0
|
||||
2023-07-04 00:00:00+01:00,0.6,0.6054000091552735,0.6054000091552735,0.6,0.5671584320068359,6557,0.0,0.0,0.0
|
||||
2023-07-05 00:00:00+01:00,0.6,0.6,0.6,0.6,0.5671584320068359,0,0.0,0.0,0.0
|
||||
2023-07-06 00:00:00+01:00,0.6,0.585,0.5802999877929688,0.595,0.5624320983886719,7299,0.0,0.0,0.0
|
||||
2023-07-07 00:00:00+01:00,0.595,0.5802999877929688,0.5802999877929688,0.595,0.5624320983886719,13000,0.0,0.0,0.0
|
||||
2023-07-10 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5624320983886719,0,0.0,0.0,0.0
|
||||
2023-07-11 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5624320983886719,0,0.0,0.0,0.0
|
||||
2023-07-12 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5624320983886719,0,0.0,0.0,0.0
|
||||
2023-07-13 00:00:00+01:00,0.595,0.6025,0.585,0.595,0.5624320983886719,372468,0.0,0.0,0.0
|
||||
2023-07-14 00:00:00+01:00,0.595,0.5700000000000001,0.5700000000000001,0.595,0.5624320983886719,1919,0.0,0.0,0.0
|
||||
2023-07-17 00:00:00+01:00,0.595,0.6025,0.6025,0.595,0.5624320983886719,3400,0.0,0.0,0.0
|
||||
2023-07-18 00:00:00+01:00,0.595,0.5650000000000001,0.5650000000000001,0.59,0.5577057647705078,14146,0.0,0.0,0.0
|
||||
2023-07-19 00:00:00+01:00,0.59,0.5970000076293945,0.5970000076293945,0.59,0.5577057647705078,1000,0.0,0.0,0.0
|
||||
2023-07-06 00:00:00+01:00,0.6,0.585,0.5802999877929688,0.595,0.5624321365356445,7299,0.0,0.0,0.0
|
||||
2023-07-07 00:00:00+01:00,0.595,0.5802999877929688,0.5802999877929688,0.595,0.5624321365356445,13000,0.0,0.0,0.0
|
||||
2023-07-10 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5624321365356445,0,0.0,0.0,0.0
|
||||
2023-07-11 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5624321365356445,0,0.0,0.0,0.0
|
||||
2023-07-12 00:00:00+01:00,0.595,0.595,0.595,0.595,0.5624321365356445,0,0.0,0.0,0.0
|
||||
2023-07-13 00:00:00+01:00,0.595,0.6025,0.585,0.595,0.5624321365356445,372468,0.0,0.0,0.0
|
||||
2023-07-14 00:00:00+01:00,0.595,0.5700000000000001,0.5700000000000001,0.595,0.5624321365356445,1919,0.0,0.0,0.0
|
||||
2023-07-17 00:00:00+01:00,0.595,0.6025,0.6025,0.595,0.5624321365356445,3400,0.0,0.0,0.0
|
||||
2023-07-18 00:00:00+01:00,0.595,0.5650000000000001,0.5650000000000001,0.59,0.5577058029174805,14146,0.0,0.0,0.0
|
||||
2023-07-19 00:00:00+01:00,0.59,0.5970000076293945,0.5970000076293945,0.59,0.5577058029174805,1000,0.0,0.0,0.0
|
||||
2023-07-20 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5389831924438476,0,0.0002,0.0,0.0
|
||||
2023-07-21 00:00:00+01:00,0.5700000000000001,0.5770000076293945,0.5770000076293945,0.5700000000000001,0.5389831924438476,344,0.0,0.0,0.0
|
||||
2023-07-24 00:00:00+01:00,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5700000000000001,0.5389831924438476,0,0.0,0.0,0.0
|
||||
@@ -396,7 +396,7 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2023-07-31 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.534255256652832,0,0.0,0.0,0.0
|
||||
2023-08-01 00:00:00+01:00,0.5650000000000001,0.5720000076293945,0.5720000076293945,0.5650000000000001,0.534255256652832,600,0.0,0.0,0.0
|
||||
2023-08-02 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.534255256652832,0,0.0,0.0,0.0
|
||||
2023-08-03 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.54,0.5106156539916993,1731,0.0,0.0,0.0
|
||||
2023-08-03 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.54,0.5106156921386719,1731,0.0,0.0,0.0
|
||||
2023-08-04 00:00:00+01:00,0.5650000000000001,0.54,0.54,0.5650000000000001,0.534255256652832,1800,0.0,0.0,0.0
|
||||
2023-08-07 00:00:00+01:00,0.5650000000000001,0.5720000076293945,0.5720000076293945,0.5650000000000001,0.534255256652832,8612,0.0,0.0,0.0
|
||||
2023-08-08 00:00:00+01:00,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.5650000000000001,0.534255256652832,0,0.0,0.0,0.0
|
||||
@@ -684,3 +684,43 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits,Capital Gai
|
||||
2024-09-18 00:00:00+01:00,0.555,0.54,0.54,0.555,0.555,9547,0.0,0.0,0.0
|
||||
2024-09-19 00:00:00+01:00,0.555,0.54,0.54,0.555,0.555,10580,0.0,0.0,0.0
|
||||
2024-09-20 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-09-23 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-09-24 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-09-25 00:00:00+01:00,0.555,0.545099983215332,0.545099983215332,0.555,0.555,223787,0.0,0.0,0.0
|
||||
2024-09-26 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-09-27 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-09-30 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-01 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-02 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-03 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-04 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-07 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-08 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-09 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-10 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-11 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-14 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-15 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-16 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-17 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-18 00:00:00+01:00,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0.005550000071525574,0,0.0,0.0,0.0
|
||||
2024-10-21 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-10-22 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-10-23 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-10-24 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-10-25 00:00:00+01:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-10-28 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-10-29 00:00:00+00:00,0.555,0.5650000000000001,0.54,0.555,0.555,1056,0.0,0.0,0.0
|
||||
2024-10-30 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-10-31 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-01 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-04 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-05 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-06 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-07 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-08 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-11 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-12 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-13 00:00:00+00:00,0.555,0.54,0.54,0.555,0.555,1180,0.0,0.0,0.0
|
||||
2024-11-14 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
2024-11-15 00:00:00+00:00,0.555,0.555,0.555,0.555,0.555,0,0.0,0.0,0.0
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,128 +1,128 @@
|
||||
Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
|
||||
2022-01-04 00:00:00-05:00,3.8299999237060547,4.269999980926514,3.8299999237060547,4.0,2.2503862380981445,559600,0.0,0.0
|
||||
2022-01-05 00:00:00-05:00,4.050000190734863,4.199999809265137,4.039999961853027,4.050000190734863,2.2785160541534424,467700,0.0,0.0
|
||||
2022-01-06 00:00:00-05:00,4.150000095367432,4.179999828338623,4.050000190734863,4.090000152587891,2.3010201454162598,393300,0.0,0.0
|
||||
2022-01-07 00:00:00-05:00,4.130000114440918,4.230000019073486,4.070000171661377,4.159999847412109,2.3404016494750977,860600,0.0,0.0
|
||||
2022-01-06 00:00:00-05:00,4.150000095367432,4.179999828338623,4.050000190734863,4.090000152587891,2.3010199069976807,393300,0.0,0.0
|
||||
2022-01-07 00:00:00-05:00,4.130000114440918,4.230000019073486,4.070000171661377,4.159999847412109,2.3404018878936768,860600,0.0,0.0
|
||||
2022-01-10 00:00:00-05:00,4.199999809265137,4.199999809265137,4.119999885559082,4.199999809265137,2.362905502319336,281900,0.0,0.0
|
||||
2022-01-11 00:00:00-05:00,4.199999809265137,4.460000038146973,4.159999847412109,4.420000076293945,2.4866766929626465,695900,0.0,0.0
|
||||
2022-01-12 00:00:00-05:00,4.449999809265137,4.639999866485596,4.449999809265137,4.579999923706055,2.5766923427581787,452500,0.0,0.0
|
||||
2022-01-13 00:00:00-05:00,4.590000152587891,4.639999866485596,4.420000076293945,4.46999979019165,2.5148067474365234,373700,0.0,0.0
|
||||
2022-01-14 00:00:00-05:00,4.480000019073486,4.590000152587891,4.429999828338623,4.559999942779541,2.5654404163360596,339600,0.0,0.0
|
||||
2022-01-11 00:00:00-05:00,4.199999809265137,4.460000038146973,4.159999847412109,4.420000076293945,2.4866771697998047,695900,0.0,0.0
|
||||
2022-01-12 00:00:00-05:00,4.449999809265137,4.639999866485596,4.449999809265137,4.579999923706055,2.5766921043395996,452500,0.0,0.0
|
||||
2022-01-13 00:00:00-05:00,4.590000152587891,4.639999866485596,4.420000076293945,4.46999979019165,2.5148065090179443,373700,0.0,0.0
|
||||
2022-01-14 00:00:00-05:00,4.480000019073486,4.590000152587891,4.429999828338623,4.559999942779541,2.5654401779174805,339600,0.0,0.0
|
||||
2022-01-17 00:00:00-05:00,4.570000171661377,4.760000228881836,4.519999980926514,4.679999828338623,2.6329519748687744,317900,0.0,0.0
|
||||
2022-01-18 00:00:00-05:00,4.75,4.78000020980835,4.650000095367432,4.659999847412109,2.6217000484466553,317400,0.0,0.0
|
||||
2022-01-19 00:00:00-05:00,4.71999979019165,4.730000019073486,4.489999771118164,4.519999980926514,2.5429365634918213,642600,0.0,0.0
|
||||
2022-01-20 00:00:00-05:00,4.400000095367432,4.639999866485596,4.320000171661377,4.539999961853027,2.5541882514953613,780900,0.0,0.0
|
||||
2022-01-21 00:00:00-05:00,4.460000038146973,4.579999923706055,4.369999885559082,4.420000076293945,2.4866766929626465,426200,0.0,0.0
|
||||
2022-01-18 00:00:00-05:00,4.75,4.78000020980835,4.650000095367432,4.659999847412109,2.621699810028076,317400,0.0,0.0
|
||||
2022-01-19 00:00:00-05:00,4.71999979019165,4.730000019073486,4.489999771118164,4.519999980926514,2.542936325073242,642600,0.0,0.0
|
||||
2022-01-20 00:00:00-05:00,4.400000095367432,4.639999866485596,4.320000171661377,4.539999961853027,2.5541887283325195,780900,0.0,0.0
|
||||
2022-01-21 00:00:00-05:00,4.460000038146973,4.579999923706055,4.369999885559082,4.420000076293945,2.4866771697998047,426200,0.0,0.0
|
||||
2022-01-24 00:00:00-05:00,4.309999942779541,4.400000095367432,4.070000171661377,4.380000114440918,2.4641730785369873,391900,0.0,0.0
|
||||
2022-01-25 00:00:00-05:00,4.400000095367432,4.639999866485596,4.309999942779541,4.579999923706055,2.5766923427581787,461500,0.0,0.0
|
||||
2022-01-25 00:00:00-05:00,4.400000095367432,4.639999866485596,4.309999942779541,4.579999923706055,2.5766921043395996,461500,0.0,0.0
|
||||
2022-01-26 00:00:00-05:00,4.699999809265137,4.75,4.550000190734863,4.570000171661377,2.571066379547119,229400,0.0,0.0
|
||||
2022-01-27 00:00:00-05:00,4.590000152587891,4.699999809265137,4.429999828338623,4.480000019073486,2.520432710647583,1782700,0.0,0.0
|
||||
2022-01-28 00:00:00-05:00,4.539999961853027,4.699999809265137,4.53000020980835,4.690000057220459,2.638578176498413,340300,0.0,0.0
|
||||
2022-01-31 00:00:00-05:00,4.670000076293945,4.960000038146973,4.670000076293945,4.889999866485596,2.7510972023010254,341600,0.0,0.0
|
||||
2022-01-28 00:00:00-05:00,4.539999961853027,4.699999809265137,4.53000020980835,4.690000057220459,2.638577699661255,340300,0.0,0.0
|
||||
2022-01-31 00:00:00-05:00,4.670000076293945,4.960000038146973,4.670000076293945,4.889999866485596,2.7510974407196045,341600,0.0,0.0
|
||||
2022-02-01 00:00:00-05:00,4.900000095367432,4.900000095367432,4.75,4.809999942779541,2.706089496612549,245000,0.0,0.0
|
||||
2022-02-02 00:00:00-05:00,4.789999961853027,4.880000114440918,4.659999847412109,4.75,2.6723339557647705,335900,0.0,0.0
|
||||
2022-02-02 00:00:00-05:00,4.789999961853027,4.880000114440918,4.659999847412109,4.75,2.6723337173461914,335900,0.0,0.0
|
||||
2022-02-03 00:00:00-05:00,4.71999979019165,4.800000190734863,4.579999923706055,4.730000019073486,2.6610817909240723,567100,0.0,0.0
|
||||
2022-02-04 00:00:00-05:00,4.760000228881836,4.980000019073486,4.760000228881836,4.880000114440918,2.745471239089966,728600,0.0,0.0
|
||||
2022-02-07 00:00:00-05:00,4.800000190734863,4.849999904632568,4.639999866485596,4.670000076293945,2.627326011657715,509100,0.0,0.0
|
||||
2022-02-07 00:00:00-05:00,4.800000190734863,4.849999904632568,4.639999866485596,4.670000076293945,2.627326250076294,509100,0.0,0.0
|
||||
2022-02-08 00:00:00-05:00,4.650000095367432,4.650000095367432,4.360000133514404,4.460000038146973,2.509180784225464,520500,0.0,0.0
|
||||
2022-02-09 00:00:00-05:00,4.46999979019165,4.619999885559082,4.449999809265137,4.550000190734863,2.559814453125,225400,0.0,0.0
|
||||
2022-02-10 00:00:00-05:00,4.519999980926514,4.610000133514404,4.449999809265137,4.510000228881836,2.537310838699341,225300,0.0,0.0
|
||||
2022-02-11 00:00:00-05:00,4.5,4.630000114440918,4.489999771118164,4.630000114440918,2.6048221588134766,380600,0.0,0.0
|
||||
2022-02-11 00:00:00-05:00,4.5,4.630000114440918,4.489999771118164,4.630000114440918,2.6048223972320557,380600,0.0,0.0
|
||||
2022-02-14 00:00:00-05:00,4.5,4.550000190734863,4.400000095367432,4.510000228881836,2.537310838699341,507600,0.0,0.0
|
||||
2022-02-15 00:00:00-05:00,4.420000076293945,4.71999979019165,4.420000076293945,4.690000057220459,2.638578176498413,342800,0.0,0.0
|
||||
2022-02-16 00:00:00-05:00,4.699999809265137,4.800000190734863,4.539999961853027,4.579999923706055,2.5766923427581787,508700,0.0,0.0
|
||||
2022-02-15 00:00:00-05:00,4.420000076293945,4.71999979019165,4.420000076293945,4.690000057220459,2.638577699661255,342800,0.0,0.0
|
||||
2022-02-16 00:00:00-05:00,4.699999809265137,4.800000190734863,4.539999961853027,4.579999923706055,2.5766921043395996,508700,0.0,0.0
|
||||
2022-02-17 00:00:00-05:00,4.599999904632568,4.659999847412109,4.519999980926514,4.570000171661377,2.571066379547119,309900,0.0,0.0
|
||||
2022-02-18 00:00:00-05:00,4.510000228881836,4.559999942779541,4.380000114440918,4.420000076293945,2.4866766929626465,191700,0.0,0.0
|
||||
2022-02-18 00:00:00-05:00,4.510000228881836,4.559999942779541,4.380000114440918,4.420000076293945,2.4866771697998047,191700,0.0,0.0
|
||||
2022-02-22 00:00:00-05:00,4.460000038146973,4.599999904632568,4.429999828338623,4.53000020980835,2.548562526702881,1063700,0.0,0.0
|
||||
2022-02-23 00:00:00-05:00,4.590000152587891,4.739999771118164,4.559999942779541,4.679999828338623,2.6329519748687744,256600,0.0,0.0
|
||||
2022-02-24 00:00:00-05:00,4.699999809265137,4.820000171661377,4.559999942779541,4.670000076293945,2.627326011657715,392200,0.0,0.0
|
||||
2022-02-25 00:00:00-05:00,4.659999847412109,4.880000114440918,4.630000114440918,4.849999904632568,2.728593111038208,264400,0.0,0.0
|
||||
2022-02-24 00:00:00-05:00,4.699999809265137,4.820000171661377,4.559999942779541,4.670000076293945,2.627326250076294,392200,0.0,0.0
|
||||
2022-02-25 00:00:00-05:00,4.659999847412109,4.880000114440918,4.630000114440918,4.849999904632568,2.728593349456787,264400,0.0,0.0
|
||||
2022-02-28 00:00:00-05:00,4.880000114440918,5.099999904632568,4.869999885559082,5.079999923706055,2.8579905033111572,543200,0.0,0.0
|
||||
2022-03-01 00:00:00-05:00,5.159999847412109,5.28000020980835,5.03000020980835,5.179999828338623,2.914250135421753,481700,0.0,0.0
|
||||
2022-03-02 00:00:00-05:00,5.239999771118164,5.309999942779541,5.079999923706055,5.179999828338623,2.914250135421753,232200,0.0,0.0
|
||||
2022-03-03 00:00:00-05:00,5.21999979019165,5.230000019073486,4.949999809265137,4.96999979019165,2.796105146408081,234500,0.0,0.0
|
||||
2022-03-04 00:00:00-05:00,5.03000020980835,5.389999866485596,5.03000020980835,5.360000133514404,3.0155177116394043,1110400,0.0,0.0
|
||||
2022-03-07 00:00:00-05:00,5.570000171661377,5.849999904632568,5.440000057220459,5.650000095367432,3.1786704063415527,738400,0.0,0.0
|
||||
2022-03-08 00:00:00-05:00,5.829999923706055,5.889999866485596,5.46999979019165,5.679999828338623,3.1955485343933105,733300,0.0,0.0
|
||||
2022-03-03 00:00:00-05:00,5.21999979019165,5.230000019073486,4.949999809265137,4.96999979019165,2.796104907989502,234500,0.0,0.0
|
||||
2022-03-04 00:00:00-05:00,5.03000020980835,5.389999866485596,5.03000020980835,5.360000133514404,3.0155179500579834,1110400,0.0,0.0
|
||||
2022-03-07 00:00:00-05:00,5.570000171661377,5.849999904632568,5.440000057220459,5.650000095367432,3.178670644760132,738400,0.0,0.0
|
||||
2022-03-08 00:00:00-05:00,5.829999923706055,5.889999866485596,5.46999979019165,5.679999828338623,3.1955482959747314,733300,0.0,0.0
|
||||
2022-03-09 00:00:00-05:00,5.300000190734863,5.639999866485596,5.199999809265137,5.21999979019165,2.936753749847412,796500,0.0,0.0
|
||||
2022-03-10 00:00:00-05:00,5.360000133514404,5.449999809265137,5.239999771118164,5.309999942779541,2.9873881340026855,454800,0.0,0.0
|
||||
2022-03-11 00:00:00-05:00,5.289999961853027,5.329999923706055,5.110000133514404,5.25,2.95363187789917,222100,0.0,0.0
|
||||
2022-03-14 00:00:00-04:00,5.050000190734863,5.099999904632568,4.559999942779541,4.789999961853027,2.6948373317718506,642400,0.0,0.0
|
||||
2022-03-10 00:00:00-05:00,5.360000133514404,5.449999809265137,5.239999771118164,5.309999942779541,2.9873876571655273,454800,0.0,0.0
|
||||
2022-03-11 00:00:00-05:00,5.289999961853027,5.329999923706055,5.110000133514404,5.25,2.953632116317749,222100,0.0,0.0
|
||||
2022-03-14 00:00:00-04:00,5.050000190734863,5.099999904632568,4.559999942779541,4.789999961853027,2.6948375701904297,642400,0.0,0.0
|
||||
2022-03-15 00:00:00-04:00,4.53000020980835,4.889999866485596,4.420000076293945,4.610000133514404,2.5935702323913574,594600,0.0,0.0
|
||||
2022-03-16 00:00:00-04:00,4.579999923706055,4.829999923706055,4.579999923706055,4.679999828338623,2.6329519748687744,583800,0.0,0.0
|
||||
2022-03-17 00:00:00-04:00,4.789999961853027,4.960000038146973,4.739999771118164,4.800000190734863,2.7004637718200684,654300,0.0,0.0
|
||||
2022-03-18 00:00:00-04:00,4.71999979019165,4.920000076293945,4.710000038146973,4.71999979019165,2.6554555892944336,284100,0.0,0.0
|
||||
2022-03-18 00:00:00-04:00,4.71999979019165,4.920000076293945,4.710000038146973,4.71999979019165,2.6554558277130127,284100,0.0,0.0
|
||||
2022-03-21 00:00:00-04:00,4.829999923706055,5.010000228881836,4.820000171661377,4.980000019073486,2.8017311096191406,344500,0.0,0.0
|
||||
2022-03-22 00:00:00-04:00,4.96999979019165,4.96999979019165,4.820000171661377,4.940000057220459,2.7792270183563232,374000,0.0,0.0
|
||||
2022-03-23 00:00:00-04:00,5.010000228881836,5.099999904632568,4.940000057220459,4.940000057220459,2.7792270183563232,535800,0.0,0.0
|
||||
2022-03-24 00:00:00-04:00,5.0,5.0,4.840000152587891,4.900000095367432,2.756723165512085,385800,0.0,0.0
|
||||
2022-03-24 00:00:00-04:00,5.0,5.0,4.840000152587891,4.900000095367432,2.756723403930664,385800,0.0,0.0
|
||||
2022-03-25 00:00:00-04:00,4.849999904632568,5.21999979019165,4.840000152587891,5.179999828338623,2.914250135421753,821200,0.0,0.0
|
||||
2022-03-28 00:00:00-04:00,4.900000095367432,5.110000133514404,4.900000095367432,5.070000171661377,2.8523647785186768,338100,0.0,0.0
|
||||
2022-03-29 00:00:00-04:00,4.940000057220459,5.230000019073486,4.809999942779541,5.210000038146973,2.9311282634735107,628200,0.0,0.0
|
||||
2022-03-29 00:00:00-04:00,4.940000057220459,5.230000019073486,4.809999942779541,5.210000038146973,2.9311280250549316,628200,0.0,0.0
|
||||
2022-03-30 00:00:00-04:00,5.269999980926514,5.400000095367432,5.269999980926514,5.369999885559082,3.021143674850464,448200,0.0,0.0
|
||||
2022-03-31 00:00:00-04:00,5.300000190734863,5.409999847412109,5.260000228881836,5.309999942779541,2.9873881340026855,308000,0.0,0.0
|
||||
2022-03-31 00:00:00-04:00,5.300000190734863,5.409999847412109,5.260000228881836,5.309999942779541,2.9873876571655273,308000,0.0,0.0
|
||||
2022-04-01 00:00:00-04:00,5.210000038146973,5.400000095367432,5.210000038146973,5.28000020980835,2.9705100059509277,279000,0.0,0.0
|
||||
2022-04-04 00:00:00-04:00,5.349999904632568,5.429999828338623,5.260000228881836,5.300000190734863,2.9817616939544678,298100,0.0,0.0
|
||||
2022-04-04 00:00:00-04:00,5.349999904632568,5.429999828338623,5.260000228881836,5.300000190734863,2.981761932373047,298100,0.0,0.0
|
||||
2022-04-05 00:00:00-04:00,5.329999923706055,5.420000076293945,5.199999809265137,5.21999979019165,2.936753749847412,308800,0.0,0.0
|
||||
2022-04-06 00:00:00-04:00,5.179999828338623,5.309999942779541,5.090000152587891,5.119999885559082,2.8804941177368164,395100,0.0,0.0
|
||||
2022-04-06 00:00:00-04:00,5.179999828338623,5.309999942779541,5.090000152587891,5.119999885559082,2.8804943561553955,395100,0.0,0.0
|
||||
2022-04-07 00:00:00-04:00,5.159999847412109,5.230000019073486,5.03000020980835,5.179999828338623,2.914250135421753,277200,0.0,0.0
|
||||
2022-04-08 00:00:00-04:00,5.230000019073486,5.400000095367432,5.190000057220459,5.349999904632568,3.0098917484283447,281000,0.0,0.0
|
||||
2022-04-11 00:00:00-04:00,5.389999866485596,5.389999866485596,5.210000038146973,5.309999942779541,2.9873881340026855,474300,0.0,0.0
|
||||
2022-04-08 00:00:00-04:00,5.230000019073486,5.400000095367432,5.190000057220459,5.349999904632568,3.0098915100097656,281000,0.0,0.0
|
||||
2022-04-11 00:00:00-04:00,5.389999866485596,5.389999866485596,5.210000038146973,5.309999942779541,2.9873876571655273,474300,0.0,0.0
|
||||
2022-04-12 00:00:00-04:00,5.400000095367432,5.5,5.300000190734863,5.329999923706055,2.9986398220062256,440400,0.0,0.0
|
||||
2022-04-13 00:00:00-04:00,5.400000095367432,5.46999979019165,5.309999942779541,5.360000133514404,3.0155177116394043,553200,0.0,0.0
|
||||
2022-04-14 00:00:00-04:00,5.369999885559082,5.510000228881836,5.349999904632568,5.429999828338623,3.0548994541168213,399900,0.0,0.0
|
||||
2022-04-18 00:00:00-04:00,5.460000038146973,5.639999866485596,5.400000095367432,5.550000190734863,3.1224112510681152,412700,0.0,0.0
|
||||
2022-04-13 00:00:00-04:00,5.400000095367432,5.46999979019165,5.309999942779541,5.360000133514404,3.0155179500579834,553200,0.0,0.0
|
||||
2022-04-14 00:00:00-04:00,5.369999885559082,5.510000228881836,5.349999904632568,5.429999828338623,3.054899215698242,399900,0.0,0.0
|
||||
2022-04-18 00:00:00-04:00,5.460000038146973,5.639999866485596,5.400000095367432,5.550000190734863,3.122411012649536,412700,0.0,0.0
|
||||
2022-04-19 00:00:00-04:00,5.489999771118164,5.489999771118164,5.21999979019165,5.329999923706055,2.9986398220062256,375600,0.0,0.0
|
||||
2022-04-20 00:00:00-04:00,5.329999923706055,5.400000095367432,5.25,5.28000020980835,2.9705100059509277,245400,0.0,0.0
|
||||
2022-04-21 00:00:00-04:00,5.289999961853027,5.389999866485596,5.0,5.059999942779541,2.846738576889038,441300,0.0,0.0
|
||||
2022-04-21 00:00:00-04:00,5.289999961853027,5.389999866485596,5.0,5.059999942779541,2.846738815307617,441300,0.0,0.0
|
||||
2022-04-22 00:00:00-04:00,5.059999942779541,5.059999942779541,4.820000171661377,4.829999923706055,2.717341423034668,444800,0.0,0.0
|
||||
2022-04-25 00:00:00-04:00,4.610000133514404,4.800000190734863,4.5,4.739999771118164,2.666707754135132,598100,0.0,0.0
|
||||
2022-04-25 00:00:00-04:00,4.610000133514404,4.800000190734863,4.5,4.739999771118164,2.6667075157165527,598100,0.0,0.0
|
||||
2022-04-26 00:00:00-04:00,4.78000020980835,4.929999828338623,4.730000019073486,4.820000171661377,2.7117154598236084,362000,0.0,0.0
|
||||
2022-04-27 00:00:00-04:00,4.820000171661377,4.909999847412109,4.710000038146973,4.880000114440918,2.745471239089966,306800,0.0,0.0
|
||||
2022-04-28 00:00:00-04:00,4.920000076293945,4.989999771118164,4.800000190734863,4.949999809265137,2.784853219985962,337000,0.0,0.0
|
||||
2022-04-28 00:00:00-04:00,4.920000076293945,4.989999771118164,4.800000190734863,4.949999809265137,2.784852981567383,337000,0.0,0.0
|
||||
2022-04-29 00:00:00-04:00,4.960000038146973,5.0,4.769999980926514,4.820000171661377,2.7117154598236084,312400,0.0,0.0
|
||||
2022-05-02 00:00:00-04:00,4.710000038146973,4.829999923706055,4.630000114440918,4.730000019073486,2.6610817909240723,438800,0.0,0.0
|
||||
2022-05-03 00:00:00-04:00,4.710000038146973,5.03000020980835,4.710000038146973,4.96999979019165,2.796105146408081,675000,0.0,0.0
|
||||
2022-05-03 00:00:00-04:00,4.710000038146973,5.03000020980835,4.710000038146973,4.96999979019165,2.796104907989502,675000,0.0,0.0
|
||||
2022-05-04 00:00:00-04:00,5.0,5.079999923706055,4.900000095367432,5.050000190734863,2.8411126136779785,1268500,0.0,0.0
|
||||
2022-05-05 00:00:00-04:00,5.099999904632568,5.150000095367432,4.860000133514404,5.03000020980835,2.8298609256744385,356000,0.0,0.0
|
||||
2022-05-05 00:00:00-04:00,5.099999904632568,5.150000095367432,4.860000133514404,5.03000020980835,2.8298606872558594,356000,0.0,0.0
|
||||
2022-05-06 00:00:00-04:00,4.96999979019165,5.139999866485596,4.880000114440918,4.940000057220459,2.7792270183563232,250600,0.0,0.0
|
||||
2022-05-09 00:00:00-04:00,4.78000020980835,4.78000020980835,4.460000038146973,4.579999923706055,2.5766923427581787,587200,0.0,0.0
|
||||
2022-05-10 00:00:00-04:00,4.650000095367432,4.75,4.440000057220459,4.539999961853027,2.5541882514953613,359400,0.0,0.0
|
||||
2022-05-09 00:00:00-04:00,4.78000020980835,4.78000020980835,4.460000038146973,4.579999923706055,2.5766921043395996,587200,0.0,0.0
|
||||
2022-05-10 00:00:00-04:00,4.650000095367432,4.75,4.440000057220459,4.539999961853027,2.5541887283325195,359400,0.0,0.0
|
||||
2022-05-11 00:00:00-04:00,4.670000076293945,4.670000076293945,4.21999979019165,4.329999923706055,2.4360432624816895,709200,0.0,0.0
|
||||
2022-05-12 00:00:00-04:00,4.349999904632568,4.489999771118164,4.25,4.380000114440918,2.4641730785369873,564300,0.0,0.0
|
||||
2022-05-13 00:00:00-04:00,4.429999828338623,4.840000152587891,4.429999828338623,4.769999980926514,2.6835856437683105,800600,0.0,0.0
|
||||
2022-05-16 00:00:00-04:00,4.769999980926514,5.010000228881836,4.760000228881836,4.920000076293945,2.767975330352783,430900,0.0,0.0
|
||||
2022-05-17 00:00:00-04:00,5.0,5.159999847412109,4.989999771118164,5.130000114440918,2.886120319366455,491800,0.0,0.0
|
||||
2022-05-18 00:00:00-04:00,5.239999771118164,5.28000020980835,4.949999809265137,5.059999942779541,2.846738576889038,526000,0.0,0.0
|
||||
2022-05-19 00:00:00-04:00,4.940000057220459,5.28000020980835,4.940000057220459,5.230000019073486,2.94238018989563,440200,0.0,0.0
|
||||
2022-05-20 00:00:00-04:00,5.179999828338623,5.400000095367432,5.179999828338623,5.349999904632568,3.0098917484283447,510600,0.0,0.0
|
||||
2022-05-24 00:00:00-04:00,5.320000171661377,5.579999923706055,5.300000190734863,5.570000171661377,3.1336631774902344,522100,0.0,0.0
|
||||
2022-05-25 00:00:00-04:00,5.599999904632568,5.760000228881836,5.550000190734863,5.690000057220459,3.201174736022949,634300,0.0,0.0
|
||||
2022-05-26 00:00:00-04:00,5.849999904632568,5.849999904632568,5.610000133514404,5.610000133514404,3.1561667919158936,492900,0.0,0.0
|
||||
2022-05-27 00:00:00-04:00,5.619999885559082,5.78000020980835,5.590000152587891,5.78000020980835,3.2518081665039062,746000,0.0,0.0
|
||||
2022-05-16 00:00:00-04:00,4.769999980926514,5.010000228881836,4.760000228881836,4.920000076293945,2.767974853515625,430900,0.0,0.0
|
||||
2022-05-17 00:00:00-04:00,5.0,5.159999847412109,4.989999771118164,5.130000114440918,2.886120557785034,491800,0.0,0.0
|
||||
2022-05-18 00:00:00-04:00,5.239999771118164,5.28000020980835,4.949999809265137,5.059999942779541,2.846738815307617,526000,0.0,0.0
|
||||
2022-05-19 00:00:00-04:00,4.940000057220459,5.28000020980835,4.940000057220459,5.230000019073486,2.942380428314209,440200,0.0,0.0
|
||||
2022-05-20 00:00:00-04:00,5.179999828338623,5.400000095367432,5.179999828338623,5.349999904632568,3.0098915100097656,510600,0.0,0.0
|
||||
2022-05-24 00:00:00-04:00,5.320000171661377,5.579999923706055,5.300000190734863,5.570000171661377,3.1336629390716553,522100,0.0,0.0
|
||||
2022-05-25 00:00:00-04:00,5.599999904632568,5.760000228881836,5.550000190734863,5.690000057220459,3.20117449760437,634300,0.0,0.0
|
||||
2022-05-26 00:00:00-04:00,5.849999904632568,5.849999904632568,5.610000133514404,5.610000133514404,3.1561665534973145,492900,0.0,0.0
|
||||
2022-05-27 00:00:00-04:00,5.619999885559082,5.78000020980835,5.590000152587891,5.78000020980835,3.251807928085327,746000,0.0,0.0
|
||||
2022-05-30 00:00:00-04:00,5.840000152587891,6.139999866485596,5.840000152587891,6.139999866485596,3.454342842102051,430100,0.0,0.0
|
||||
2022-05-31 00:00:00-04:00,6.150000095367432,6.170000076293945,5.710000038146973,5.840000152587891,3.2855641841888428,3694200,0.0,0.0
|
||||
2022-06-01 00:00:00-04:00,5.96999979019165,6.099999904632568,5.849999904632568,5.949999809265137,3.347449541091919,478200,0.0,0.0
|
||||
2022-06-02 00:00:00-04:00,5.949999809265137,6.070000171661377,5.860000133514404,6.0,3.375579357147217,243400,0.0,0.0
|
||||
2022-06-01 00:00:00-04:00,5.96999979019165,6.099999904632568,5.849999904632568,5.949999809265137,3.347449779510498,478200,0.0,0.0
|
||||
2022-06-02 00:00:00-04:00,5.949999809265137,6.070000171661377,5.860000133514404,6.0,3.375579833984375,243400,0.0,0.0
|
||||
2022-06-03 00:00:00-04:00,5.960000038146973,6.210000038146973,5.889999866485596,6.190000057220459,3.4824728965759277,758200,0.0,0.0
|
||||
2022-06-06 00:00:00-04:00,6.300000190734863,6.369999885559082,6.039999961853027,6.369999885559082,3.583740234375,489200,0.0,0.0
|
||||
2022-06-06 00:00:00-04:00,6.300000190734863,6.369999885559082,6.039999961853027,6.369999885559082,3.583739995956421,489200,0.0,0.0
|
||||
2022-06-07 00:00:00-04:00,6.369999885559082,6.679999828338623,6.269999980926514,6.570000171661377,3.6962597370147705,647300,0.0,0.0
|
||||
2022-06-08 00:00:00-04:00,6.699999809265137,6.71999979019165,6.380000114440918,6.460000038146973,3.634373903274536,727300,0.0,0.0
|
||||
2022-06-09 00:00:00-04:00,6.46999979019165,6.46999979019165,6.28000020980835,6.28000020980835,3.533106565475464,508200,0.0,0.0
|
||||
2022-06-10 00:00:00-04:00,6.28000020980835,6.309999942779541,6.050000190734863,6.170000076293945,3.4712207317352295,448700,0.0,0.0
|
||||
2022-06-13 00:00:00-04:00,6.0,6.079999923706055,5.710000038146973,6.070000171661377,3.414961576461792,462500,0.0,0.0
|
||||
2022-06-14 00:00:00-04:00,6.199999809265137,6.199999809265137,5.670000076293945,5.690000057220459,3.201174736022949,506000,0.0,0.0
|
||||
2022-06-15 00:00:00-04:00,5.75,5.789999961853027,5.449999809265137,5.519999980926514,3.1055331230163574,632600,0.0,0.0
|
||||
2022-06-16 00:00:00-04:00,5.260000228881836,5.409999847412109,5.119999885559082,5.130000114440918,2.886120319366455,745300,0.0,0.0
|
||||
2022-06-17 00:00:00-04:00,5.150000095367432,5.25,4.5,4.599999904632568,2.5879440307617188,2540000,0.0,0.0
|
||||
2022-06-20 00:00:00-04:00,4.579999923706055,4.739999771118164,4.519999980926514,4.690000057220459,2.638578176498413,273900,0.0,0.0
|
||||
2022-06-08 00:00:00-04:00,6.699999809265137,6.71999979019165,6.380000114440918,6.460000038146973,3.634373664855957,727300,0.0,0.0
|
||||
2022-06-09 00:00:00-04:00,6.46999979019165,6.46999979019165,6.28000020980835,6.28000020980835,3.533106803894043,508200,0.0,0.0
|
||||
2022-06-10 00:00:00-04:00,6.28000020980835,6.309999942779541,6.050000190734863,6.170000076293945,3.4712209701538086,448700,0.0,0.0
|
||||
2022-06-13 00:00:00-04:00,6.0,6.079999923706055,5.710000038146973,6.070000171661377,3.414961099624634,462500,0.0,0.0
|
||||
2022-06-14 00:00:00-04:00,6.199999809265137,6.199999809265137,5.670000076293945,5.690000057220459,3.20117449760437,506000,0.0,0.0
|
||||
2022-06-15 00:00:00-04:00,5.75,5.789999961853027,5.449999809265137,5.519999980926514,3.1055328845977783,632600,0.0,0.0
|
||||
2022-06-16 00:00:00-04:00,5.260000228881836,5.409999847412109,5.119999885559082,5.130000114440918,2.886120557785034,745300,0.0,0.0
|
||||
2022-06-17 00:00:00-04:00,5.150000095367432,5.25,4.5,4.599999904632568,2.587944269180298,2540000,0.0,0.0
|
||||
2022-06-20 00:00:00-04:00,4.579999923706055,4.739999771118164,4.519999980926514,4.690000057220459,2.638577699661255,273900,0.0,0.0
|
||||
2022-06-21 00:00:00-04:00,4.800000190734863,4.949999809265137,4.710000038146973,4.769999980926514,2.6835856437683105,592700,0.0,0.0
|
||||
2022-06-22 00:00:00-04:00,4.449999809265137,4.460000038146973,4.300000190734863,4.309999942779541,2.424791097640991,809900,0.0,0.0
|
||||
2022-06-23 00:00:00-04:00,4.329999923706055,4.389999866485596,3.740000009536743,3.8499999046325684,2.165996789932251,1175400,0.0,0.0
|
||||
2022-06-23 00:00:00-04:00,4.329999923706055,4.389999866485596,3.740000009536743,3.8499999046325684,2.165996551513672,1175400,0.0,0.0
|
||||
2022-06-24 00:00:00-04:00,3.9100000858306885,4.170000076293945,3.880000114440918,3.9700000286102295,2.233508348464966,708700,0.0,0.0
|
||||
2022-06-27 00:00:00-04:00,4.070000171661377,4.159999847412109,3.930000066757202,4.099999904632568,2.3066458702087402,638900,0.0,0.0
|
||||
2022-06-27 00:00:00-04:00,4.070000171661377,4.159999847412109,3.930000066757202,4.099999904632568,2.306645631790161,638900,0.0,0.0
|
||||
2022-06-28 00:00:00-04:00,4.199999809265137,4.400000095367432,4.179999828338623,4.309999942779541,2.424791097640991,998100,0.0,0.0
|
||||
2022-06-29 00:00:00-04:00,4.349999904632568,4.400000095367432,4.090000152587891,4.099999904632568,2.3066458702087402,623400,0.0,0.0
|
||||
2022-06-29 00:00:00-04:00,4.349999904632568,4.400000095367432,4.090000152587891,4.099999904632568,2.306645631790161,623400,0.0,0.0
|
||||
2022-06-30 00:00:00-04:00,4.0,4.110000133514404,3.8499999046325684,3.9800000190734863,2.2391343116760254,788400,0.0,0.0
|
||||
2022-07-04 00:00:00-04:00,4.019999980926514,4.050000190734863,3.890000104904175,4.03000020980835,2.2672643661499023,501500,0.0,0.0
|
||||
2022-07-05 00:00:00-04:00,3.9000000953674316,3.930000066757202,3.680000066757202,3.799999952316284,2.137866973876953,1068800,0.0,0.0
|
||||
@@ -130,57 +130,57 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
|
||||
2022-07-07 00:00:00-04:00,3.640000104904175,3.7899999618530273,3.640000104904175,3.7300000190734863,2.098485231399536,537500,0.0,0.0
|
||||
2022-07-08 00:00:00-04:00,3.75,3.880000114440918,3.640000104904175,3.799999952316284,2.137866973876953,380000,0.0,0.0
|
||||
2022-07-11 00:00:00-04:00,3.740000009536743,3.890000104904175,3.640000104904175,3.8299999237060547,2.154744863510132,1113200,0.0,0.0
|
||||
2022-07-12 00:00:00-04:00,3.7100000381469727,3.7899999618530273,3.5199999809265137,3.5399999618530273,1.9915920495986938,693900,0.0,0.0
|
||||
2022-07-12 00:00:00-04:00,3.7100000381469727,3.7899999618530273,3.5199999809265137,3.5399999618530273,1.9915918111801147,693900,0.0,0.0
|
||||
2022-07-13 00:00:00-04:00,3.4600000381469727,3.5799999237060547,3.440000057220459,3.509999990463257,1.974713921546936,537100,0.0,0.0
|
||||
2022-07-14 00:00:00-04:00,3.380000114440918,3.4600000381469727,3.259999990463257,3.440000057220459,1.9353322982788086,877700,0.0,0.0
|
||||
2022-07-15 00:00:00-04:00,3.5199999809265137,3.609999895095825,3.390000104904175,3.5299999713897705,1.9859659671783447,565800,0.0,0.0
|
||||
2022-07-15 00:00:00-04:00,3.5199999809265137,3.609999895095825,3.390000104904175,3.5299999713897705,1.9859658479690552,565800,0.0,0.0
|
||||
2022-07-18 00:00:00-04:00,3.5799999237060547,3.809999942779541,3.559999942779541,3.7699999809265137,2.1209890842437744,1215000,0.0,0.0
|
||||
2022-07-19 00:00:00-04:00,3.759999990463257,3.880000114440918,3.740000009536743,3.8499999046325684,2.165996789932251,861800,0.0,0.0
|
||||
2022-07-19 00:00:00-04:00,3.759999990463257,3.880000114440918,3.740000009536743,3.8499999046325684,2.165996551513672,861800,0.0,0.0
|
||||
2022-07-20 00:00:00-04:00,3.819999933242798,3.890000104904175,3.7300000190734863,3.859999895095825,2.1716225147247314,397100,0.0,0.0
|
||||
2022-07-21 00:00:00-04:00,3.740000009536743,3.799999952316284,3.619999885559082,3.7100000381469727,2.087233304977417,481600,0.0,0.0
|
||||
2022-07-22 00:00:00-04:00,3.740000009536743,3.7899999618530273,3.630000114440918,3.630000114440918,2.0422255992889404,547400,0.0,0.0
|
||||
2022-07-25 00:00:00-04:00,3.6500000953674316,3.890000104904175,3.609999895095825,3.8399999141693115,2.1603708267211914,617400,0.0,0.0
|
||||
2022-07-26 00:00:00-04:00,3.9000000953674316,3.9800000190734863,3.7899999618530273,3.869999885559082,2.17724871635437,538400,0.0,0.0
|
||||
2022-07-27 00:00:00-04:00,3.8499999046325684,4.03000020980835,3.8499999046325684,4.0,2.2503862380981445,607300,0.0,0.0
|
||||
2022-07-28 00:00:00-04:00,4.059999942779541,4.190000057220459,4.019999980926514,4.090000152587891,2.3010201454162598,850200,0.0,0.0
|
||||
2022-07-29 00:00:00-04:00,4.190000057220459,4.369999885559082,4.130000114440918,4.289999961853027,2.413539171218872,953100,0.0,0.0
|
||||
2022-08-02 00:00:00-04:00,4.239999771118164,4.239999771118164,4.03000020980835,4.059999942779541,2.284142017364502,471000,0.0,0.0
|
||||
2022-08-03 00:00:00-04:00,4.090000152587891,4.110000133514404,3.8399999141693115,3.930000066757202,2.2110044956207275,677200,0.0,0.0
|
||||
2022-07-28 00:00:00-04:00,4.059999942779541,4.190000057220459,4.019999980926514,4.090000152587891,2.3010199069976807,850200,0.0,0.0
|
||||
2022-07-29 00:00:00-04:00,4.190000057220459,4.369999885559082,4.130000114440918,4.289999961853027,2.413539409637451,953100,0.0,0.0
|
||||
2022-08-02 00:00:00-04:00,4.239999771118164,4.239999771118164,4.03000020980835,4.059999942779541,2.284141778945923,471000,0.0,0.0
|
||||
2022-08-03 00:00:00-04:00,4.090000152587891,4.110000133514404,3.8399999141693115,3.930000066757202,2.2110047340393066,677200,0.0,0.0
|
||||
2022-08-04 00:00:00-04:00,3.859999895095825,3.880000114440918,3.680000066757202,3.680000066757202,2.0703554153442383,809500,0.0,0.0
|
||||
2022-08-05 00:00:00-04:00,3.609999895095825,3.890000104904175,3.609999895095825,3.8499999046325684,2.165996789932251,380700,0.0,0.0
|
||||
2022-08-05 00:00:00-04:00,3.609999895095825,3.890000104904175,3.609999895095825,3.8499999046325684,2.165996551513672,380700,0.0,0.0
|
||||
2022-08-08 00:00:00-04:00,3.799999952316284,3.940000057220459,3.759999990463257,3.940000057220459,2.216630458831787,429300,0.0,0.0
|
||||
2022-08-09 00:00:00-04:00,4.0,4.03000020980835,3.950000047683716,4.010000228881836,2.256012439727783,328300,0.0,0.0
|
||||
2022-08-09 00:00:00-04:00,4.0,4.03000020980835,3.950000047683716,4.010000228881836,2.256012201309204,328300,0.0,0.0
|
||||
2022-08-10 00:00:00-04:00,4.039999961853027,4.039999961853027,3.9000000953674316,3.990000009536743,2.244760513305664,848100,0.0,0.0
|
||||
2022-08-11 00:00:00-04:00,4.03000020980835,4.190000057220459,3.990000009536743,4.159999847412109,2.3404016494750977,4875600,0.0,0.0
|
||||
2022-08-11 00:00:00-04:00,4.03000020980835,4.190000057220459,3.990000009536743,4.159999847412109,2.3404018878936768,4875600,0.0,0.0
|
||||
2022-08-12 00:00:00-04:00,4.150000095367432,4.420000076293945,4.110000133514404,4.300000190734863,2.4191653728485107,1629200,0.0,0.0
|
||||
2022-08-15 00:00:00-04:00,4.110000133514404,4.369999885559082,4.03000020980835,4.300000190734863,2.4191653728485107,712300,0.0,0.0
|
||||
2022-08-16 00:00:00-04:00,4.369999885559082,4.489999771118164,4.21999979019165,4.289999961853027,2.413539171218872,596600,0.0,0.0
|
||||
2022-08-17 00:00:00-04:00,4.269999980926514,4.389999866485596,4.21999979019165,4.28000020980835,2.4079134464263916,404100,0.0,0.0
|
||||
2022-08-16 00:00:00-04:00,4.369999885559082,4.489999771118164,4.21999979019165,4.289999961853027,2.413539409637451,596600,0.0,0.0
|
||||
2022-08-17 00:00:00-04:00,4.269999980926514,4.389999866485596,4.21999979019165,4.28000020980835,2.4079136848449707,404100,0.0,0.0
|
||||
2022-08-18 00:00:00-04:00,4.349999904632568,4.639999866485596,4.349999904632568,4.550000190734863,2.559814453125,1213700,0.0,0.0
|
||||
2022-08-19 00:00:00-04:00,4.610000133514404,4.650000095367432,4.489999771118164,4.5,2.531684637069702,348900,0.0,0.0
|
||||
2022-08-22 00:00:00-04:00,4.460000038146973,4.519999980926514,4.349999904632568,4.510000228881836,2.537310838699341,589300,0.0,0.0
|
||||
2022-08-23 00:00:00-04:00,4.550000190734863,4.78000020980835,4.550000190734863,4.699999809265137,2.6442039012908936,526400,0.0,0.0
|
||||
2022-08-24 00:00:00-04:00,4.730000019073486,4.960000038146973,4.730000019073486,4.929999828338623,2.7736008167266846,472800,0.0,0.0
|
||||
2022-08-25 00:00:00-04:00,4.96999979019165,5.090000152587891,4.960000038146973,5.059999942779541,2.846738576889038,453900,0.0,0.0
|
||||
2022-08-23 00:00:00-04:00,4.550000190734863,4.78000020980835,4.550000190734863,4.699999809265137,2.6442036628723145,526400,0.0,0.0
|
||||
2022-08-24 00:00:00-04:00,4.730000019073486,4.960000038146973,4.730000019073486,4.929999828338623,2.7736010551452637,472800,0.0,0.0
|
||||
2022-08-25 00:00:00-04:00,4.96999979019165,5.090000152587891,4.960000038146973,5.059999942779541,2.846738815307617,453900,0.0,0.0
|
||||
2022-08-26 00:00:00-04:00,5.059999942779541,5.170000076293945,5.010000228881836,5.010000228881836,2.8186089992523193,342300,0.0,0.0
|
||||
2022-08-29 00:00:00-04:00,4.949999809265137,5.199999809265137,4.909999847412109,5.130000114440918,2.886120319366455,319600,0.0,0.0
|
||||
2022-08-29 00:00:00-04:00,4.949999809265137,5.199999809265137,4.909999847412109,5.130000114440918,2.886120557785034,319600,0.0,0.0
|
||||
2022-08-30 00:00:00-04:00,5.070000171661377,5.070000171661377,4.900000095367432,4.940000057220459,2.7792270183563232,335300,0.0,0.0
|
||||
2022-08-31 00:00:00-04:00,4.849999904632568,5.050000190734863,4.78000020980835,4.880000114440918,2.745471239089966,517200,0.0,0.0
|
||||
2022-09-01 00:00:00-04:00,4.880000114440918,4.880000114440918,4.570000171661377,4.619999885559082,2.599195957183838,587000,0.0,0.0
|
||||
2022-09-02 00:00:00-04:00,4.840000152587891,4.869999885559082,4.690000057220459,4.699999809265137,2.6442039012908936,392000,0.0,0.0
|
||||
2022-09-06 00:00:00-04:00,4.800000190734863,4.860000133514404,4.579999923706055,4.670000076293945,2.627326011657715,545600,0.0,0.0
|
||||
2022-09-07 00:00:00-04:00,4.539999961853027,4.559999942779541,4.400000095367432,4.449999809265137,2.503554582595825,412100,0.0,0.0
|
||||
2022-09-02 00:00:00-04:00,4.840000152587891,4.869999885559082,4.690000057220459,4.699999809265137,2.6442036628723145,392000,0.0,0.0
|
||||
2022-09-06 00:00:00-04:00,4.800000190734863,4.860000133514404,4.579999923706055,4.670000076293945,2.627326250076294,545600,0.0,0.0
|
||||
2022-09-07 00:00:00-04:00,4.539999961853027,4.559999942779541,4.400000095367432,4.449999809265137,2.503554344177246,412100,0.0,0.0
|
||||
2022-09-08 00:00:00-04:00,4.449999809265137,4.539999961853027,4.409999847412109,4.480000019073486,2.520432710647583,369200,0.0,0.0
|
||||
2022-09-09 00:00:00-04:00,4.559999942779541,4.809999942779541,4.559999942779541,4.78000020980835,2.689211845397949,513000,0.0,0.0
|
||||
2022-09-12 00:00:00-04:00,4.789999961853027,4.880000114440918,4.739999771118164,4.829999923706055,2.717341423034668,285000,0.0,0.0
|
||||
2022-09-13 00:00:00-04:00,4.800000190734863,4.849999904632568,4.71999979019165,4.760000228881836,2.67795991897583,225800,0.0,0.0
|
||||
2022-09-14 00:00:00-04:00,4.809999942779541,4.989999771118164,4.78000020980835,4.869999885559082,2.7398452758789062,1021100,0.0,0.0
|
||||
2022-09-15 00:00:00-04:00,4.809999942779541,4.920000076293945,4.739999771118164,4.75,2.6723339557647705,352500,0.0,0.0
|
||||
2022-09-16 00:00:00-04:00,4.730000019073486,4.730000019073486,4.550000190734863,4.659999847412109,2.6217000484466553,702500,0.0,0.0
|
||||
2022-09-14 00:00:00-04:00,4.809999942779541,4.989999771118164,4.78000020980835,4.869999885559082,2.739845037460327,1021100,0.0,0.0
|
||||
2022-09-15 00:00:00-04:00,4.809999942779541,4.920000076293945,4.739999771118164,4.75,2.6723337173461914,352500,0.0,0.0
|
||||
2022-09-16 00:00:00-04:00,4.730000019073486,4.730000019073486,4.550000190734863,4.659999847412109,2.621699810028076,702500,0.0,0.0
|
||||
2022-09-19 00:00:00-04:00,4.5,4.659999847412109,4.389999866485596,4.639999866485596,2.610448122024536,537500,0.0,0.0
|
||||
2022-09-20 00:00:00-04:00,4.639999866485596,4.639999866485596,4.429999828338623,4.480000019073486,2.520432710647583,400900,0.0,0.0
|
||||
2022-09-21 00:00:00-04:00,4.519999980926514,4.559999942779541,4.309999942779541,4.320000171661377,2.430417537689209,364600,0.0,0.0
|
||||
2022-09-22 00:00:00-04:00,4.389999866485596,4.449999809265137,4.099999904632568,4.130000114440918,2.323523759841919,515800,0.0,0.0
|
||||
2022-09-21 00:00:00-04:00,4.519999980926514,4.559999942779541,4.309999942779541,4.320000171661377,2.430417060852051,364600,0.0,0.0
|
||||
2022-09-22 00:00:00-04:00,4.389999866485596,4.449999809265137,4.099999904632568,4.130000114440918,2.323523998260498,515800,0.0,0.0
|
||||
2022-09-23 00:00:00-04:00,4.0,4.0,3.5999999046325684,3.700000047683716,2.0816073417663574,960400,0.0,0.0
|
||||
2022-09-26 00:00:00-04:00,3.690000057220459,3.75,3.3299999237060547,3.369999885559082,1.895950436592102,683500,0.0,0.0
|
||||
2022-09-27 00:00:00-04:00,3.440000057220459,3.4700000286102295,3.3399999141693115,3.380000114440918,1.9015765190124512,931200,0.0,0.0
|
||||
@@ -188,243 +188,243 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
|
||||
2022-09-29 00:00:00-04:00,3.5899999141693115,3.75,3.4800000190734863,3.740000009536743,2.1041111946105957,640300,0.0,0.0
|
||||
2022-09-30 00:00:00-04:00,3.6700000762939453,3.7699999809265137,3.569999933242798,3.700000047683716,2.0816073417663574,536300,0.0,0.0
|
||||
2022-10-03 00:00:00-04:00,3.809999942779541,3.940000057220459,3.7699999809265137,3.9000000953674316,2.194126844406128,656400,0.0,0.0
|
||||
2022-10-04 00:00:00-04:00,3.9800000190734863,4.119999885559082,3.9800000190734863,4.010000228881836,2.256012439727783,638800,0.0,0.0
|
||||
2022-10-05 00:00:00-04:00,4.019999980926514,4.269999980926514,3.990000009536743,4.170000076293945,2.3460276126861572,615400,0.0,0.0
|
||||
2022-10-04 00:00:00-04:00,3.9800000190734863,4.119999885559082,3.9800000190734863,4.010000228881836,2.256012201309204,638800,0.0,0.0
|
||||
2022-10-05 00:00:00-04:00,4.019999980926514,4.269999980926514,3.990000009536743,4.170000076293945,2.3460278511047363,615400,0.0,0.0
|
||||
2022-10-06 00:00:00-04:00,4.139999866485596,4.409999847412109,4.139999866485596,4.380000114440918,2.4641730785369873,418100,0.0,0.0
|
||||
2022-10-07 00:00:00-04:00,4.360000133514404,4.440000057220459,4.21999979019165,4.269999980926514,2.402287483215332,673400,0.0,0.0
|
||||
2022-10-07 00:00:00-04:00,4.360000133514404,4.440000057220459,4.21999979019165,4.269999980926514,2.402287244796753,673400,0.0,0.0
|
||||
2022-10-11 00:00:00-04:00,4.090000152587891,4.099999904632568,3.859999895095825,3.990000009536743,2.244760513305664,307800,0.0,0.0
|
||||
2022-10-12 00:00:00-04:00,3.940000057220459,3.9800000190734863,3.8399999141693115,3.9700000286102295,2.233508348464966,371100,0.0,0.0
|
||||
2022-10-13 00:00:00-04:00,3.9100000858306885,4.099999904632568,3.9100000858306885,4.039999961853027,2.272890090942383,625900,0.0,0.0
|
||||
2022-10-13 00:00:00-04:00,3.9100000858306885,4.099999904632568,3.9100000858306885,4.039999961853027,2.272890329360962,625900,0.0,0.0
|
||||
2022-10-14 00:00:00-04:00,4.010000228881836,4.070000171661377,3.8299999237060547,3.8399999141693115,2.1603708267211914,353500,0.0,0.0
|
||||
2022-10-17 00:00:00-04:00,3.890000104904175,3.9700000286102295,3.8499999046325684,3.9000000953674316,2.194126844406128,546400,0.0,0.0
|
||||
2022-10-18 00:00:00-04:00,3.930000066757202,3.990000009536743,3.8299999237060547,3.9100000858306885,2.1997525691986084,377200,0.0,0.0
|
||||
2022-10-18 00:00:00-04:00,3.930000066757202,3.990000009536743,3.8299999237060547,3.9100000858306885,2.1997528076171875,377200,0.0,0.0
|
||||
2022-10-19 00:00:00-04:00,3.9000000953674316,4.0,3.869999885559082,3.990000009536743,2.244760513305664,379500,0.0,0.0
|
||||
2022-10-20 00:00:00-04:00,4.0,4.130000114440918,3.9600000381469727,3.990000009536743,2.244760513305664,453900,0.0,0.0
|
||||
2022-10-21 00:00:00-04:00,3.9800000190734863,4.039999961853027,3.930000066757202,3.950000047683716,2.2222564220428467,396900,0.0,0.0
|
||||
2022-10-21 00:00:00-04:00,3.9800000190734863,4.039999961853027,3.930000066757202,3.950000047683716,2.222256660461426,396900,0.0,0.0
|
||||
2022-10-24 00:00:00-04:00,3.9800000190734863,4.059999942779541,3.9100000858306885,4.0,2.2503862380981445,496100,0.0,0.0
|
||||
2022-10-25 00:00:00-04:00,3.9700000286102295,4.079999923706055,3.9700000286102295,4.059999942779541,2.284142017364502,532500,0.0,0.0
|
||||
2022-10-25 00:00:00-04:00,3.9700000286102295,4.079999923706055,3.9700000286102295,4.059999942779541,2.284141778945923,532500,0.0,0.0
|
||||
2022-10-26 00:00:00-04:00,4.050000190734863,4.230000019073486,4.050000190734863,4.210000038146973,2.3685317039489746,877200,0.0,0.0
|
||||
2022-10-27 00:00:00-04:00,4.21999979019165,4.300000190734863,4.130000114440918,4.170000076293945,2.3460276126861572,474000,0.0,0.0
|
||||
2022-10-28 00:00:00-04:00,4.119999885559082,4.199999809265137,4.03000020980835,4.070000171661377,2.2897682189941406,363900,0.0,0.0
|
||||
2022-10-31 00:00:00-04:00,4.010000228881836,4.230000019073486,4.010000228881836,4.110000133514404,2.3122718334198,628500,0.0,0.0
|
||||
2022-10-27 00:00:00-04:00,4.21999979019165,4.300000190734863,4.130000114440918,4.170000076293945,2.3460278511047363,474000,0.0,0.0
|
||||
2022-10-28 00:00:00-04:00,4.119999885559082,4.199999809265137,4.03000020980835,4.070000171661377,2.2897684574127197,363900,0.0,0.0
|
||||
2022-10-31 00:00:00-04:00,4.010000228881836,4.230000019073486,4.010000228881836,4.110000133514404,2.312272071838379,628500,0.0,0.0
|
||||
2022-11-01 00:00:00-04:00,4.230000019073486,4.25,4.139999866485596,4.179999828338623,2.351653575897217,319700,0.0,0.0
|
||||
2022-11-02 00:00:00-04:00,4.170000076293945,4.340000152587891,4.110000133514404,4.21999979019165,2.374157428741455,481300,0.0,0.0
|
||||
2022-11-03 00:00:00-04:00,4.190000057220459,4.340000152587891,4.179999828338623,4.289999961853027,2.413539171218872,279400,0.0,0.0
|
||||
2022-11-03 00:00:00-04:00,4.190000057220459,4.340000152587891,4.179999828338623,4.289999961853027,2.413539409637451,279400,0.0,0.0
|
||||
2022-11-04 00:00:00-04:00,4.360000133514404,4.590000152587891,4.340000152587891,4.550000190734863,2.559814453125,741800,0.0,0.0
|
||||
2022-11-07 00:00:00-05:00,4.559999942779541,4.599999904632568,4.5,4.579999923706055,2.5766923427581787,366700,0.0,0.0
|
||||
2022-11-07 00:00:00-05:00,4.559999942779541,4.599999904632568,4.5,4.579999923706055,2.5766921043395996,366700,0.0,0.0
|
||||
2022-11-08 00:00:00-05:00,4.590000152587891,4.599999904632568,4.460000038146973,4.510000228881836,2.537310838699341,426500,0.0,0.0
|
||||
2022-11-09 00:00:00-05:00,4.099999904632568,4.130000114440918,3.509999990463257,3.5799999237060547,2.0140955448150635,3261400,0.0,0.0
|
||||
2022-11-10 00:00:00-05:00,3.609999895095825,3.609999895095825,3.240000009536743,3.5199999809265137,1.9803398847579956,2489900,0.0,0.0
|
||||
2022-11-11 00:00:00-05:00,3.549999952316284,3.549999952316284,3.369999885559082,3.4800000190734863,1.9578360319137573,1531900,0.0,0.0
|
||||
2022-11-14 00:00:00-05:00,3.4100000858306885,3.619999885559082,3.380000114440918,3.5199999809265137,1.9803398847579956,1636500,0.0,0.0
|
||||
2022-11-15 00:00:00-05:00,3.549999952316284,3.6500000953674316,3.509999990463257,3.619999885559082,2.036599636077881,613200,0.0,0.0
|
||||
2022-11-16 00:00:00-05:00,3.619999885559082,3.619999885559082,3.440000057220459,3.450000047683716,1.9409581422805786,1095300,0.0,0.0
|
||||
2022-11-17 00:00:00-05:00,3.4200000762939453,3.4200000762939453,3.2200000286102295,3.359999895095825,1.890324592590332,1058500,0.0,0.0
|
||||
2022-11-10 00:00:00-05:00,3.609999895095825,3.609999895095825,3.240000009536743,3.5199999809265137,1.9803401231765747,2489900,0.0,0.0
|
||||
2022-11-11 00:00:00-05:00,3.549999952316284,3.549999952316284,3.369999885559082,3.4800000190734863,1.9578361511230469,1531900,0.0,0.0
|
||||
2022-11-14 00:00:00-05:00,3.4100000858306885,3.619999885559082,3.380000114440918,3.5199999809265137,1.9803401231765747,1636500,0.0,0.0
|
||||
2022-11-15 00:00:00-05:00,3.549999952316284,3.6500000953674316,3.509999990463257,3.619999885559082,2.0365993976593018,613200,0.0,0.0
|
||||
2022-11-16 00:00:00-05:00,3.619999885559082,3.619999885559082,3.440000057220459,3.450000047683716,1.940958023071289,1095300,0.0,0.0
|
||||
2022-11-17 00:00:00-05:00,3.4200000762939453,3.4200000762939453,3.2200000286102295,3.359999895095825,1.890324354171753,1058500,0.0,0.0
|
||||
2022-11-18 00:00:00-05:00,3.299999952316284,3.3499999046325684,3.2300000190734863,3.3299999237060547,1.8734464645385742,1005000,0.0,0.0
|
||||
2022-11-21 00:00:00-05:00,3.2899999618530273,3.3299999237060547,3.130000114440918,3.2899999618530273,1.8509427309036255,1701700,0.0,0.0
|
||||
2022-11-22 00:00:00-05:00,3.309999942779541,3.450000047683716,3.309999942779541,3.4100000858306885,1.9184544086456299,668000,0.0,0.0
|
||||
2022-11-23 00:00:00-05:00,3.3399999141693115,3.559999942779541,3.299999952316284,3.4600000381469727,1.9465841054916382,626600,0.0,0.0
|
||||
2022-11-22 00:00:00-05:00,3.309999942779541,3.450000047683716,3.309999942779541,3.4100000858306885,1.9184542894363403,668000,0.0,0.0
|
||||
2022-11-23 00:00:00-05:00,3.3399999141693115,3.559999942779541,3.299999952316284,3.4600000381469727,1.9465842247009277,626600,0.0,0.0
|
||||
2022-11-24 00:00:00-05:00,3.450000047683716,3.4600000381469727,3.380000114440918,3.430000066757202,1.9297062158584595,213400,0.0,0.0
|
||||
2022-11-25 00:00:00-05:00,3.450000047683716,3.4800000190734863,3.369999885559082,3.380000114440918,1.9015765190124512,404100,0.0,0.0
|
||||
2022-11-28 00:00:00-05:00,3.309999942779541,3.359999895095825,3.259999990463257,3.299999952316284,1.8565688133239746,472800,0.0,0.0
|
||||
2022-11-28 00:00:00-05:00,3.309999942779541,3.359999895095825,3.259999990463257,3.299999952316284,1.8565685749053955,472800,0.0,0.0
|
||||
2022-11-29 00:00:00-05:00,3.3299999237060547,3.4800000190734863,3.309999942779541,3.4000000953674316,1.9128283262252808,782700,0.0,0.0
|
||||
2022-11-30 00:00:00-05:00,3.5899999141693115,3.5899999141693115,3.4000000953674316,3.4000000953674316,1.9128283262252808,1510300,0.0,0.0
|
||||
2022-12-01 00:00:00-05:00,3.4600000381469727,3.549999952316284,3.359999895095825,3.369999885559082,1.895950436592102,570700,0.0,0.0
|
||||
2022-12-02 00:00:00-05:00,3.369999885559082,3.450000047683716,3.3299999237060547,3.3499999046325684,1.8846986293792725,319600,0.0,0.0
|
||||
2022-12-05 00:00:00-05:00,3.4000000953674316,3.4700000286102295,3.259999990463257,3.299999952316284,1.8565688133239746,1100300,0.0,0.0
|
||||
2022-12-05 00:00:00-05:00,3.4000000953674316,3.4700000286102295,3.259999990463257,3.299999952316284,1.8565685749053955,1100300,0.0,0.0
|
||||
2022-12-06 00:00:00-05:00,3.2899999618530273,3.3499999046325684,3.0799999237060547,3.0799999237060547,1.732797384262085,1268000,0.0,0.0
|
||||
2022-12-07 00:00:00-05:00,3.0799999237060547,3.180000066757202,2.9800000190734863,3.0899999141693115,1.738423466682434,769100,0.0,0.0
|
||||
2022-12-08 00:00:00-05:00,3.190000057220459,3.190000057220459,2.990000009536743,3.0299999713897705,1.7046674489974976,618300,0.0,0.0
|
||||
2022-12-08 00:00:00-05:00,3.190000057220459,3.190000057220459,2.990000009536743,3.0299999713897705,1.7046676874160767,618300,0.0,0.0
|
||||
2022-12-09 00:00:00-05:00,3.0199999809265137,3.059999942779541,2.950000047683716,3.059999942779541,1.7215455770492554,779100,0.0,0.0
|
||||
2022-12-12 00:00:00-05:00,3.059999942779541,3.0899999141693115,2.950000047683716,2.9700000286102295,1.6709117889404297,1015200,0.0,0.0
|
||||
2022-12-13 00:00:00-05:00,3.059999942779541,3.130000114440918,2.930000066757202,3.049999952316284,1.7159194946289062,1585100,0.0,0.0
|
||||
2022-12-12 00:00:00-05:00,3.059999942779541,3.0899999141693115,2.950000047683716,2.9700000286102295,1.6709119081497192,1015200,0.0,0.0
|
||||
2022-12-13 00:00:00-05:00,3.059999942779541,3.130000114440918,2.930000066757202,3.049999952316284,1.7159196138381958,1585100,0.0,0.0
|
||||
2022-12-14 00:00:00-05:00,3.0799999237060547,3.119999885559082,3.009999990463257,3.0999999046325684,1.744049310684204,508600,0.0,0.0
|
||||
2022-12-15 00:00:00-05:00,3.049999952316284,3.0799999237060547,2.9700000286102295,3.0799999237060547,1.732797384262085,802900,0.0,0.0
|
||||
2022-12-16 00:00:00-05:00,3.009999990463257,3.0299999713897705,2.890000104904175,2.940000057220459,1.6540340185165405,1059300,0.0,0.0
|
||||
2022-12-19 00:00:00-05:00,2.9100000858306885,2.930000066757202,2.680000066757202,2.740000009536743,1.5415146350860596,2117800,0.0,0.0
|
||||
2022-12-20 00:00:00-05:00,2.740000009536743,2.859999895095825,2.7100000381469727,2.8299999237060547,1.5921483039855957,988400,0.0,0.0
|
||||
2022-12-21 00:00:00-05:00,2.8399999141693115,3.059999942779541,2.8399999141693115,3.0299999713897705,1.7046674489974976,796100,0.0,0.0
|
||||
2022-12-20 00:00:00-05:00,2.740000009536743,2.859999895095825,2.7100000381469727,2.8299999237060547,1.5921484231948853,988400,0.0,0.0
|
||||
2022-12-21 00:00:00-05:00,2.8399999141693115,3.059999942779541,2.8399999141693115,3.0299999713897705,1.7046676874160767,796100,0.0,0.0
|
||||
2022-12-22 00:00:00-05:00,3.049999952316284,3.059999942779541,2.890000104904175,2.9200000762939453,1.6427820920944214,1115000,0.0,0.0
|
||||
2022-12-23 00:00:00-05:00,2.9700000286102295,3.190000057220459,2.950000047683716,3.1700000762939453,1.7834311723709106,1357700,0.0,0.0
|
||||
2022-12-28 00:00:00-05:00,3.109999895095825,3.119999885559082,2.9200000762939453,2.940000057220459,1.6540340185165405,1075500,0.0,0.0
|
||||
2022-12-29 00:00:00-05:00,2.9200000762939453,3.009999990463257,2.9200000762939453,2.990000009536743,1.6821637153625488,471300,0.0,0.0
|
||||
2022-12-30 00:00:00-05:00,2.9600000381469727,3.0299999713897705,2.9600000381469727,3.0,1.6877896785736084,573100,0.0,0.0
|
||||
2022-12-30 00:00:00-05:00,2.9600000381469727,3.0299999713897705,2.9600000381469727,3.0,1.6877899169921875,573100,0.0,0.0
|
||||
2023-01-03 00:00:00-05:00,2.9700000286102295,3.0,2.75,2.7699999809265137,1.5583925247192383,766300,0.0,0.0
|
||||
2023-01-04 00:00:00-05:00,2.7699999809265137,2.7799999713897705,2.680000066757202,2.7100000381469727,1.5246367454528809,735100,0.0,0.0
|
||||
2023-01-05 00:00:00-05:00,2.690000057220459,2.7699999809265137,2.680000066757202,2.7100000381469727,1.5246367454528809,716200,0.0,0.0
|
||||
2023-01-06 00:00:00-05:00,2.7300000190734863,2.809999942779541,2.7300000190734863,2.799999952316284,1.5752702951431274,333100,0.0,0.0
|
||||
2023-01-06 00:00:00-05:00,2.7300000190734863,2.809999942779541,2.7300000190734863,2.799999952316284,1.575270414352417,333100,0.0,0.0
|
||||
2023-01-09 00:00:00-05:00,2.859999895095825,2.950000047683716,2.819999933242798,2.880000114440918,1.620278239250183,491400,0.0,0.0
|
||||
2023-01-10 00:00:00-05:00,2.859999895095825,2.9100000858306885,2.809999942779541,2.890000104904175,1.6259040832519531,418900,0.0,0.0
|
||||
2023-01-10 00:00:00-05:00,2.859999895095825,2.9100000858306885,2.809999942779541,2.890000104904175,1.6259039640426636,418900,0.0,0.0
|
||||
2023-01-11 00:00:00-05:00,2.890000104904175,2.990000009536743,2.890000104904175,2.9200000762939453,1.6427820920944214,808900,0.0,0.0
|
||||
2023-01-12 00:00:00-05:00,2.9700000286102295,3.0799999237060547,2.950000047683716,3.0399999618530273,1.7102934122085571,900700,0.0,0.0
|
||||
2023-01-13 00:00:00-05:00,3.0399999618530273,3.0999999046325684,2.9800000190734863,3.0299999713897705,1.7046674489974976,625000,0.0,0.0
|
||||
2023-01-16 00:00:00-05:00,3.0299999713897705,3.0399999618530273,3.0,3.009999990463257,1.6934157609939575,360400,0.0,0.0
|
||||
2023-01-13 00:00:00-05:00,3.0399999618530273,3.0999999046325684,2.9800000190734863,3.0299999713897705,1.7046676874160767,625000,0.0,0.0
|
||||
2023-01-16 00:00:00-05:00,3.0299999713897705,3.0399999618530273,3.0,3.009999990463257,1.693415641784668,360400,0.0,0.0
|
||||
2023-01-17 00:00:00-05:00,3.059999942779541,3.1700000762939453,3.0,3.1500000953674316,1.7721792459487915,699200,0.0,0.0
|
||||
2023-01-18 00:00:00-05:00,3.190000057220459,3.2899999618530273,3.130000114440918,3.130000114440918,1.760927438735962,707500,0.0,0.0
|
||||
2023-01-19 00:00:00-05:00,3.130000114440918,3.140000104904175,3.0299999713897705,3.119999885559082,1.7553013563156128,291600,0.0,0.0
|
||||
2023-01-20 00:00:00-05:00,3.109999895095825,3.1600000858306885,3.0799999237060547,3.119999885559082,1.7553013563156128,191000,0.0,0.0
|
||||
2023-01-23 00:00:00-05:00,3.140000104904175,3.180000066757202,3.069999933242798,3.109999895095825,1.7496753931045532,329700,0.0,0.0
|
||||
2023-01-24 00:00:00-05:00,3.059999942779541,3.0899999141693115,3.009999990463257,3.0199999809265137,1.6990416049957275,496300,0.0,0.0
|
||||
2023-01-25 00:00:00-05:00,3.009999990463257,3.049999952316284,2.930000066757202,3.049999952316284,1.7159194946289062,415700,0.0,0.0
|
||||
2023-01-19 00:00:00-05:00,3.130000114440918,3.140000104904175,3.0299999713897705,3.119999885559082,1.7553012371063232,291600,0.0,0.0
|
||||
2023-01-20 00:00:00-05:00,3.109999895095825,3.1600000858306885,3.0799999237060547,3.119999885559082,1.7553012371063232,191000,0.0,0.0
|
||||
2023-01-23 00:00:00-05:00,3.140000104904175,3.180000066757202,3.069999933242798,3.109999895095825,1.7496752738952637,329700,0.0,0.0
|
||||
2023-01-24 00:00:00-05:00,3.059999942779541,3.0899999141693115,3.009999990463257,3.0199999809265137,1.699041724205017,496300,0.0,0.0
|
||||
2023-01-25 00:00:00-05:00,3.009999990463257,3.049999952316284,2.930000066757202,3.049999952316284,1.7159196138381958,415700,0.0,0.0
|
||||
2023-01-26 00:00:00-05:00,3.049999952316284,3.0899999141693115,2.990000009536743,3.0399999618530273,1.7102934122085571,243700,0.0,0.0
|
||||
2023-01-27 00:00:00-05:00,3.0299999713897705,3.069999933242798,2.9600000381469727,3.0199999809265137,1.6990416049957275,432400,0.0,0.0
|
||||
2023-01-30 00:00:00-05:00,2.9800000190734863,2.9800000190734863,2.869999885559082,2.890000104904175,1.6259040832519531,427200,0.0,0.0
|
||||
2023-01-31 00:00:00-05:00,2.859999895095825,2.9600000381469727,2.809999942779541,2.9600000381469727,1.6652858257293701,428900,0.0,0.0
|
||||
2023-01-27 00:00:00-05:00,3.0299999713897705,3.069999933242798,2.9600000381469727,3.0199999809265137,1.699041724205017,432400,0.0,0.0
|
||||
2023-01-30 00:00:00-05:00,2.9800000190734863,2.9800000190734863,2.869999885559082,2.890000104904175,1.6259039640426636,427200,0.0,0.0
|
||||
2023-01-31 00:00:00-05:00,2.859999895095825,2.9600000381469727,2.809999942779541,2.9600000381469727,1.6652859449386597,428900,0.0,0.0
|
||||
2023-02-01 00:00:00-05:00,2.9600000381469727,3.0,2.880000114440918,2.940000057220459,1.6540340185165405,800000,0.0,0.0
|
||||
2023-02-02 00:00:00-05:00,2.9700000286102295,2.9700000286102295,2.8499999046325684,2.880000114440918,1.620278239250183,552400,0.0,0.0
|
||||
2023-02-03 00:00:00-05:00,2.869999885559082,2.950000047683716,2.859999895095825,2.9000000953674316,1.6315300464630127,468600,0.0,0.0
|
||||
2023-02-06 00:00:00-05:00,2.9000000953674316,2.9200000762939453,2.8299999237060547,2.8399999141693115,1.5977742671966553,214400,0.0,0.0
|
||||
2023-02-06 00:00:00-05:00,2.9000000953674316,2.9200000762939453,2.8299999237060547,2.8399999141693115,1.5977741479873657,214400,0.0,0.0
|
||||
2023-02-07 00:00:00-05:00,2.869999885559082,3.0899999141693115,2.859999895095825,3.0899999141693115,1.738423466682434,736000,0.0,0.0
|
||||
2023-02-08 00:00:00-05:00,3.0999999046325684,3.109999895095825,3.0,3.0,1.6877896785736084,293100,0.0,0.0
|
||||
2023-02-09 00:00:00-05:00,2.9700000286102295,3.0399999618530273,2.9700000286102295,3.0199999809265137,1.6990416049957275,290000,0.0,0.0
|
||||
2023-02-10 00:00:00-05:00,3.009999990463257,3.0899999141693115,3.009999990463257,3.049999952316284,1.7159194946289062,319600,0.0,0.0
|
||||
2023-02-13 00:00:00-05:00,3.0899999141693115,3.0899999141693115,2.9700000286102295,3.0,1.6877896785736084,494600,0.0,0.0
|
||||
2023-02-14 00:00:00-05:00,2.990000009536743,3.009999990463257,2.950000047683716,3.0,1.6877896785736084,354700,0.0,0.0
|
||||
2023-02-15 00:00:00-05:00,2.9700000286102295,2.990000009536743,2.890000104904175,2.9700000286102295,1.6709117889404297,301400,0.0,0.0
|
||||
2023-02-08 00:00:00-05:00,3.0999999046325684,3.109999895095825,3.0,3.0,1.6877899169921875,293100,0.0,0.0
|
||||
2023-02-09 00:00:00-05:00,2.9700000286102295,3.0399999618530273,2.9700000286102295,3.0199999809265137,1.699041724205017,290000,0.0,0.0
|
||||
2023-02-10 00:00:00-05:00,3.009999990463257,3.0899999141693115,3.009999990463257,3.049999952316284,1.7159196138381958,319600,0.0,0.0
|
||||
2023-02-13 00:00:00-05:00,3.0899999141693115,3.0899999141693115,2.9700000286102295,3.0,1.6877899169921875,494600,0.0,0.0
|
||||
2023-02-14 00:00:00-05:00,2.990000009536743,3.009999990463257,2.950000047683716,3.0,1.6877899169921875,354700,0.0,0.0
|
||||
2023-02-15 00:00:00-05:00,2.9700000286102295,2.990000009536743,2.890000104904175,2.9700000286102295,1.6709119081497192,301400,0.0,0.0
|
||||
2023-02-16 00:00:00-05:00,2.940000057220459,3.0,2.9200000762939453,2.990000009536743,1.6821637153625488,212600,0.0,0.0
|
||||
2023-02-17 00:00:00-05:00,2.930000066757202,2.930000066757202,2.759999990463257,2.7799999713897705,1.5640184879302979,823900,0.0,0.0
|
||||
2023-02-17 00:00:00-05:00,2.930000066757202,2.930000066757202,2.759999990463257,2.7799999713897705,1.5640183687210083,823900,0.0,0.0
|
||||
2023-02-21 00:00:00-05:00,2.809999942779541,2.8299999237060547,2.7100000381469727,2.7200000286102295,1.5302625894546509,352700,0.0,0.0
|
||||
2023-02-22 00:00:00-05:00,2.740000009536743,2.740000009536743,2.640000104904175,2.6600000858306885,1.496506929397583,343700,0.0,0.0
|
||||
2023-02-23 00:00:00-05:00,2.700000047683716,2.7799999713897705,2.6600000858306885,2.75,1.5471407175064087,292200,0.0,0.0
|
||||
2023-02-24 00:00:00-05:00,2.700000047683716,2.799999952316284,2.700000047683716,2.7799999713897705,1.5640184879302979,322100,0.0,0.0
|
||||
2023-02-23 00:00:00-05:00,2.700000047683716,2.7799999713897705,2.6600000858306885,2.75,1.5471405982971191,292200,0.0,0.0
|
||||
2023-02-24 00:00:00-05:00,2.700000047683716,2.799999952316284,2.700000047683716,2.7799999713897705,1.5640183687210083,322100,0.0,0.0
|
||||
2023-02-27 00:00:00-05:00,2.809999942779541,2.9100000858306885,2.75,2.880000114440918,1.620278239250183,268200,0.0,0.0
|
||||
2023-02-28 00:00:00-05:00,2.880000114440918,2.9200000762939453,2.819999933242798,2.8499999046325684,1.6034001111984253,917800,0.0,0.0
|
||||
2023-03-01 00:00:00-05:00,2.859999895095825,2.9800000190734863,2.859999895095825,2.9800000190734863,1.6765376329421997,327600,0.0,0.0
|
||||
2023-03-02 00:00:00-05:00,3.0,3.0299999713897705,2.9200000762939453,2.9600000381469727,1.6652858257293701,287600,0.0,0.0
|
||||
2023-03-03 00:00:00-05:00,2.9100000858306885,3.0799999237060547,2.9100000858306885,3.049999952316284,1.7159194946289062,289700,0.0,0.0
|
||||
2023-03-06 00:00:00-05:00,3.059999942779541,3.059999942779541,2.9700000286102295,3.009999990463257,1.6934157609939575,232100,0.0,0.0
|
||||
2023-03-07 00:00:00-05:00,2.9800000190734863,3.0,2.880000114440918,2.9100000858306885,1.6371560096740723,279700,0.0,0.0
|
||||
2023-03-08 00:00:00-05:00,2.9700000286102295,3.059999942779541,2.9000000953674316,2.9600000381469727,1.6652858257293701,455000,0.0,0.0
|
||||
2023-03-09 00:00:00-05:00,3.0,3.180000066757202,2.990000009536743,3.009999990463257,1.6934157609939575,336300,0.0,0.0
|
||||
2023-03-10 00:00:00-05:00,3.009999990463257,3.059999942779541,2.9100000858306885,2.950000047683716,1.6596599817276,350400,0.0,0.0
|
||||
2023-02-28 00:00:00-05:00,2.880000114440918,2.9200000762939453,2.819999933242798,2.8499999046325684,1.6034003496170044,917800,0.0,0.0
|
||||
2023-03-01 00:00:00-05:00,2.859999895095825,2.9800000190734863,2.859999895095825,2.9800000190734863,1.6765377521514893,327600,0.0,0.0
|
||||
2023-03-02 00:00:00-05:00,3.0,3.0299999713897705,2.9200000762939453,2.9600000381469727,1.6652859449386597,287600,0.0,0.0
|
||||
2023-03-03 00:00:00-05:00,2.9100000858306885,3.0799999237060547,2.9100000858306885,3.049999952316284,1.7159196138381958,289700,0.0,0.0
|
||||
2023-03-06 00:00:00-05:00,3.059999942779541,3.059999942779541,2.9700000286102295,3.009999990463257,1.693415641784668,232100,0.0,0.0
|
||||
2023-03-07 00:00:00-05:00,2.9800000190734863,3.0,2.880000114440918,2.9100000858306885,1.6371561288833618,279700,0.0,0.0
|
||||
2023-03-08 00:00:00-05:00,2.9700000286102295,3.059999942779541,2.9000000953674316,2.9600000381469727,1.6652859449386597,455000,0.0,0.0
|
||||
2023-03-09 00:00:00-05:00,3.0,3.180000066757202,2.990000009536743,3.009999990463257,1.693415641784668,336300,0.0,0.0
|
||||
2023-03-10 00:00:00-05:00,3.009999990463257,3.059999942779541,2.9100000858306885,2.950000047683716,1.6596598625183105,350400,0.0,0.0
|
||||
2023-03-13 00:00:00-04:00,2.8299999237060547,2.9100000858306885,2.75,2.9000000953674316,1.6315300464630127,435800,0.0,0.0
|
||||
2023-03-14 00:00:00-04:00,2.869999885559082,2.950000047683716,2.8399999141693115,2.880000114440918,1.9108608961105347,231900,0.441,0.0
|
||||
2023-03-15 00:00:00-04:00,2.75,2.759999990463257,2.4700000286102295,2.630000114440918,1.7449876070022583,1133800,0.0,0.0
|
||||
2023-03-16 00:00:00-04:00,2.6500000953674316,2.7300000190734863,2.569999933242798,2.7200000286102295,1.804701805114746,420000,0.0,0.0
|
||||
2023-03-17 00:00:00-04:00,2.680000066757202,2.75,2.619999885559082,2.630000114440918,1.7449876070022583,403800,0.0,0.0
|
||||
2023-03-20 00:00:00-04:00,2.640000104904175,2.7300000190734863,2.619999885559082,2.7200000286102295,1.804701805114746,251300,0.0,0.0
|
||||
2023-03-21 00:00:00-04:00,2.7699999809265137,2.8399999141693115,2.7200000286102295,2.7699999809265137,1.837876558303833,311100,0.0,0.0
|
||||
2023-03-14 00:00:00-04:00,2.869999885559082,2.950000047683716,2.8399999141693115,2.880000114440918,1.9108607769012451,231900,0.441,0.0
|
||||
2023-03-15 00:00:00-04:00,2.75,2.759999990463257,2.4700000286102295,2.630000114440918,1.7449873685836792,1133800,0.0,0.0
|
||||
2023-03-16 00:00:00-04:00,2.6500000953674316,2.7300000190734863,2.569999933242798,2.7200000286102295,1.8047016859054565,420000,0.0,0.0
|
||||
2023-03-17 00:00:00-04:00,2.680000066757202,2.75,2.619999885559082,2.630000114440918,1.7449873685836792,403800,0.0,0.0
|
||||
2023-03-20 00:00:00-04:00,2.640000104904175,2.7300000190734863,2.619999885559082,2.7200000286102295,1.8047016859054565,251300,0.0,0.0
|
||||
2023-03-21 00:00:00-04:00,2.7699999809265137,2.8399999141693115,2.7200000286102295,2.7699999809265137,1.8378764390945435,311100,0.0,0.0
|
||||
2023-03-22 00:00:00-04:00,2.759999990463257,2.7899999618530273,2.6600000858306885,2.6600000858306885,1.764892339706421,162000,0.0,0.0
|
||||
2023-03-23 00:00:00-04:00,2.690000057220459,2.740000009536743,2.5899999141693115,2.640000104904175,1.7516224384307861,190900,0.0,0.0
|
||||
2023-03-24 00:00:00-04:00,2.569999933242798,2.6600000858306885,2.569999933242798,2.630000114440918,1.7449876070022583,301600,0.0,0.0
|
||||
2023-03-24 00:00:00-04:00,2.569999933242798,2.6600000858306885,2.569999933242798,2.630000114440918,1.7449873685836792,301600,0.0,0.0
|
||||
2023-03-27 00:00:00-04:00,2.630000114440918,2.7200000286102295,2.559999942779541,2.7100000381469727,1.7980668544769287,226600,0.0,0.0
|
||||
2023-03-28 00:00:00-04:00,2.740000009536743,2.740000009536743,2.6600000858306885,2.7100000381469727,1.7980668544769287,161900,0.0,0.0
|
||||
2023-03-29 00:00:00-04:00,2.700000047683716,2.759999990463257,2.690000057220459,2.7200000286102295,1.804701805114746,202700,0.0,0.0
|
||||
2023-03-30 00:00:00-04:00,2.700000047683716,2.75,2.6700000762939453,2.7200000286102295,1.804701805114746,118100,0.0,0.0
|
||||
2023-03-31 00:00:00-04:00,2.75,2.799999952316284,2.75,2.7699999809265137,1.837876558303833,201700,0.0,0.0
|
||||
2023-03-29 00:00:00-04:00,2.700000047683716,2.759999990463257,2.690000057220459,2.7200000286102295,1.8047016859054565,202700,0.0,0.0
|
||||
2023-03-30 00:00:00-04:00,2.700000047683716,2.75,2.6700000762939453,2.7200000286102295,1.8047016859054565,118100,0.0,0.0
|
||||
2023-03-31 00:00:00-04:00,2.75,2.799999952316284,2.75,2.7699999809265137,1.8378764390945435,201700,0.0,0.0
|
||||
2023-04-03 00:00:00-04:00,2.7699999809265137,2.9600000381469727,2.7699999809265137,2.9600000381469727,1.9639402627944946,876600,0.0,0.0
|
||||
2023-04-04 00:00:00-04:00,2.990000009536743,2.990000009536743,2.880000114440918,2.9200000762939453,1.9374005794525146,151100,0.0,0.0
|
||||
2023-04-05 00:00:00-04:00,2.940000057220459,2.940000057220459,2.819999933242798,2.8399999141693115,1.8843209743499756,90400,0.0,0.0
|
||||
2023-04-06 00:00:00-04:00,2.880000114440918,2.880000114440918,2.7799999713897705,2.799999952316284,1.857781171798706,123900,0.0,0.0
|
||||
2023-04-10 00:00:00-04:00,2.7899999618530273,2.9000000953674316,2.7799999713897705,2.7899999618530273,1.8511462211608887,205200,0.0,0.0
|
||||
2023-04-10 00:00:00-04:00,2.7899999618530273,2.9000000953674316,2.7799999713897705,2.7899999618530273,1.8511464595794678,205200,0.0,0.0
|
||||
2023-04-11 00:00:00-04:00,2.7699999809265137,2.8299999237060547,2.7699999809265137,2.809999942779541,1.864416241645813,345000,0.0,0.0
|
||||
2023-04-12 00:00:00-04:00,2.8299999237060547,2.8499999046325684,2.799999952316284,2.809999942779541,1.864416241645813,210200,0.0,0.0
|
||||
2023-04-13 00:00:00-04:00,2.7899999618530273,2.809999942779541,2.7699999809265137,2.7899999618530273,1.8511462211608887,234700,0.0,0.0
|
||||
2023-04-14 00:00:00-04:00,2.799999952316284,2.8299999237060547,2.740000009536743,2.75,1.8246067762374878,545200,0.0,0.0
|
||||
2023-04-17 00:00:00-04:00,2.7899999618530273,2.7899999618530273,2.7200000286102295,2.75,1.8246067762374878,171800,0.0,0.0
|
||||
2023-04-13 00:00:00-04:00,2.7899999618530273,2.809999942779541,2.7699999809265137,2.7899999618530273,1.8511464595794678,234700,0.0,0.0
|
||||
2023-04-14 00:00:00-04:00,2.799999952316284,2.8299999237060547,2.740000009536743,2.75,1.8246066570281982,545200,0.0,0.0
|
||||
2023-04-17 00:00:00-04:00,2.7899999618530273,2.7899999618530273,2.7200000286102295,2.75,1.8246066570281982,171800,0.0,0.0
|
||||
2023-04-18 00:00:00-04:00,2.75,2.75,2.680000066757202,2.7100000381469727,1.7980668544769287,194200,0.0,0.0
|
||||
2023-04-19 00:00:00-04:00,2.7100000381469727,2.7100000381469727,2.619999885559082,2.6600000858306885,1.764892339706421,269500,0.0,0.0
|
||||
2023-04-20 00:00:00-04:00,2.640000104904175,2.640000104904175,2.569999933242798,2.619999885559082,1.7383522987365723,833900,0.0,0.0
|
||||
2023-04-21 00:00:00-04:00,2.619999885559082,2.6500000953674316,2.5999999046325684,2.6500000953674316,1.758257269859314,174500,0.0,0.0
|
||||
2023-04-20 00:00:00-04:00,2.640000104904175,2.640000104904175,2.569999933242798,2.619999885559082,1.7383525371551514,833900,0.0,0.0
|
||||
2023-04-21 00:00:00-04:00,2.619999885559082,2.6500000953674316,2.5999999046325684,2.6500000953674316,1.7582573890686035,174500,0.0,0.0
|
||||
2023-04-24 00:00:00-04:00,2.609999895095825,2.6600000858306885,2.569999933242798,2.6600000858306885,1.764892339706421,255300,0.0,0.0
|
||||
2023-04-25 00:00:00-04:00,2.619999885559082,2.6500000953674316,2.569999933242798,2.5899999141693115,1.7184476852416992,406500,0.0,0.0
|
||||
2023-04-25 00:00:00-04:00,2.619999885559082,2.6500000953674316,2.569999933242798,2.5899999141693115,1.7184475660324097,406500,0.0,0.0
|
||||
2023-04-26 00:00:00-04:00,2.569999933242798,2.619999885559082,2.4800000190734863,2.4800000190734863,1.645463466644287,293400,0.0,0.0
|
||||
2023-04-27 00:00:00-04:00,2.5,2.5299999713897705,2.450000047683716,2.4800000190734863,1.645463466644287,251700,0.0,0.0
|
||||
2023-04-28 00:00:00-04:00,2.5299999713897705,2.549999952316284,2.4800000190734863,2.5,1.6587332487106323,405600,0.0,0.0
|
||||
2023-05-01 00:00:00-04:00,2.4800000190734863,2.5799999237060547,2.4800000190734863,2.5399999618530273,1.6852729320526123,138100,0.0,0.0
|
||||
2023-05-02 00:00:00-04:00,2.549999952316284,2.549999952316284,2.299999952316284,2.3299999237060547,1.5459394454956055,846200,0.0,0.0
|
||||
2023-05-03 00:00:00-04:00,2.309999942779541,2.3499999046325684,2.240000009536743,2.3499999046325684,1.5592092275619507,555600,0.0,0.0
|
||||
2023-05-04 00:00:00-04:00,2.3499999046325684,2.380000114440918,2.299999952316284,2.3499999046325684,1.5592092275619507,359300,0.0,0.0
|
||||
2023-05-05 00:00:00-04:00,2.4200000762939453,2.5199999809265137,2.4100000858306885,2.5199999809265137,1.672003149986267,321700,0.0,0.0
|
||||
2023-05-08 00:00:00-04:00,2.509999990463257,2.549999952316284,2.5,2.5199999809265137,1.672003149986267,226500,0.0,0.0
|
||||
2023-05-01 00:00:00-04:00,2.4800000190734863,2.5799999237060547,2.4800000190734863,2.5399999618530273,1.6852730512619019,138100,0.0,0.0
|
||||
2023-05-02 00:00:00-04:00,2.549999952316284,2.549999952316284,2.299999952316284,2.3299999237060547,1.545939326286316,846200,0.0,0.0
|
||||
2023-05-03 00:00:00-04:00,2.309999942779541,2.3499999046325684,2.240000009536743,2.3499999046325684,1.5592091083526611,555600,0.0,0.0
|
||||
2023-05-04 00:00:00-04:00,2.3499999046325684,2.380000114440918,2.299999952316284,2.3499999046325684,1.5592091083526611,359300,0.0,0.0
|
||||
2023-05-05 00:00:00-04:00,2.4200000762939453,2.5199999809265137,2.4100000858306885,2.5199999809265137,1.6720030307769775,321700,0.0,0.0
|
||||
2023-05-08 00:00:00-04:00,2.509999990463257,2.549999952316284,2.5,2.5199999809265137,1.6720030307769775,226500,0.0,0.0
|
||||
2023-05-09 00:00:00-04:00,2.549999952316284,2.549999952316284,2.490000009536743,2.5299999713897705,1.6786381006240845,120400,0.0,0.0
|
||||
2023-05-10 00:00:00-04:00,2.549999952316284,2.549999952316284,2.430000066757202,2.4800000190734863,1.645463466644287,236300,0.0,0.0
|
||||
2023-05-11 00:00:00-04:00,2.4800000190734863,2.5199999809265137,2.380000114440918,2.380000114440918,1.5791141986846924,433000,0.0,0.0
|
||||
2023-05-11 00:00:00-04:00,2.4800000190734863,2.5199999809265137,2.380000114440918,2.380000114440918,1.579114317893982,433000,0.0,0.0
|
||||
2023-05-12 00:00:00-04:00,2.430000066757202,2.549999952316284,2.4000000953674316,2.5299999713897705,1.6786381006240845,510700,0.0,0.0
|
||||
2023-05-15 00:00:00-04:00,2.5399999618530273,2.630000114440918,2.5299999713897705,2.619999885559082,1.7383522987365723,230800,0.0,0.0
|
||||
2023-05-15 00:00:00-04:00,2.5399999618530273,2.630000114440918,2.5299999713897705,2.619999885559082,1.7383525371551514,230800,0.0,0.0
|
||||
2023-05-16 00:00:00-04:00,2.619999885559082,2.6700000762939453,2.440000057220459,2.4800000190734863,1.645463466644287,579000,0.0,0.0
|
||||
2023-05-17 00:00:00-04:00,2.4800000190734863,2.509999990463257,2.4100000858306885,2.4800000190734863,1.645463466644287,196000,0.0,0.0
|
||||
2023-05-18 00:00:00-04:00,2.4600000381469727,2.5399999618530273,2.440000057220459,2.5,1.6587332487106323,233000,0.0,0.0
|
||||
2023-05-19 00:00:00-04:00,2.559999942779541,2.5799999237060547,2.4700000286102295,2.509999990463257,1.6653683185577393,229000,0.0,0.0
|
||||
2023-05-23 00:00:00-04:00,2.4600000381469727,2.609999895095825,2.4600000381469727,2.559999942779541,1.6985427141189575,240100,0.0,0.0
|
||||
2023-05-23 00:00:00-04:00,2.4600000381469727,2.609999895095825,2.4600000381469727,2.559999942779541,1.698542833328247,240100,0.0,0.0
|
||||
2023-05-24 00:00:00-04:00,2.5199999809265137,2.559999942779541,2.440000057220459,2.4700000286102295,1.6388285160064697,199100,0.0,0.0
|
||||
2023-05-25 00:00:00-04:00,2.5,2.5,2.380000114440918,2.4000000953674316,1.5923840999603271,287100,0.0,0.0
|
||||
2023-05-26 00:00:00-04:00,2.4000000953674316,2.4700000286102295,2.369999885559082,2.4000000953674316,1.5923840999603271,150100,0.0,0.0
|
||||
2023-05-29 00:00:00-04:00,2.4000000953674316,2.4800000190734863,2.4000000953674316,2.4600000381469727,1.6321935653686523,58700,0.0,0.0
|
||||
2023-05-30 00:00:00-04:00,2.440000057220459,2.440000057220459,2.3299999237060547,2.390000104904175,1.5857491493225098,281300,0.0,0.0
|
||||
2023-05-30 00:00:00-04:00,2.440000057220459,2.440000057220459,2.3299999237060547,2.390000104904175,1.5857490301132202,281300,0.0,0.0
|
||||
2023-05-31 00:00:00-04:00,2.3299999237060547,2.4600000381469727,2.259999990463257,2.430000066757202,1.6122888326644897,708800,0.0,0.0
|
||||
2023-06-01 00:00:00-04:00,2.390000104904175,2.4100000858306885,2.299999952316284,2.3299999237060547,1.5459394454956055,490100,0.0,0.0
|
||||
2023-06-02 00:00:00-04:00,2.3299999237060547,2.549999952316284,2.3299999237060547,2.549999952316284,1.6919077634811401,1196900,0.0,0.0
|
||||
2023-06-05 00:00:00-04:00,2.509999990463257,2.619999885559082,2.509999990463257,2.549999952316284,1.6919077634811401,317400,0.0,0.0
|
||||
2023-06-06 00:00:00-04:00,2.569999933242798,2.5799999237060547,2.4700000286102295,2.490000009536743,1.6520984172821045,401600,0.0,0.0
|
||||
2023-06-01 00:00:00-04:00,2.390000104904175,2.4100000858306885,2.299999952316284,2.3299999237060547,1.545939326286316,490100,0.0,0.0
|
||||
2023-06-02 00:00:00-04:00,2.3299999237060547,2.549999952316284,2.3299999237060547,2.549999952316284,1.6919080018997192,1196900,0.0,0.0
|
||||
2023-06-05 00:00:00-04:00,2.509999990463257,2.619999885559082,2.509999990463257,2.549999952316284,1.6919080018997192,317400,0.0,0.0
|
||||
2023-06-06 00:00:00-04:00,2.569999933242798,2.5799999237060547,2.4700000286102295,2.490000009536743,1.652098298072815,401600,0.0,0.0
|
||||
2023-06-07 00:00:00-04:00,2.4800000190734863,2.5199999809265137,2.4600000381469727,2.4800000190734863,1.645463466644287,176900,0.0,0.0
|
||||
2023-06-08 00:00:00-04:00,2.5,2.609999895095825,2.430000066757202,2.559999942779541,1.6985427141189575,510900,0.0,0.0
|
||||
2023-06-08 00:00:00-04:00,2.5,2.609999895095825,2.430000066757202,2.559999942779541,1.698542833328247,510900,0.0,0.0
|
||||
2023-06-09 00:00:00-04:00,2.549999952316284,2.5999999046325684,2.5,2.5,1.6587332487106323,178700,0.0,0.0
|
||||
2023-06-12 00:00:00-04:00,2.4800000190734863,2.4800000190734863,2.390000104904175,2.4100000858306885,1.599018931388855,205900,0.0,0.0
|
||||
2023-06-13 00:00:00-04:00,2.4200000762939453,2.5299999713897705,2.4200000762939453,2.4200000762939453,1.6056538820266724,201500,0.0,0.0
|
||||
2023-06-13 00:00:00-04:00,2.4200000762939453,2.5299999713897705,2.4200000762939453,2.4200000762939453,1.605654001235962,201500,0.0,0.0
|
||||
2023-06-14 00:00:00-04:00,2.4200000762939453,2.440000057220459,2.3499999046325684,2.3499999046325684,1.906663179397583,158000,0.441,0.0
|
||||
2023-06-15 00:00:00-04:00,2.430000066757202,2.430000066757202,2.3399999141693115,2.4100000858306885,1.9553440809249878,92600,0.0,0.0
|
||||
2023-06-16 00:00:00-04:00,2.4100000858306885,2.440000057220459,2.3399999141693115,2.369999885559082,1.9228901863098145,407100,0.0,0.0
|
||||
2023-06-19 00:00:00-04:00,2.4100000858306885,2.4100000858306885,2.359999895095825,2.369999885559082,1.9228901863098145,69900,0.0,0.0
|
||||
2023-06-20 00:00:00-04:00,2.359999895095825,2.359999895095825,2.2699999809265137,2.2899999618530273,1.8579825162887573,404500,0.0,0.0
|
||||
2023-06-16 00:00:00-04:00,2.4100000858306885,2.440000057220459,2.3399999141693115,2.369999885559082,1.922890067100525,407100,0.0,0.0
|
||||
2023-06-19 00:00:00-04:00,2.4100000858306885,2.4100000858306885,2.359999895095825,2.369999885559082,1.922890067100525,69900,0.0,0.0
|
||||
2023-06-20 00:00:00-04:00,2.359999895095825,2.359999895095825,2.2699999809265137,2.2899999618530273,1.8579823970794678,404500,0.0,0.0
|
||||
2023-06-21 00:00:00-04:00,2.2899999618530273,2.2899999618530273,2.2100000381469727,2.259999990463257,1.8336421251296997,234900,0.0,0.0
|
||||
2023-06-22 00:00:00-04:00,2.25,2.259999990463257,2.119999885559082,2.130000114440918,1.7281672954559326,366900,0.0,0.0
|
||||
2023-06-23 00:00:00-04:00,2.1600000858306885,2.200000047683716,2.0799999237060547,2.0999999046325684,1.703826665878296,175300,0.0,0.0
|
||||
2023-06-26 00:00:00-04:00,2.1600000858306885,2.1600000858306885,2.0899999141693115,2.0999999046325684,1.703826665878296,109500,0.0,0.0
|
||||
2023-06-27 00:00:00-04:00,2.0899999141693115,2.130000114440918,2.059999942779541,2.059999942779541,1.6713727712631226,165900,0.0,0.0
|
||||
2023-06-28 00:00:00-04:00,2.0999999046325684,2.1600000858306885,2.0199999809265137,2.1600000858306885,1.7525076866149902,287900,0.0,0.0
|
||||
2023-06-22 00:00:00-04:00,2.25,2.259999990463257,2.119999885559082,2.130000114440918,1.728167176246643,366900,0.0,0.0
|
||||
2023-06-23 00:00:00-04:00,2.1600000858306885,2.200000047683716,2.0799999237060547,2.0999999046325684,1.7038267850875854,175300,0.0,0.0
|
||||
2023-06-26 00:00:00-04:00,2.1600000858306885,2.1600000858306885,2.0899999141693115,2.0999999046325684,1.7038267850875854,109500,0.0,0.0
|
||||
2023-06-27 00:00:00-04:00,2.0899999141693115,2.130000114440918,2.059999942779541,2.059999942779541,1.671372890472412,165900,0.0,0.0
|
||||
2023-06-28 00:00:00-04:00,2.0999999046325684,2.1600000858306885,2.0199999809265137,2.1600000858306885,1.7525074481964111,287900,0.0,0.0
|
||||
2023-06-29 00:00:00-04:00,2.1600000858306885,2.2100000381469727,2.1500000953674316,2.2100000381469727,1.7930748462677002,113900,0.0,0.0
|
||||
2023-06-30 00:00:00-04:00,2.190000057220459,2.299999952316284,2.180000066757202,2.2699999809265137,1.8417555093765259,354000,0.0,0.0
|
||||
2023-07-04 00:00:00-04:00,2.319999933242798,2.380000114440918,2.25,2.359999895095825,1.9147765636444092,245600,0.0,0.0
|
||||
2023-06-30 00:00:00-04:00,2.190000057220459,2.299999952316284,2.180000066757202,2.2699999809265137,1.8417556285858154,354000,0.0,0.0
|
||||
2023-07-04 00:00:00-04:00,2.319999933242798,2.380000114440918,2.25,2.359999895095825,1.9147766828536987,245600,0.0,0.0
|
||||
2023-07-05 00:00:00-04:00,2.4600000381469727,2.4600000381469727,2.2100000381469727,2.2100000381469727,1.7930748462677002,475400,0.0,0.0
|
||||
2023-07-06 00:00:00-04:00,2.2100000381469727,2.2699999809265137,2.190000057220459,2.200000047683716,1.784961462020874,240200,0.0,0.0
|
||||
2023-07-07 00:00:00-04:00,2.2100000381469727,2.380000114440918,2.2100000381469727,2.3299999237060547,1.8904362916946411,222100,0.0,0.0
|
||||
2023-07-06 00:00:00-04:00,2.2100000381469727,2.2699999809265137,2.190000057220459,2.200000047683716,1.7849613428115845,240200,0.0,0.0
|
||||
2023-07-07 00:00:00-04:00,2.2100000381469727,2.380000114440918,2.2100000381469727,2.3299999237060547,1.8904361724853516,222100,0.0,0.0
|
||||
2023-07-10 00:00:00-04:00,2.309999942779541,2.3499999046325684,2.299999952316284,2.299999952316284,1.8660959005355835,55700,0.0,0.0
|
||||
2023-07-11 00:00:00-04:00,2.2899999618530273,2.4000000953674316,2.2799999713897705,2.4000000953674316,1.9472306966781616,238500,0.0,0.0
|
||||
2023-07-12 00:00:00-04:00,2.450000047683716,2.4600000381469727,2.390000104904175,2.440000057220459,1.9796844720840454,241500,0.0,0.0
|
||||
2023-07-13 00:00:00-04:00,2.4000000953674316,2.4600000381469727,2.390000104904175,2.440000057220459,1.9796844720840454,153200,0.0,0.0
|
||||
2023-07-14 00:00:00-04:00,2.3499999046325684,2.390000104904175,2.2799999713897705,2.2899999618530273,1.8579825162887573,232100,0.0,0.0
|
||||
2023-07-12 00:00:00-04:00,2.450000047683716,2.4600000381469727,2.390000104904175,2.440000057220459,1.9796843528747559,241500,0.0,0.0
|
||||
2023-07-13 00:00:00-04:00,2.4000000953674316,2.4600000381469727,2.390000104904175,2.440000057220459,1.9796843528747559,153200,0.0,0.0
|
||||
2023-07-14 00:00:00-04:00,2.3499999046325684,2.390000104904175,2.2799999713897705,2.2899999618530273,1.8579823970794678,232100,0.0,0.0
|
||||
2023-07-17 00:00:00-04:00,2.2899999618530273,2.309999942779541,2.2200000286102295,2.240000009536743,1.8174152374267578,144600,0.0,0.0
|
||||
2023-07-18 00:00:00-04:00,2.2300000190734863,2.3499999046325684,2.2300000190734863,2.309999942779541,1.8742094039916992,146700,0.0,0.0
|
||||
2023-07-19 00:00:00-04:00,2.299999952316284,2.4700000286102295,2.299999952316284,2.450000047683716,1.9877978563308716,443000,0.0,0.0
|
||||
2023-07-18 00:00:00-04:00,2.2300000190734863,2.3499999046325684,2.2300000190734863,2.309999942779541,1.8742092847824097,146700,0.0,0.0
|
||||
2023-07-19 00:00:00-04:00,2.299999952316284,2.4700000286102295,2.299999952316284,2.450000047683716,1.9877979755401611,443000,0.0,0.0
|
||||
2023-07-20 00:00:00-04:00,2.4800000190734863,2.569999933242798,2.4800000190734863,2.5199999809265137,2.0445921421051025,270100,0.0,0.0
|
||||
2023-07-21 00:00:00-04:00,2.5799999237060547,2.5799999237060547,2.450000047683716,2.4800000190734863,2.0121383666992188,222600,0.0,0.0
|
||||
2023-07-21 00:00:00-04:00,2.5799999237060547,2.5799999237060547,2.450000047683716,2.4800000190734863,2.0121381282806396,222600,0.0,0.0
|
||||
2023-07-24 00:00:00-04:00,2.5,2.5299999713897705,2.4700000286102295,2.490000009536743,2.020251750946045,197200,0.0,0.0
|
||||
2023-07-25 00:00:00-04:00,2.4700000286102295,2.490000009536743,2.4100000858306885,2.440000057220459,1.9796844720840454,188700,0.0,0.0
|
||||
2023-07-26 00:00:00-04:00,2.4000000953674316,2.450000047683716,2.4000000953674316,2.450000047683716,1.9877978563308716,128100,0.0,0.0
|
||||
2023-07-25 00:00:00-04:00,2.4700000286102295,2.490000009536743,2.4100000858306885,2.440000057220459,1.9796843528747559,188700,0.0,0.0
|
||||
2023-07-26 00:00:00-04:00,2.4000000953674316,2.450000047683716,2.4000000953674316,2.450000047683716,1.9877979755401611,128100,0.0,0.0
|
||||
2023-07-27 00:00:00-04:00,2.4800000190734863,2.4800000190734863,2.4000000953674316,2.4100000858306885,1.9553440809249878,381600,0.0,0.0
|
||||
2023-07-28 00:00:00-04:00,2.450000047683716,2.549999952316284,2.380000114440918,2.5299999713897705,2.0527055263519287,424500,0.0,0.0
|
||||
2023-07-31 00:00:00-04:00,2.5,2.7300000190734863,2.5,2.7200000286102295,2.2068612575531006,516500,0.0,0.0
|
||||
2023-08-01 00:00:00-04:00,2.740000009536743,2.759999990463257,2.3399999141693115,2.450000047683716,1.9877978563308716,3980500,0.0,0.0
|
||||
2023-08-02 00:00:00-04:00,2.4600000381469727,2.4600000381469727,2.3299999237060547,2.369999885559082,1.9228901863098145,2111700,0.0,0.0
|
||||
2023-08-03 00:00:00-04:00,2.359999895095825,2.450000047683716,2.359999895095825,2.440000057220459,1.9796844720840454,814300,0.0,0.0
|
||||
2023-08-01 00:00:00-04:00,2.740000009536743,2.759999990463257,2.3399999141693115,2.450000047683716,1.9877979755401611,3980500,0.0,0.0
|
||||
2023-08-02 00:00:00-04:00,2.4600000381469727,2.4600000381469727,2.3299999237060547,2.369999885559082,1.922890067100525,2111700,0.0,0.0
|
||||
2023-08-03 00:00:00-04:00,2.359999895095825,2.450000047683716,2.359999895095825,2.440000057220459,1.9796843528747559,814300,0.0,0.0
|
||||
2023-08-04 00:00:00-04:00,2.4700000286102295,2.5399999618530273,2.4200000762939453,2.5399999618530273,2.060818910598755,1363900,0.0,0.0
|
||||
2023-08-08 00:00:00-04:00,2.509999990463257,2.549999952316284,2.4700000286102295,2.5299999713897705,2.0527055263519287,776900,0.0,0.0
|
||||
2023-08-09 00:00:00-04:00,2.549999952316284,2.559999942779541,2.5,2.5199999809265137,2.0445921421051025,932100,0.0,0.0
|
||||
2023-08-10 00:00:00-04:00,2.5199999809265137,2.5299999713897705,2.4700000286102295,2.490000009536743,2.020251750946045,389700,0.0,0.0
|
||||
2023-08-11 00:00:00-04:00,2.4800000190734863,2.509999990463257,2.4800000190734863,2.509999990463257,2.0364787578582764,280800,0.0,0.0
|
||||
2023-08-14 00:00:00-04:00,2.509999990463257,2.509999990463257,2.4000000953674316,2.430000066757202,1.9715710878372192,361600,0.0,0.0
|
||||
2023-08-15 00:00:00-04:00,2.4200000762939453,2.440000057220459,2.2699999809265137,2.319999933242798,1.8823227882385254,1139100,0.0,0.0
|
||||
2023-08-14 00:00:00-04:00,2.509999990463257,2.509999990463257,2.4000000953674316,2.430000066757202,1.9715709686279297,361600,0.0,0.0
|
||||
2023-08-15 00:00:00-04:00,2.4200000762939453,2.440000057220459,2.2699999809265137,2.319999933242798,1.882322907447815,1139100,0.0,0.0
|
||||
2023-08-16 00:00:00-04:00,2.2899999618530273,2.359999895095825,2.2300000190734863,2.259999990463257,1.8336421251296997,474700,0.0,0.0
|
||||
2023-08-17 00:00:00-04:00,2.259999990463257,2.309999942779541,2.25,2.309999942779541,1.8742094039916992,1188900,0.0,0.0
|
||||
2023-08-18 00:00:00-04:00,2.2699999809265137,2.390000104904175,2.240000009536743,2.359999895095825,1.9147765636444092,554900,0.0,0.0
|
||||
2023-08-21 00:00:00-04:00,2.380000114440918,2.4000000953674316,2.3299999237060547,2.3299999237060547,1.8904362916946411,211200,0.0,0.0
|
||||
2023-08-22 00:00:00-04:00,2.3499999046325684,2.369999885559082,2.25,2.2699999809265137,1.8417555093765259,336200,0.0,0.0
|
||||
2023-08-23 00:00:00-04:00,2.240000009536743,2.259999990463257,2.200000047683716,2.2200000286102295,1.801188349723816,368100,0.0,0.0
|
||||
2023-08-24 00:00:00-04:00,2.2100000381469727,2.2100000381469727,2.130000114440918,2.1600000858306885,1.7525076866149902,270700,0.0,0.0
|
||||
2023-08-25 00:00:00-04:00,2.1600000858306885,2.190000057220459,2.0,2.109999895095825,1.7119401693344116,706100,0.0,0.0
|
||||
2023-08-28 00:00:00-04:00,2.1500000953674316,2.190000057220459,2.130000114440918,2.1500000953674316,1.744394063949585,655500,0.0,0.0
|
||||
2023-08-17 00:00:00-04:00,2.259999990463257,2.309999942779541,2.25,2.309999942779541,1.8742092847824097,1188900,0.0,0.0
|
||||
2023-08-18 00:00:00-04:00,2.2699999809265137,2.390000104904175,2.240000009536743,2.359999895095825,1.9147766828536987,554900,0.0,0.0
|
||||
2023-08-21 00:00:00-04:00,2.380000114440918,2.4000000953674316,2.3299999237060547,2.3299999237060547,1.8904361724853516,211200,0.0,0.0
|
||||
2023-08-22 00:00:00-04:00,2.3499999046325684,2.369999885559082,2.25,2.2699999809265137,1.8417556285858154,336200,0.0,0.0
|
||||
2023-08-23 00:00:00-04:00,2.240000009536743,2.259999990463257,2.200000047683716,2.2200000286102295,1.8011882305145264,368100,0.0,0.0
|
||||
2023-08-24 00:00:00-04:00,2.2100000381469727,2.2100000381469727,2.130000114440918,2.1600000858306885,1.7525074481964111,270700,0.0,0.0
|
||||
2023-08-25 00:00:00-04:00,2.1600000858306885,2.190000057220459,2.0,2.109999895095825,1.711940050125122,706100,0.0,0.0
|
||||
2023-08-28 00:00:00-04:00,2.1500000953674316,2.190000057220459,2.130000114440918,2.1500000953674316,1.7443941831588745,655500,0.0,0.0
|
||||
2023-08-29 00:00:00-04:00,2.1600000858306885,2.200000047683716,2.1500000953674316,2.190000057220459,1.7768479585647583,245600,0.0,0.0
|
||||
2023-08-30 00:00:00-04:00,2.180000066757202,2.2200000286102295,2.1700000762939453,2.180000066757202,1.7687344551086426,211200,0.0,0.0
|
||||
2023-08-31 00:00:00-04:00,2.190000057220459,2.299999952316284,2.190000057220459,2.2799999713897705,1.8498690128326416,1133800,0.0,0.0
|
||||
2023-09-01 00:00:00-04:00,2.299999952316284,2.369999885559082,2.299999952316284,2.359999895095825,1.9147765636444092,761300,0.0,0.0
|
||||
2023-09-01 00:00:00-04:00,2.299999952316284,2.369999885559082,2.299999952316284,2.359999895095825,1.9147766828536987,761300,0.0,0.0
|
||||
2023-09-05 00:00:00-04:00,2.4200000762939453,2.4200000762939453,2.2699999809265137,2.390000104904175,1.939117193222046,1434000,0.0,0.0
|
||||
2023-09-06 00:00:00-04:00,2.380000114440918,2.4000000953674316,2.3299999237060547,2.4000000953674316,1.9472306966781616,352700,0.0,0.0
|
||||
2023-09-07 00:00:00-04:00,2.359999895095825,2.390000104904175,2.319999933242798,2.3499999046325684,1.906663179397583,501700,0.0,0.0
|
||||
2023-09-08 00:00:00-04:00,2.3499999046325684,2.359999895095825,2.3299999237060547,2.359999895095825,1.9147765636444092,405100,0.0,0.0
|
||||
2023-09-08 00:00:00-04:00,2.3499999046325684,2.359999895095825,2.3299999237060547,2.359999895095825,1.9147766828536987,405100,0.0,0.0
|
||||
2023-09-11 00:00:00-04:00,2.390000104904175,2.4200000762939453,2.3299999237060547,2.3499999046325684,1.906663179397583,740800,0.0,0.0
|
||||
2023-09-12 00:00:00-04:00,2.3499999046325684,2.440000057220459,2.3499999046325684,2.430000066757202,1.9715710878372192,696100,0.0,0.0
|
||||
2023-09-13 00:00:00-04:00,2.440000057220459,2.4600000381469727,2.4000000953674316,2.430000066757202,1.9715710878372192,328600,0.0,0.0
|
||||
2023-09-12 00:00:00-04:00,2.3499999046325684,2.440000057220459,2.3499999046325684,2.430000066757202,1.9715709686279297,696100,0.0,0.0
|
||||
2023-09-13 00:00:00-04:00,2.440000057220459,2.4600000381469727,2.4000000953674316,2.430000066757202,1.9715709686279297,328600,0.0,0.0
|
||||
2023-09-14 00:00:00-04:00,2.450000047683716,2.5199999809265137,2.430000066757202,2.5199999809265137,2.497917890548706,553500,0.441,0.0
|
||||
2023-09-15 00:00:00-04:00,2.5,2.640000104904175,2.4800000190734863,2.569999933242798,2.5474798679351807,770400,0.0,0.0
|
||||
2023-09-18 00:00:00-04:00,2.569999933242798,2.640000104904175,2.5299999713897705,2.559999942779541,2.537567377090454,753200,0.0,0.0
|
||||
@@ -687,3 +687,37 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
|
||||
2024-09-25 00:00:00-04:00,27.8700008392334,27.8700008392334,27.0,27.489999771118164,27.489999771118164,30200,0.0,0.0
|
||||
2024-09-26 00:00:00-04:00,27.299999237060547,27.479999542236328,26.559999465942383,26.610000610351562,26.610000610351562,51800,0.0,0.0
|
||||
2024-09-27 00:00:00-04:00,26.989999771118164,26.989999771118164,26.25,26.579999923706055,26.579999923706055,20600,0.0,0.0
|
||||
2024-09-30 00:00:00-04:00,26.610000610351562,27.0,26.5,26.950000762939453,26.950000762939453,25200,0.0,0.0
|
||||
2024-10-01 00:00:00-04:00,26.969999313354492,27.690000534057617,26.93000030517578,27.3799991607666,27.3799991607666,42600,0.0,0.0
|
||||
2024-10-02 00:00:00-04:00,27.790000915527344,27.799999237060547,26.290000915527344,26.610000610351562,26.610000610351562,78000,0.0,0.0
|
||||
2024-10-03 00:00:00-04:00,26.84000015258789,28.489999771118164,26.84000015258789,28.15999984741211,28.15999984741211,84200,0.0,0.0
|
||||
2024-10-04 00:00:00-04:00,28.190000534057617,28.549999237060547,27.790000915527344,28.049999237060547,28.049999237060547,65200,0.0,0.0
|
||||
2024-10-07 00:00:00-04:00,28.079999923706055,29.15999984741211,27.760000228881836,28.010000228881836,28.010000228881836,44900,0.0,0.0
|
||||
2024-10-08 00:00:00-04:00,27.989999771118164,28.110000610351562,26.850000381469727,27.709999084472656,27.709999084472656,26300,0.0,0.0
|
||||
2024-10-09 00:00:00-04:00,27.030000686645508,28.360000610351562,27.030000686645508,28.360000610351562,28.360000610351562,23000,0.0,0.0
|
||||
2024-10-10 00:00:00-04:00,28.020000457763672,28.799999237060547,27.969999313354492,28.360000610351562,28.360000610351562,24300,0.0,0.0
|
||||
2024-10-11 00:00:00-04:00,28.780000686645508,28.780000686645508,28.06999969482422,28.520000457763672,28.520000457763672,12100,0.0,0.0
|
||||
2024-10-15 00:00:00-04:00,28.350000381469727,28.350000381469727,26.540000915527344,26.690000534057617,26.690000534057617,77300,0.0,0.0
|
||||
2024-10-16 00:00:00-04:00,26.81999969482422,27.110000610351562,26.700000762939453,26.8700008392334,26.8700008392334,12500,0.0,0.0
|
||||
2024-10-17 00:00:00-04:00,26.81999969482422,27.18000030517578,26.770000457763672,27.149999618530273,27.149999618530273,21700,0.0,0.0
|
||||
2024-10-18 00:00:00-04:00,27.0,27.09000015258789,26.799999237060547,27.040000915527344,27.040000915527344,24400,0.0,0.0
|
||||
2024-10-21 00:00:00-04:00,27.059999465942383,27.739999771118164,27.0,27.739999771118164,27.739999771118164,32400,0.0,0.0
|
||||
2024-10-22 00:00:00-04:00,27.8799991607666,28.350000381469727,27.639999389648438,28.290000915527344,28.290000915527344,23900,0.0,0.0
|
||||
2024-10-23 00:00:00-04:00,28.1200008392334,28.1200008392334,27.450000762939453,27.81999969482422,27.81999969482422,7200,0.0,0.0
|
||||
2024-10-24 00:00:00-04:00,27.719999313354492,27.979999542236328,27.469999313354492,27.979999542236328,27.979999542236328,9100,0.0,0.0
|
||||
2024-10-25 00:00:00-04:00,27.479999542236328,29.139999389648438,27.479999542236328,28.8799991607666,28.8799991607666,26900,0.0,0.0
|
||||
2024-10-28 00:00:00-04:00,27.950000762939453,28.06999969482422,27.299999237060547,27.739999771118164,27.739999771118164,75500,0.0,0.0
|
||||
2024-10-29 00:00:00-04:00,27.479999542236328,27.899999618530273,27.3799991607666,27.6299991607666,27.6299991607666,23100,0.0,0.0
|
||||
2024-10-30 00:00:00-04:00,27.290000915527344,28.06999969482422,27.290000915527344,28.06999969482422,28.06999969482422,11500,0.0,0.0
|
||||
2024-10-31 00:00:00-04:00,27.75,27.809999465942383,27.190000534057617,27.520000457763672,27.520000457763672,14500,0.0,0.0
|
||||
2024-11-01 00:00:00-04:00,27.75,28.229999542236328,27.079999923706055,27.219999313354492,27.219999313354492,20300,0.0,0.0
|
||||
2024-11-04 00:00:00-05:00,27.81999969482422,28.510000228881836,27.59000015258789,28.219999313354492,28.219999313354492,21300,0.0,0.0
|
||||
2024-11-05 00:00:00-05:00,28.440000534057617,28.440000534057617,28.09000015258789,28.290000915527344,28.290000915527344,7100,0.0,0.0
|
||||
2024-11-06 00:00:00-05:00,27.329999923706055,28.479999542236328,27.329999923706055,28.15999984741211,28.15999984741211,35200,0.0,0.0
|
||||
2024-11-07 00:00:00-05:00,27.65999984741211,29.34000015258789,27.65999984741211,29.25,29.25,25200,0.0,0.0
|
||||
2024-11-08 00:00:00-05:00,29.43000030517578,29.43000030517578,28.0,28.06999969482422,28.06999969482422,27000,0.0,0.0
|
||||
2024-11-11 00:00:00-05:00,27.940000534057617,29.190000534057617,27.940000534057617,28.969999313354492,28.969999313354492,20600,0.0,0.0
|
||||
2024-11-12 00:00:00-05:00,29.139999389648438,29.329999923706055,28.15999984741211,28.68000030517578,28.68000030517578,31900,0.0,0.0
|
||||
2024-11-13 00:00:00-05:00,28.489999771118164,28.719999313354492,28.030000686645508,28.690000534057617,28.690000534057617,54300,0.0,0.0
|
||||
2024-11-14 00:00:00-05:00,31.489999771118164,32.540000915527344,30.0,32.5,32.5,150800,0.0,0.0
|
||||
2024-11-15 00:00:00-05:00,32.16999816894531,33.119998931884766,32.0,32.209999084472656,32.209999084472656,51300,0.0,0.0
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,399 +1,399 @@
|
||||
Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
|
||||
2022-01-03 00:00:00+01:00,20.400468826293945,20.80828094482422,20.400468826293945,20.629241943359375,11.042257308959961,559352,0.0,0.0
|
||||
2022-01-03 00:00:00+01:00,20.400468826293945,20.80828094482422,20.400468826293945,20.629241943359375,11.042256355285645,559352,0.0,0.0
|
||||
2022-01-04 00:00:00+01:00,20.649133682250977,20.897798538208008,20.5098819732666,20.848066329956055,11.15938663482666,930594,0.0,0.0
|
||||
2022-01-05 00:00:00+01:00,20.897798538208008,21.126571655273438,20.838119506835938,21.126571655273438,11.308463096618652,572100,0.0,0.0
|
||||
2022-01-06 00:00:00+01:00,20.887853622436523,21.126571655273438,20.599401473999023,20.967424392700195,11.223275184631348,532086,0.0,0.0
|
||||
2022-01-06 00:00:00+01:00,20.887853622436523,21.126571655273438,20.599401473999023,20.967424392700195,11.22327709197998,532086,0.0,0.0
|
||||
2022-01-07 00:00:00+01:00,21.007211685180664,21.186250686645508,20.867958068847656,21.126571655273438,11.308463096618652,698666,0.0,0.0
|
||||
2022-01-10 00:00:00+01:00,21.186250686645508,21.245929718017578,20.997264862060547,21.05694580078125,11.271193504333496,972438,0.0,0.0
|
||||
2022-01-11 00:00:00+01:00,21.226036071777344,21.514488220214844,21.226036071777344,21.37523651123047,11.441567420959473,894602,0.0,0.0
|
||||
2022-01-12 00:00:00+01:00,21.564220428466797,21.604007720947266,21.0469970703125,21.216089248657227,11.356378555297852,838352,0.0,0.0
|
||||
2022-01-13 00:00:00+01:00,20.897798538208008,21.14646339416504,20.897798538208008,21.14646339416504,12.180269241333008,514241,1.5,0.0
|
||||
2022-01-14 00:00:00+01:00,20.897798538208008,21.066890716552734,20.80828094482422,21.0271053314209,12.111518859863281,708327,0.0,0.0
|
||||
2022-01-17 00:00:00+01:00,21.106678009033203,21.633846282958984,21.0469970703125,21.554275512695312,12.415165901184082,947841,0.0,0.0
|
||||
2022-01-18 00:00:00+01:00,21.454809188842773,21.484647750854492,21.156410217285156,21.405075073242188,12.329227447509766,966355,0.0,0.0
|
||||
2022-01-19 00:00:00+01:00,21.37523651123047,21.822832107543945,21.295663833618164,21.78304672241211,12.546936988830566,1597827,0.0,0.0
|
||||
2022-01-20 00:00:00+01:00,21.802940368652344,22.111284255981445,21.544328689575195,21.981977462768555,12.661520004272461,1563328,0.0,0.0
|
||||
2022-01-21 00:00:00+01:00,21.74325942993164,21.94219207763672,21.415021896362305,21.65374183654785,12.47245979309082,1539782,0.0,0.0
|
||||
2022-01-10 00:00:00+01:00,21.186250686645508,21.245929718017578,20.997264862060547,21.05694580078125,11.271194458007812,972438,0.0,0.0
|
||||
2022-01-11 00:00:00+01:00,21.226036071777344,21.514488220214844,21.226036071777344,21.37523651123047,11.441566467285156,894602,0.0,0.0
|
||||
2022-01-12 00:00:00+01:00,21.564220428466797,21.604007720947266,21.0469970703125,21.216089248657227,11.356379508972168,838352,0.0,0.0
|
||||
2022-01-13 00:00:00+01:00,20.897798538208008,21.14646339416504,20.897798538208008,21.14646339416504,12.180268287658691,514241,1.5,0.0
|
||||
2022-01-14 00:00:00+01:00,20.897798538208008,21.066890716552734,20.80828094482422,21.0271053314209,12.111517906188965,708327,0.0,0.0
|
||||
2022-01-17 00:00:00+01:00,21.106678009033203,21.633846282958984,21.0469970703125,21.554275512695312,12.415164947509766,947841,0.0,0.0
|
||||
2022-01-18 00:00:00+01:00,21.454809188842773,21.484647750854492,21.156410217285156,21.405075073242188,12.32922649383545,966355,0.0,0.0
|
||||
2022-01-19 00:00:00+01:00,21.37523651123047,21.822832107543945,21.295663833618164,21.78304672241211,12.5469388961792,1597827,0.0,0.0
|
||||
2022-01-20 00:00:00+01:00,21.802940368652344,22.111284255981445,21.544328689575195,21.981977462768555,12.661521911621094,1563328,0.0,0.0
|
||||
2022-01-21 00:00:00+01:00,21.74325942993164,21.94219207763672,21.415021896362305,21.65374183654785,12.472458839416504,1539782,0.0,0.0
|
||||
2022-01-24 00:00:00+01:00,21.484647750854492,21.58411407470703,20.887853622436523,20.997264862060547,12.094330787658691,1334240,0.0,0.0
|
||||
2022-01-25 00:00:00+01:00,21.156410217285156,21.186250686645508,20.877906799316406,20.917692184448242,12.04849910736084,1198631,0.0,0.0
|
||||
2022-01-26 00:00:00+01:00,20.997264862060547,21.72336769104004,20.997264862060547,21.415021896362305,12.33495807647705,913216,0.0,0.0
|
||||
2022-01-27 00:00:00+01:00,21.11662483215332,21.862619400024414,21.0469970703125,21.6437931060791,12.466729164123535,765306,0.0,0.0
|
||||
2022-01-28 00:00:00+01:00,21.554275512695312,21.65374183654785,21.126571655273438,21.484647750854492,12.37506103515625,1109097,0.0,0.0
|
||||
2022-01-31 00:00:00+01:00,21.6239013671875,21.65374183654785,21.066890716552734,21.186250686645508,12.203185081481934,999557,0.0,0.0
|
||||
2022-01-25 00:00:00+01:00,21.156410217285156,21.186250686645508,20.877906799316406,20.917692184448242,12.048497200012207,1198631,0.0,0.0
|
||||
2022-01-26 00:00:00+01:00,20.997264862060547,21.72336769104004,20.997264862060547,21.415021896362305,12.334957122802734,913216,0.0,0.0
|
||||
2022-01-27 00:00:00+01:00,21.11662483215332,21.862619400024414,21.0469970703125,21.6437931060791,12.466727256774902,765306,0.0,0.0
|
||||
2022-01-28 00:00:00+01:00,21.554275512695312,21.65374183654785,21.126571655273438,21.484647750854492,12.375060081481934,1109097,0.0,0.0
|
||||
2022-01-31 00:00:00+01:00,21.6239013671875,21.65374183654785,21.066890716552734,21.186250686645508,12.20318603515625,999557,0.0,0.0
|
||||
2022-02-01 00:00:00+01:00,21.27577018737793,21.405075073242188,21.05694580078125,21.11662483215332,12.163081169128418,732572,0.0,0.0
|
||||
2022-02-02 00:00:00+01:00,21.52443504333496,22.021764755249023,21.454809188842773,21.753206253051758,12.529748916625977,1195479,0.0,0.0
|
||||
2022-02-03 00:00:00+01:00,21.773099899291992,21.892459869384766,21.6239013671875,21.773099899291992,12.541210174560547,906159,0.0,0.0
|
||||
2022-02-04 00:00:00+01:00,21.87256622314453,21.87256622314453,21.345396041870117,21.424968719482422,12.34068489074707,763864,0.0,0.0
|
||||
2022-02-07 00:00:00+01:00,21.574167251586914,21.574167251586914,21.265823364257812,21.415021896362305,12.33495807647705,382854,0.0,0.0
|
||||
2022-02-08 00:00:00+01:00,21.36528968811035,21.78304672241211,21.36528968811035,21.713420867919922,12.506834030151367,1006721,0.0,0.0
|
||||
2022-02-09 00:00:00+01:00,21.812885284423828,21.991924285888672,21.733312606811523,21.981977462768555,12.661520004272461,893571,0.0,0.0
|
||||
2022-02-02 00:00:00+01:00,21.52443504333496,22.021764755249023,21.454809188842773,21.753206253051758,12.52974796295166,1195479,0.0,0.0
|
||||
2022-02-03 00:00:00+01:00,21.773099899291992,21.892459869384766,21.6239013671875,21.773099899291992,12.541208267211914,906159,0.0,0.0
|
||||
2022-02-04 00:00:00+01:00,21.87256622314453,21.87256622314453,21.345396041870117,21.424968719482422,12.340685844421387,763864,0.0,0.0
|
||||
2022-02-07 00:00:00+01:00,21.574167251586914,21.574167251586914,21.265823364257812,21.415021896362305,12.334957122802734,382854,0.0,0.0
|
||||
2022-02-08 00:00:00+01:00,21.36528968811035,21.78304672241211,21.36528968811035,21.713420867919922,12.506832122802734,1006721,0.0,0.0
|
||||
2022-02-09 00:00:00+01:00,21.812885284423828,21.991924285888672,21.733312606811523,21.981977462768555,12.661521911621094,893571,0.0,0.0
|
||||
2022-02-10 00:00:00+01:00,22.021764755249023,22.210750579833984,21.962085723876953,22.041658401489258,12.69589614868164,851844,0.0,0.0
|
||||
2022-02-11 00:00:00+01:00,21.882511138916016,22.06155014038086,21.713420867919922,21.882511138916016,12.604229927062988,893486,0.0,0.0
|
||||
2022-02-14 00:00:00+01:00,21.514488220214844,21.514488220214844,20.818225860595703,21.14646339416504,12.180269241333008,1234728,0.0,0.0
|
||||
2022-02-15 00:00:00+01:00,21.007211685180664,21.713420867919922,20.967424392700195,21.673633575439453,12.483916282653809,687285,0.0,0.0
|
||||
2022-02-16 00:00:00+01:00,21.713420867919922,22.06155014038086,21.713420867919922,22.06155014038086,12.707352638244629,798177,0.0,0.0
|
||||
2022-02-11 00:00:00+01:00,21.882511138916016,22.06155014038086,21.713420867919922,21.882511138916016,12.604228019714355,893486,0.0,0.0
|
||||
2022-02-14 00:00:00+01:00,21.514488220214844,21.514488220214844,20.818225860595703,21.14646339416504,12.180268287658691,1234728,0.0,0.0
|
||||
2022-02-15 00:00:00+01:00,21.007211685180664,21.713420867919922,20.967424392700195,21.673633575439453,12.483914375305176,687285,0.0,0.0
|
||||
2022-02-16 00:00:00+01:00,21.713420867919922,22.06155014038086,21.713420867919922,22.06155014038086,12.707353591918945,798177,0.0,0.0
|
||||
2022-02-17 00:00:00+01:00,22.021764755249023,22.081443786621094,21.763153076171875,21.832778930664062,12.575582504272461,684218,0.0,0.0
|
||||
2022-02-18 00:00:00+01:00,21.832778930664062,21.892459869384766,21.385181427001953,21.544328689575195,12.40943717956543,737030,0.0,0.0
|
||||
2022-02-18 00:00:00+01:00,21.832778930664062,21.892459869384766,21.385181427001953,21.544328689575195,12.409436225891113,737030,0.0,0.0
|
||||
2022-02-21 00:00:00+01:00,21.673633575439453,21.68358039855957,20.92763900756836,21.126571655273438,12.168810844421387,677844,0.0,0.0
|
||||
2022-02-22 00:00:00+01:00,20.529775619506836,21.196197509765625,20.32089614868164,20.95747947692871,12.071414947509766,1273455,0.0,0.0
|
||||
2022-02-22 00:00:00+01:00,20.529775619506836,21.196197509765625,20.32089614868164,20.95747947692871,12.07141399383545,1273455,0.0,0.0
|
||||
2022-02-23 00:00:00+01:00,21.415021896362305,21.862619400024414,20.987319946289062,21.216089248657227,12.220373153686523,1732461,0.0,0.0
|
||||
2022-02-24 00:00:00+01:00,20.48004150390625,20.877906799316406,19.51124382019043,19.70221710205078,11.348388671875,2560976,0.0,0.0
|
||||
2022-02-25 00:00:00+01:00,19.903139114379883,20.291057586669922,19.475435256958008,20.201536178588867,11.635993957519531,1423396,0.0,0.0
|
||||
2022-02-24 00:00:00+01:00,20.48004150390625,20.877906799316406,19.51124382019043,19.70221710205078,11.348389625549316,2560976,0.0,0.0
|
||||
2022-02-25 00:00:00+01:00,19.903139114379883,20.291057586669922,19.475435256958008,20.201536178588867,11.635994911193848,1423396,0.0,0.0
|
||||
2022-02-28 00:00:00+01:00,19.773834228515625,19.903139114379883,19.308332443237305,19.837491989135742,11.42630672454834,1569727,0.0,0.0
|
||||
2022-03-01 00:00:00+01:00,19.77781105041504,19.95287322998047,18.73938751220703,18.73938751220703,10.793804168701172,1308216,0.0,0.0
|
||||
2022-03-01 00:00:00+01:00,19.77781105041504,19.95287322998047,18.73938751220703,18.73938751220703,10.793803215026855,1308216,0.0,0.0
|
||||
2022-03-02 00:00:00+01:00,18.536476135253906,19.12929344177246,18.17840003967285,18.966169357299805,10.924428939819336,1739856,0.0,0.0
|
||||
2022-03-03 00:00:00+01:00,19.001977920532227,19.077571868896484,18.297758102416992,18.361417770385742,10.576094627380371,834767,0.0,0.0
|
||||
2022-03-04 00:00:00+01:00,18.13463592529297,18.14259147644043,16.893299102783203,17.05642318725586,9.824423789978027,2249030,0.0,0.0
|
||||
2022-03-07 00:00:00+01:00,16.384033203125,17.10814666748047,15.516690254211426,16.380054473876953,9.434837341308594,2250820,0.0,0.0
|
||||
2022-03-08 00:00:00+01:00,16.21295166015625,16.941043853759766,16.16520881652832,16.805768966674805,9.680047035217285,1388112,0.0,0.0
|
||||
2022-03-09 00:00:00+01:00,17.207611083984375,18.22614288330078,17.17976188659668,18.22614288330078,10.498175621032715,1580329,0.0,0.0
|
||||
2022-03-03 00:00:00+01:00,19.001977920532227,19.077571868896484,18.297758102416992,18.361417770385742,10.576093673706055,834767,0.0,0.0
|
||||
2022-03-04 00:00:00+01:00,18.13463592529297,18.14259147644043,16.893299102783203,17.05642318725586,9.824422836303711,2249030,0.0,0.0
|
||||
2022-03-07 00:00:00+01:00,16.384033203125,17.10814666748047,15.516690254211426,16.380054473876953,9.43483829498291,2250820,0.0,0.0
|
||||
2022-03-08 00:00:00+01:00,16.21295166015625,16.941043853759766,16.16520881652832,16.805768966674805,9.680047988891602,1388112,0.0,0.0
|
||||
2022-03-09 00:00:00+01:00,17.207611083984375,18.22614288330078,17.17976188659668,18.22614288330078,10.498176574707031,1580329,0.0,0.0
|
||||
2022-03-10 00:00:00+01:00,18.38926887512207,18.429054260253906,17.44632911682129,17.696983337402344,10.19338321685791,1037018,0.0,0.0
|
||||
2022-03-11 00:00:00+01:00,17.88397979736328,18.369373321533203,17.585582733154297,17.943660736083984,10.335468292236328,985960,0.0,0.0
|
||||
2022-03-14 00:00:00+01:00,18.285823822021484,18.747344970703125,18.250015258789062,18.52056312561035,10.667760848999023,963701,0.0,0.0
|
||||
2022-03-15 00:00:00+01:00,19.79372787475586,19.893192291259766,17.99538230895996,18.15452766418457,10.456925392150879,2685295,0.0,0.0
|
||||
2022-03-16 00:00:00+01:00,18.78713035583496,18.9741268157959,18.369373321533203,18.76723861694336,10.809844970703125,1321768,0.0,0.0
|
||||
2022-03-14 00:00:00+01:00,18.285823822021484,18.747344970703125,18.250015258789062,18.52056312561035,10.66776180267334,963701,0.0,0.0
|
||||
2022-03-15 00:00:00+01:00,19.79372787475586,19.893192291259766,17.99538230895996,18.15452766418457,10.456927299499512,2685295,0.0,0.0
|
||||
2022-03-16 00:00:00+01:00,18.78713035583496,18.9741268157959,18.369373321533203,18.76723861694336,10.809845924377441,1321768,0.0,0.0
|
||||
2022-03-17 00:00:00+01:00,18.89853286743164,18.966169357299805,18.433032989501953,18.854768753051758,10.860261917114258,1124314,0.0,0.0
|
||||
2022-03-18 00:00:00+01:00,18.894554138183594,18.98606300354004,18.47281837463379,18.7990665435791,10.828178405761719,1809744,0.0,0.0
|
||||
2022-03-18 00:00:00+01:00,18.894554138183594,18.98606300354004,18.47281837463379,18.7990665435791,10.828177452087402,1809744,0.0,0.0
|
||||
2022-03-21 00:00:00+01:00,18.7990665435791,19.15714454650879,18.763259887695312,18.91046905517578,10.892345428466797,703039,0.0,0.0
|
||||
2022-03-22 00:00:00+01:00,18.966169357299805,19.184995651245117,18.85079002380371,19.05767822265625,10.977137565612793,715772,0.0,0.0
|
||||
2022-03-23 00:00:00+01:00,19.121337890625,19.15714454650879,18.671751022338867,18.671751022338867,10.75484561920166,1351532,0.0,0.0
|
||||
2022-03-23 00:00:00+01:00,19.121337890625,19.15714454650879,18.671751022338867,18.671751022338867,10.754844665527344,1351532,0.0,0.0
|
||||
2022-03-24 00:00:00+01:00,18.659814834594727,18.731430053710938,18.234100341796875,18.30173683166504,10.541718482971191,1286093,0.0,0.0
|
||||
2022-03-25 00:00:00+01:00,18.405181884765625,18.47281837463379,18.170442581176758,18.285823822021484,10.532552719116211,726494,0.0,0.0
|
||||
2022-03-28 00:00:00+02:00,18.393245697021484,18.759281158447266,18.329587936401367,18.433032989501953,10.61734390258789,837768,0.0,0.0
|
||||
2022-03-29 00:00:00+02:00,18.72745132446289,19.256610870361328,18.687665939331055,19.16908073425293,11.041305541992188,917861,0.0,0.0
|
||||
2022-03-29 00:00:00+02:00,18.72745132446289,19.256610870361328,18.687665939331055,19.16908073425293,11.041304588317871,917861,0.0,0.0
|
||||
2022-03-30 00:00:00+02:00,19.15714454650879,19.15714454650879,18.46088218688965,18.50862693786621,10.66088581085205,823527,0.0,0.0
|
||||
2022-03-31 00:00:00+02:00,18.50862693786621,18.822938919067383,17.768600463867188,17.796449661254883,10.250675201416016,1780930,0.0,0.0
|
||||
2022-04-01 00:00:00+02:00,17.895915985107422,18.102806091308594,17.880001068115234,17.880001068115234,10.298800468444824,751206,0.0,0.0
|
||||
2022-04-01 00:00:00+02:00,17.895915985107422,18.102806091308594,17.880001068115234,17.880001068115234,10.29880142211914,751206,0.0,0.0
|
||||
2022-04-04 00:00:00+02:00,17.92376708984375,17.991403579711914,17.517946243286133,17.79247283935547,10.248384475708008,836607,0.0,0.0
|
||||
2022-04-05 00:00:00+02:00,17.77655792236328,17.975488662719727,17.382671356201172,17.617412567138672,10.147551536560059,842142,0.0,0.0
|
||||
2022-04-05 00:00:00+02:00,17.77655792236328,17.975488662719727,17.382671356201172,17.617412567138672,10.147550582885742,842142,0.0,0.0
|
||||
2022-04-06 00:00:00+02:00,17.577625274658203,17.625368118286133,16.87340545654297,17.016637802124023,9.801506996154785,1380130,0.0,0.0
|
||||
2022-04-07 00:00:00+02:00,17.10814666748047,17.382671356201172,16.865449905395508,16.89727783203125,9.732755661010742,857449,0.0,0.0
|
||||
2022-04-08 00:00:00+02:00,17.191696166992188,17.382671356201172,16.99674415588379,17.191696166992188,9.902338981628418,913588,0.0,0.0
|
||||
2022-04-11 00:00:00+02:00,17.219547271728516,17.549774169921875,17.036529541015625,17.203632354736328,9.909214973449707,1067867,0.0,0.0
|
||||
2022-04-12 00:00:00+02:00,17.00868034362793,17.565689086914062,16.833620071411133,17.565689086914062,10.117758750915527,1285128,0.0,0.0
|
||||
2022-04-13 00:00:00+02:00,17.438373565673828,17.525903701782227,17.267290115356445,17.506010055541992,10.083383560180664,697328,0.0,0.0
|
||||
2022-04-14 00:00:00+02:00,17.58160400390625,17.657197952270508,17.406543731689453,17.513967514038086,10.087967872619629,587256,0.0,0.0
|
||||
2022-04-19 00:00:00+02:00,17.54181671142578,17.69300651550293,17.418479919433594,17.517946243286133,10.09025764465332,962344,0.0,0.0
|
||||
2022-04-08 00:00:00+02:00,17.191696166992188,17.382671356201172,16.99674415588379,17.191696166992188,9.90234088897705,913588,0.0,0.0
|
||||
2022-04-11 00:00:00+02:00,17.219547271728516,17.549774169921875,17.036529541015625,17.203632354736328,9.909215927124023,1067867,0.0,0.0
|
||||
2022-04-12 00:00:00+02:00,17.00868034362793,17.565689086914062,16.833620071411133,17.565689086914062,10.117757797241211,1285128,0.0,0.0
|
||||
2022-04-13 00:00:00+02:00,17.438373565673828,17.525903701782227,17.267290115356445,17.506010055541992,10.083382606506348,697328,0.0,0.0
|
||||
2022-04-14 00:00:00+02:00,17.58160400390625,17.657197952270508,17.406543731689453,17.513967514038086,10.087966918945312,587256,0.0,0.0
|
||||
2022-04-19 00:00:00+02:00,17.54181671142578,17.69300651550293,17.418479919433594,17.517946243286133,10.090258598327637,962344,0.0,0.0
|
||||
2022-04-20 00:00:00+02:00,17.633325576782227,17.967531204223633,17.609453201293945,17.768600463867188,10.234634399414062,675733,0.0,0.0
|
||||
2022-04-21 00:00:00+02:00,17.860109329223633,18.38926887512207,17.860109329223633,18.28980255126953,10.534844398498535,946132,0.0,0.0
|
||||
2022-04-22 00:00:00+02:00,18.063018798828125,18.25399398803711,17.87204360961914,18.031190872192383,10.385885238647461,876938,0.0,0.0
|
||||
2022-04-25 00:00:00+02:00,17.71687889099121,17.891937255859375,17.549774169921875,17.629348754882812,10.154426574707031,857539,0.0,0.0
|
||||
2022-04-25 00:00:00+02:00,17.71687889099121,17.891937255859375,17.549774169921875,17.629348754882812,10.154425621032715,857539,0.0,0.0
|
||||
2022-04-26 00:00:00+02:00,17.868066787719727,17.868066787719727,17.342885971069336,17.342885971069336,9.989424705505371,920938,0.0,0.0
|
||||
2022-04-27 00:00:00+02:00,17.42245864868164,17.513967514038086,16.865449905395508,17.430416107177734,10.039841651916504,995898,0.0,0.0
|
||||
2022-04-28 00:00:00+02:00,17.633325576782227,17.99538230895996,17.601497650146484,17.736770629882812,10.216300010681152,1172803,0.0,0.0
|
||||
2022-04-28 00:00:00+02:00,17.633325576782227,17.99538230895996,17.601497650146484,17.736770629882812,10.216300964355469,1172803,0.0,0.0
|
||||
2022-04-29 00:00:00+02:00,17.848173141479492,18.10678482055664,17.804407119750977,18.015274047851562,10.376717567443848,988594,0.0,0.0
|
||||
2022-05-02 00:00:00+02:00,17.88397979736328,18.05506134033203,16.90921401977539,17.74074935913086,10.218591690063477,1031151,0.0,0.0
|
||||
2022-05-03 00:00:00+02:00,17.848173141479492,17.93570327758789,17.506010055541992,17.808385848999023,10.257550239562988,1121197,0.0,0.0
|
||||
2022-05-04 00:00:00+02:00,18.747344970703125,19.10542106628418,18.532499313354492,18.846811294555664,10.85567855834961,2131889,0.0,0.0
|
||||
2022-05-05 00:00:00+02:00,19.18101692199707,19.37994956970215,18.138612747192383,18.17840003967285,10.47067642211914,1420586,0.0,0.0
|
||||
2022-05-04 00:00:00+02:00,18.747344970703125,19.10542106628418,18.532499313354492,18.846811294555664,10.855679512023926,2131889,0.0,0.0
|
||||
2022-05-05 00:00:00+02:00,19.18101692199707,19.37994956970215,18.138612747192383,18.17840003967285,10.470675468444824,1420586,0.0,0.0
|
||||
2022-05-06 00:00:00+02:00,18.110763549804688,18.560348510742188,17.97150993347168,18.369373321533203,10.580676078796387,967240,0.0,0.0
|
||||
2022-05-09 00:00:00+02:00,18.190336227416992,18.305715560913086,17.844194412231445,17.951616287231445,10.34005069732666,1063615,0.0,0.0
|
||||
2022-05-10 00:00:00+02:00,18.063018798828125,18.85079002380371,18.04710578918457,18.341524124145508,10.564635276794434,1106715,0.0,0.0
|
||||
2022-05-09 00:00:00+02:00,18.190336227416992,18.305715560913086,17.844194412231445,17.951616287231445,10.340049743652344,1063615,0.0,0.0
|
||||
2022-05-10 00:00:00+02:00,18.063018798828125,18.85079002380371,18.04710578918457,18.341524124145508,10.56463623046875,1106715,0.0,0.0
|
||||
2022-05-11 00:00:00+02:00,18.46088218688965,18.659814834594727,18.27786636352539,18.47281837463379,10.640260696411133,916544,0.0,0.0
|
||||
2022-05-12 00:00:00+02:00,18.04312515258789,18.261951446533203,17.784513473510742,18.222164154052734,10.495884895324707,899448,0.0,0.0
|
||||
2022-05-12 00:00:00+02:00,18.04312515258789,18.261951446533203,17.784513473510742,18.222164154052734,10.495885848999023,899448,0.0,0.0
|
||||
2022-05-13 00:00:00+02:00,18.405181884765625,18.55636978149414,18.194313049316406,18.38528823852539,10.58984375,614260,0.0,0.0
|
||||
2022-05-16 00:00:00+02:00,18.381309509277344,18.612070083618164,18.24205780029297,18.417118072509766,10.608176231384277,734648,0.0,0.0
|
||||
2022-05-17 00:00:00+02:00,18.21420669555664,18.747344970703125,18.21420669555664,18.512605667114258,12.22278881072998,625555,2.35,0.0
|
||||
2022-05-18 00:00:00+02:00,18.54443359375,18.592178344726562,18.357437133789062,18.357437133789062,12.120339393615723,676447,0.0,0.0
|
||||
2022-05-19 00:00:00+02:00,17.677091598510742,17.903873443603516,17.474180221557617,17.513967514038086,11.563447952270508,1239650,0.0,0.0
|
||||
2022-05-20 00:00:00+02:00,17.856130599975586,18.063018798828125,17.60547637939453,17.60547637939453,11.62386417388916,792884,0.0,0.0
|
||||
2022-05-16 00:00:00+02:00,18.381309509277344,18.612070083618164,18.24205780029297,18.417118072509766,10.60817813873291,734648,0.0,0.0
|
||||
2022-05-17 00:00:00+02:00,18.21420669555664,18.747344970703125,18.21420669555664,18.512605667114258,12.222789764404297,625555,2.35,0.0
|
||||
2022-05-18 00:00:00+02:00,18.54443359375,18.592178344726562,18.357437133789062,18.357437133789062,12.120341300964355,676447,0.0,0.0
|
||||
2022-05-19 00:00:00+02:00,17.677091598510742,17.903873443603516,17.474180221557617,17.513967514038086,11.563446998596191,1239650,0.0,0.0
|
||||
2022-05-20 00:00:00+02:00,17.856130599975586,18.063018798828125,17.60547637939453,17.60547637939453,11.623865127563477,792884,0.0,0.0
|
||||
2022-05-23 00:00:00+02:00,17.85215187072754,17.987424850463867,17.633325576782227,17.987424850463867,11.876043319702148,661658,0.0,0.0
|
||||
2022-05-24 00:00:00+02:00,17.79247283935547,17.83623695373535,17.414501190185547,17.418479919433594,11.500402450561523,729103,0.0,0.0
|
||||
2022-05-24 00:00:00+02:00,17.79247283935547,17.83623695373535,17.414501190185547,17.418479919433594,11.500401496887207,729103,0.0,0.0
|
||||
2022-05-25 00:00:00+02:00,17.617412567138672,17.89989471435547,17.394607543945312,17.8402156829834,11.778849601745605,645185,0.0,0.0
|
||||
2022-05-26 00:00:00+02:00,17.79247283935547,18.05506134033203,17.720855712890625,18.03516960144043,11.907565116882324,523872,0.0,0.0
|
||||
2022-05-26 00:00:00+02:00,17.79247283935547,18.05506134033203,17.720855712890625,18.03516960144043,11.90756607055664,523872,0.0,0.0
|
||||
2022-05-27 00:00:00+02:00,18.031190872192383,18.198293685913086,17.94763946533203,18.198293685913086,12.015267372131348,578243,0.0,0.0
|
||||
2022-05-30 00:00:00+02:00,18.27786636352539,18.433032989501953,18.10678482055664,18.218185424804688,12.028400421142578,568621,0.0,0.0
|
||||
2022-05-31 00:00:00+02:00,18.1823787689209,18.218185424804688,17.97150993347168,18.122699737548828,11.965356826782227,1795488,0.0,0.0
|
||||
2022-05-31 00:00:00+02:00,18.1823787689209,18.218185424804688,17.97150993347168,18.122699737548828,11.965357780456543,1795488,0.0,0.0
|
||||
2022-06-01 00:00:00+02:00,18.293779373168945,18.44496726989746,18.17840003967285,18.28980255126953,12.075685501098633,494450,0.0,0.0
|
||||
2022-06-02 00:00:00+02:00,18.3494815826416,18.532499313354492,18.3494815826416,18.4569034576416,12.186014175415039,412331,0.0,0.0
|
||||
2022-06-02 00:00:00+02:00,18.3494815826416,18.532499313354492,18.3494815826416,18.4569034576416,12.186012268066406,412331,0.0,0.0
|
||||
2022-06-03 00:00:00+02:00,18.592178344726562,18.639921188354492,18.433032989501953,18.564327239990234,12.256937980651855,487960,0.0,0.0
|
||||
2022-06-06 00:00:00+02:00,18.72745132446289,18.830896377563477,18.56830596923828,18.592178344726562,12.275324821472168,605186,0.0,0.0
|
||||
2022-06-07 00:00:00+02:00,18.500669479370117,18.540456771850586,18.32560920715332,18.468839645385742,12.193893432617188,606368,0.0,0.0
|
||||
2022-06-06 00:00:00+02:00,18.72745132446289,18.830896377563477,18.56830596923828,18.592178344726562,12.2753267288208,605186,0.0,0.0
|
||||
2022-06-07 00:00:00+02:00,18.500669479370117,18.540456771850586,18.32560920715332,18.468839645385742,12.193892478942871,606368,0.0,0.0
|
||||
2022-06-08 00:00:00+02:00,18.512605667114258,18.616050720214844,18.44496726989746,18.564327239990234,12.256937980651855,631100,0.0,0.0
|
||||
2022-06-09 00:00:00+02:00,18.452926635742188,18.82691764831543,18.401203155517578,18.41313934326172,12.157118797302246,1105870,0.0,0.0
|
||||
2022-06-09 00:00:00+02:00,18.452926635742188,18.82691764831543,18.401203155517578,18.41313934326172,12.15711784362793,1105870,0.0,0.0
|
||||
2022-06-10 00:00:00+02:00,18.273887634277344,18.31367301940918,17.685047149658203,17.685047149658203,11.676401138305664,933108,0.0,0.0
|
||||
2022-06-13 00:00:00+02:00,17.506010055541992,17.768600463867188,17.223526000976562,17.521923065185547,11.56869888305664,1102884,0.0,0.0
|
||||
2022-06-14 00:00:00+02:00,17.71289825439453,17.756664276123047,17.255355834960938,17.255355834960938,11.3927001953125,815872,0.0,0.0
|
||||
2022-06-15 00:00:00+02:00,17.486116409301758,18.015274047851562,17.42245864868164,17.621389389038086,11.634371757507324,987976,0.0,0.0
|
||||
2022-06-16 00:00:00+02:00,17.533859252929688,17.577625274658203,16.328332901000977,16.328332901000977,10.780641555786133,1421657,0.0,0.0
|
||||
2022-06-17 00:00:00+02:00,16.391990661621094,16.694366455078125,16.06574249267578,16.248760223388672,10.728103637695312,3094063,0.0,0.0
|
||||
2022-06-20 00:00:00+02:00,16.40790557861328,16.427799224853516,16.12542152404785,16.356182098388672,10.799029350280762,496948,0.0,0.0
|
||||
2022-06-21 00:00:00+02:00,16.491456985473633,16.821683883666992,16.427799224853516,16.48349952697754,10.883089065551758,563534,0.0,0.0
|
||||
2022-06-16 00:00:00+02:00,17.533859252929688,17.577625274658203,16.328332901000977,16.328332901000977,10.78064250946045,1421657,0.0,0.0
|
||||
2022-06-17 00:00:00+02:00,16.391990661621094,16.694366455078125,16.06574249267578,16.248760223388672,10.728104591369629,3094063,0.0,0.0
|
||||
2022-06-20 00:00:00+02:00,16.40790557861328,16.427799224853516,16.12542152404785,16.356182098388672,10.799028396606445,496948,0.0,0.0
|
||||
2022-06-21 00:00:00+02:00,16.491456985473633,16.821683883666992,16.427799224853516,16.48349952697754,10.883090019226074,563534,0.0,0.0
|
||||
2022-06-22 00:00:00+02:00,16.208974838256836,16.208974838256836,15.759387016296387,15.819067001342773,10.444403648376465,1050007,0.0,0.0
|
||||
2022-06-23 00:00:00+02:00,15.735515594482422,15.799174308776855,15.285928726196289,15.30980110168457,10.10816478729248,1064414,0.0,0.0
|
||||
2022-06-24 00:00:00+02:00,15.413246154785156,15.898639678955078,15.234207153320312,15.86681079864502,10.47592544555664,1215616,0.0,0.0
|
||||
2022-06-27 00:00:00+02:00,16.01799964904785,16.328332901000977,15.958318710327148,16.117464065551758,10.641417503356934,1182615,0.0,0.0
|
||||
2022-06-28 00:00:00+02:00,16.248760223388672,16.519306182861328,16.045848846435547,16.181123733520508,10.68344783782959,1274280,0.0,0.0
|
||||
2022-06-23 00:00:00+02:00,15.735515594482422,15.799174308776855,15.285928726196289,15.30980110168457,10.108163833618164,1064414,0.0,0.0
|
||||
2022-06-24 00:00:00+02:00,15.413246154785156,15.898639678955078,15.234207153320312,15.86681079864502,10.475926399230957,1215616,0.0,0.0
|
||||
2022-06-27 00:00:00+02:00,16.01799964904785,16.328332901000977,15.958318710327148,16.117464065551758,10.64141845703125,1182615,0.0,0.0
|
||||
2022-06-28 00:00:00+02:00,16.248760223388672,16.519306182861328,16.045848846435547,16.181123733520508,10.683448791503906,1274280,0.0,0.0
|
||||
2022-06-29 00:00:00+02:00,16.014020919799805,16.06574249267578,15.468947410583496,15.528626441955566,10.252642631530762,1058236,0.0,0.0
|
||||
2022-06-30 00:00:00+02:00,15.234207153320312,15.381417274475098,14.800535202026367,15.381417274475098,10.155448913574219,1934410,0.0,0.0
|
||||
2022-06-30 00:00:00+02:00,15.234207153320312,15.381417274475098,14.800535202026367,15.381417274475098,10.155447959899902,1934410,0.0,0.0
|
||||
2022-07-01 00:00:00+02:00,15.277972221374512,15.679815292358398,15.230228424072266,15.377437591552734,10.15282154083252,909034,0.0,0.0
|
||||
2022-07-04 00:00:00+02:00,15.564434051513672,15.791215896606445,15.488840103149414,15.687771797180176,10.35771656036377,798569,0.0,0.0
|
||||
2022-07-05 00:00:00+02:00,15.763365745544434,15.91455364227295,14.884086608886719,14.884086608886719,9.827091217041016,1966763,0.0,0.0
|
||||
2022-07-06 00:00:00+02:00,15.079039573669434,15.202378273010254,14.907958984375,15.110869407653809,9.976821899414062,938909,0.0,0.0
|
||||
2022-07-07 00:00:00+02:00,15.301843643188477,15.898639678955078,15.23818588256836,15.807130813598633,10.4365234375,1170179,0.0,0.0
|
||||
2022-07-05 00:00:00+02:00,15.763365745544434,15.91455364227295,14.884086608886719,14.884086608886719,9.8270902633667,1966763,0.0,0.0
|
||||
2022-07-06 00:00:00+02:00,15.079039573669434,15.202378273010254,14.907958984375,15.110869407653809,9.976822853088379,938909,0.0,0.0
|
||||
2022-07-07 00:00:00+02:00,15.301843643188477,15.898639678955078,15.23818588256836,15.807130813598633,10.436522483825684,1170179,0.0,0.0
|
||||
2022-07-08 00:00:00+02:00,15.69572925567627,16.39596939086914,15.532605171203613,16.049827575683594,10.596760749816895,1372047,0.0,0.0
|
||||
2022-07-11 00:00:00+02:00,15.608199119567871,15.69572925567627,15.285928726196289,15.488840103149414,10.226374626159668,877119,0.0,0.0
|
||||
2022-07-12 00:00:00+02:00,15.381417274475098,15.556476593017578,14.983552932739258,15.520668983459473,10.247389793395996,1161955,0.0,0.0
|
||||
2022-07-13 00:00:00+02:00,15.425182342529297,15.647985458374023,15.234207153320312,15.357544898986816,10.139687538146973,1081802,0.0,0.0
|
||||
2022-07-11 00:00:00+02:00,15.608199119567871,15.69572925567627,15.285928726196289,15.488840103149414,10.226373672485352,877119,0.0,0.0
|
||||
2022-07-12 00:00:00+02:00,15.381417274475098,15.556476593017578,14.983552932739258,15.520668983459473,10.24738883972168,1161955,0.0,0.0
|
||||
2022-07-13 00:00:00+02:00,15.425182342529297,15.647985458374023,15.234207153320312,15.357544898986816,10.139686584472656,1081802,0.0,0.0
|
||||
2022-07-14 00:00:00+02:00,15.333672523498535,15.357544898986816,14.728919982910156,14.888065338134766,9.829717636108398,896311,0.0,0.0
|
||||
2022-07-15 00:00:00+02:00,14.959680557250977,15.548519134521484,14.923872947692871,15.433138847351074,10.189598083496094,1160019,0.0,0.0
|
||||
2022-07-18 00:00:00+02:00,15.970254898071289,16.316396713256836,15.894660949707031,16.133378982543945,10.651925086975098,1770123,0.0,0.0
|
||||
2022-07-19 00:00:00+02:00,16.010042190551758,16.698345184326172,15.755409240722656,16.48349952697754,10.883089065551758,1574206,0.0,0.0
|
||||
2022-07-19 00:00:00+02:00,16.010042190551758,16.698345184326172,15.755409240722656,16.48349952697754,10.883090019226074,1574206,0.0,0.0
|
||||
2022-07-20 00:00:00+02:00,16.551136016845703,16.67845344543457,16.145315170288086,16.439735412597656,10.854194641113281,876721,0.0,0.0
|
||||
2022-07-21 00:00:00+02:00,16.30048179626465,16.646623611450195,16.16520881652832,16.364139556884766,10.804283142089844,1014598,0.0,0.0
|
||||
2022-07-22 00:00:00+02:00,16.244781494140625,16.463605880737305,15.98219108581543,16.037891387939453,10.58888053894043,1100753,0.0,0.0
|
||||
2022-07-25 00:00:00+02:00,16.014020919799805,16.39596939086914,15.874768257141113,16.11348533630371,10.638792037963867,826151,0.0,0.0
|
||||
2022-07-26 00:00:00+02:00,16.11348533630371,16.133378982543945,15.600241661071777,15.715621948242188,10.376104354858398,1071673,0.0,0.0
|
||||
2022-07-25 00:00:00+02:00,16.014020919799805,16.39596939086914,15.874768257141113,16.11348533630371,10.638790130615234,826151,0.0,0.0
|
||||
2022-07-26 00:00:00+02:00,16.11348533630371,16.133378982543945,15.600241661071777,15.715621948242188,10.376105308532715,1071673,0.0,0.0
|
||||
2022-07-27 00:00:00+02:00,15.894660949707031,15.970254898071289,15.703685760498047,15.950362205505371,10.531089782714844,1076946,0.0,0.0
|
||||
2022-07-28 00:00:00+02:00,16.368118286132812,16.686410903930664,16.232845306396484,16.551136016845703,10.927746772766113,1713701,0.0,0.0
|
||||
2022-07-29 00:00:00+02:00,16.634687423706055,17.084274291992188,16.551136016845703,17.00868034362793,11.229835510253906,1096515,0.0,0.0
|
||||
2022-08-01 00:00:00+02:00,17.088253021240234,17.303098678588867,16.83759880065918,16.861469268798828,11.132640838623047,698449,0.0,0.0
|
||||
2022-08-02 00:00:00+02:00,16.833620071411133,16.992765426635742,16.674474716186523,16.937063217163086,11.182551383972168,683927,0.0,0.0
|
||||
2022-08-01 00:00:00+02:00,17.088253021240234,17.303098678588867,16.83759880065918,16.861469268798828,11.132641792297363,698449,0.0,0.0
|
||||
2022-08-02 00:00:00+02:00,16.833620071411133,16.992765426635742,16.674474716186523,16.937063217163086,11.182550430297852,683927,0.0,0.0
|
||||
2022-08-03 00:00:00+02:00,16.92115020751953,17.175783157348633,16.83759880065918,17.12008285522461,11.303388595581055,520776,0.0,0.0
|
||||
2022-08-04 00:00:00+02:00,17.132017135620117,17.334928512573242,17.004701614379883,17.064380645751953,11.266611099243164,770841,0.0,0.0
|
||||
2022-08-05 00:00:00+02:00,17.100189208984375,17.283206939697266,16.821683883666992,17.104167938232422,11.292879104614258,676884,0.0,0.0
|
||||
2022-08-05 00:00:00+02:00,17.100189208984375,17.283206939697266,16.821683883666992,17.104167938232422,11.292880058288574,676884,0.0,0.0
|
||||
2022-08-08 00:00:00+02:00,17.283206939697266,17.47020149230957,17.076316833496094,17.319013595581055,11.434730529785156,640299,0.0,0.0
|
||||
2022-08-09 00:00:00+02:00,17.247398376464844,17.342885971069336,16.9808292388916,17.112125396728516,11.298133850097656,513653,0.0,0.0
|
||||
2022-08-10 00:00:00+02:00,17.084274291992188,17.43439483642578,16.90921401977539,17.394607543945312,11.484641075134277,565334,0.0,0.0
|
||||
2022-08-11 00:00:00+02:00,17.45826530456543,17.474180221557617,17.15191078186035,17.267290115356445,11.400579452514648,740132,0.0,0.0
|
||||
2022-08-09 00:00:00+02:00,17.247398376464844,17.342885971069336,16.9808292388916,17.112125396728516,11.298134803771973,513653,0.0,0.0
|
||||
2022-08-10 00:00:00+02:00,17.084274291992188,17.43439483642578,16.90921401977539,17.394607543945312,11.484639167785645,565334,0.0,0.0
|
||||
2022-08-11 00:00:00+02:00,17.45826530456543,17.474180221557617,17.15191078186035,17.267290115356445,11.400580406188965,740132,0.0,0.0
|
||||
2022-08-12 00:00:00+02:00,17.23944091796875,17.486116409301758,17.231483459472656,17.342885971069336,11.450491905212402,966868,0.0,0.0
|
||||
2022-08-15 00:00:00+02:00,17.346864700317383,17.474180221557617,17.064380645751953,17.243419647216797,11.384819984436035,404314,0.0,0.0
|
||||
2022-08-16 00:00:00+02:00,17.342885971069336,17.426437377929688,17.175783157348633,17.36277961730957,11.463626861572266,615567,0.0,0.0
|
||||
2022-08-16 00:00:00+02:00,17.342885971069336,17.426437377929688,17.175783157348633,17.36277961730957,11.46362590789795,615567,0.0,0.0
|
||||
2022-08-17 00:00:00+02:00,17.44632911682129,17.525903701782227,16.742111206054688,16.76598358154297,11.069597244262695,1020374,0.0,0.0
|
||||
2022-08-18 00:00:00+02:00,16.821683883666992,17.25137710571289,16.769962310791016,16.853513717651367,11.127388000488281,738694,0.0,0.0
|
||||
2022-08-19 00:00:00+02:00,16.69038963317871,16.901256561279297,16.606836318969727,16.606836318969727,10.964520454406738,628184,0.0,0.0
|
||||
2022-08-19 00:00:00+02:00,16.69038963317871,16.901256561279297,16.606836318969727,16.606836318969727,10.964521408081055,628184,0.0,0.0
|
||||
2022-08-22 00:00:00+02:00,16.479520797729492,16.527265548706055,15.92251205444336,15.978212356567383,10.549478530883789,866276,0.0,0.0
|
||||
2022-08-23 00:00:00+02:00,15.942404747009277,16.292524337768555,15.918533325195312,16.292524337768555,10.756999015808105,860233,0.0,0.0
|
||||
2022-08-24 00:00:00+02:00,16.268653869628906,16.308439254760742,15.950362205505371,16.240802764892578,10.722850799560547,704240,0.0,0.0
|
||||
2022-08-24 00:00:00+02:00,16.268653869628906,16.308439254760742,15.950362205505371,16.240802764892578,10.72284984588623,704240,0.0,0.0
|
||||
2022-08-25 00:00:00+02:00,16.388011932373047,16.523286819458008,16.216930389404297,16.292524337768555,10.756999015808105,479490,0.0,0.0
|
||||
2022-08-26 00:00:00+02:00,16.439735412597656,16.598880767822266,15.958318710327148,15.990147590637207,10.557358741760254,546820,0.0,0.0
|
||||
2022-08-29 00:00:00+02:00,15.91455364227295,16.44769287109375,15.743473052978516,16.43177604675293,10.848939895629883,771344,0.0,0.0
|
||||
2022-08-30 00:00:00+02:00,16.54317855834961,16.67845344543457,16.15327262878418,16.248760223388672,10.728103637695312,741509,0.0,0.0
|
||||
2022-08-26 00:00:00+02:00,16.439735412597656,16.598880767822266,15.958318710327148,15.990147590637207,10.557356834411621,546820,0.0,0.0
|
||||
2022-08-29 00:00:00+02:00,15.91455364227295,16.44769287109375,15.743473052978516,16.43177604675293,10.84893798828125,771344,0.0,0.0
|
||||
2022-08-30 00:00:00+02:00,16.54317855834961,16.67845344543457,16.15327262878418,16.248760223388672,10.728104591369629,741509,0.0,0.0
|
||||
2022-08-31 00:00:00+02:00,16.356182098388672,16.44371223449707,16.0418701171875,16.0418701171875,10.591507911682129,956161,0.0,0.0
|
||||
2022-09-01 00:00:00+02:00,15.978212356567383,15.978212356567383,15.691749572753906,15.755409240722656,10.402374267578125,998562,0.0,0.0
|
||||
2022-09-02 00:00:00+02:00,16.161230087280273,16.519306182861328,15.962298393249512,16.391990661621094,10.822671890258789,997552,0.0,0.0
|
||||
2022-09-05 00:00:00+02:00,15.874768257141113,15.91455364227295,15.520668983459473,15.723580360412598,10.381359100341797,1129909,0.0,0.0
|
||||
2022-09-06 00:00:00+02:00,15.763365745544434,16.09359359741211,15.683793067932129,15.86681079864502,10.47592544555664,638791,0.0,0.0
|
||||
2022-09-05 00:00:00+02:00,15.874768257141113,15.91455364227295,15.520668983459473,15.723580360412598,10.381360054016113,1129909,0.0,0.0
|
||||
2022-09-06 00:00:00+02:00,15.763365745544434,16.09359359741211,15.683793067932129,15.86681079864502,10.475926399230957,638791,0.0,0.0
|
||||
2022-09-07 00:00:00+02:00,15.616155624389648,16.264673233032227,15.58034896850586,16.21295166015625,10.704462051391602,819365,0.0,0.0
|
||||
2022-09-08 00:00:00+02:00,16.292524337768555,16.364139556884766,15.954340934753418,16.14133644104004,10.65717887878418,690130,0.0,0.0
|
||||
2022-09-09 00:00:00+02:00,16.19305992126465,16.575008392333984,16.19305992126465,16.427799224853516,10.8463134765625,623223,0.0,0.0
|
||||
2022-09-12 00:00:00+02:00,16.614795684814453,17.076316833496094,16.571029663085938,16.98480796813965,11.21407413482666,880959,0.0,0.0
|
||||
2022-09-13 00:00:00+02:00,17.02061653137207,17.549774169921875,16.698345184326172,16.722217559814453,11.040700912475586,1949078,0.0,0.0
|
||||
2022-09-13 00:00:00+02:00,17.02061653137207,17.549774169921875,16.698345184326172,16.722217559814453,11.04069995880127,1949078,0.0,0.0
|
||||
2022-09-14 00:00:00+02:00,16.55511474609375,16.65458106994629,16.06574249267578,16.316396713256836,10.772761344909668,1147799,0.0,0.0
|
||||
2022-09-15 00:00:00+02:00,16.316396713256836,16.50737190246582,16.01799964904785,16.12542152404785,10.646672248840332,704698,0.0,0.0
|
||||
2022-09-15 00:00:00+02:00,16.316396713256836,16.50737190246582,16.01799964904785,16.12542152404785,10.646671295166016,704698,0.0,0.0
|
||||
2022-09-16 00:00:00+02:00,15.92648983001709,16.05380630493164,15.647985458374023,15.954340934753418,10.533716201782227,1934284,0.0,0.0
|
||||
2022-09-19 00:00:00+02:00,15.890682220458984,16.419841766357422,15.791215896606445,16.368118286132812,10.806909561157227,961766,0.0,0.0
|
||||
2022-09-20 00:00:00+02:00,16.44769287109375,16.55511474609375,15.930468559265137,15.99412727355957,10.559985160827637,712846,0.0,0.0
|
||||
2022-09-21 00:00:00+02:00,15.894660949707031,16.137357711791992,15.815088272094727,16.1294002532959,10.649298667907715,557165,0.0,0.0
|
||||
2022-09-22 00:00:00+02:00,15.727558135986328,16.197038650512695,15.667879104614258,16.069721221923828,10.609896659851074,892616,0.0,0.0
|
||||
2022-09-23 00:00:00+02:00,16.0418701171875,16.161230087280273,15.64002799987793,15.854874610900879,10.46804428100586,1425407,0.0,0.0
|
||||
2022-09-26 00:00:00+02:00,15.675835609436035,16.037891387939453,15.604220390319824,15.604220390319824,10.302552223205566,823367,0.0,0.0
|
||||
2022-09-19 00:00:00+02:00,15.890682220458984,16.419841766357422,15.791215896606445,16.368118286132812,10.806910514831543,961766,0.0,0.0
|
||||
2022-09-20 00:00:00+02:00,16.44769287109375,16.55511474609375,15.930468559265137,15.99412727355957,10.559986114501953,712846,0.0,0.0
|
||||
2022-09-21 00:00:00+02:00,15.894660949707031,16.137357711791992,15.815088272094727,16.1294002532959,10.649297714233398,557165,0.0,0.0
|
||||
2022-09-22 00:00:00+02:00,15.727558135986328,16.197038650512695,15.667879104614258,16.069721221923828,10.609895706176758,892616,0.0,0.0
|
||||
2022-09-23 00:00:00+02:00,16.0418701171875,16.161230087280273,15.64002799987793,15.854874610900879,10.468045234680176,1425407,0.0,0.0
|
||||
2022-09-26 00:00:00+02:00,15.675835609436035,16.037891387939453,15.604220390319824,15.604220390319824,10.302553176879883,823367,0.0,0.0
|
||||
2022-09-27 00:00:00+02:00,15.6360502243042,15.886704444885254,15.492818832397461,15.687771797180176,10.35771656036377,1239006,0.0,0.0
|
||||
2022-09-28 00:00:00+02:00,15.433138847351074,16.109508514404297,15.170549392700195,15.990147590637207,10.557358741760254,1753368,0.0,0.0
|
||||
2022-09-28 00:00:00+02:00,15.433138847351074,16.109508514404297,15.170549392700195,15.990147590637207,10.557356834411621,1753368,0.0,0.0
|
||||
2022-09-29 00:00:00+02:00,15.986169815063477,15.986169815063477,15.40926742553711,15.516690254211426,10.24476146697998,1373640,0.0,0.0
|
||||
2022-09-30 00:00:00+02:00,15.6360502243042,15.894660949707031,15.528626441955566,15.842939376831055,10.460165023803711,1225082,0.0,0.0
|
||||
2022-10-03 00:00:00+02:00,15.671856880187988,16.419841766357422,15.628091812133789,16.34822654724121,10.793777465820312,968647,0.0,0.0
|
||||
2022-10-04 00:00:00+02:00,16.618772506713867,17.267290115356445,16.618772506713867,17.267290115356445,11.400579452514648,1425231,0.0,0.0
|
||||
2022-10-05 00:00:00+02:00,17.100189208984375,17.35084342956543,17.016637802124023,17.08029556274414,11.277119636535645,1216119,0.0,0.0
|
||||
2022-10-06 00:00:00+02:00,17.203632354736328,17.32697105407715,16.88534164428711,16.976850509643555,11.208820343017578,825166,0.0,0.0
|
||||
2022-10-07 00:00:00+02:00,16.976850509643555,17.12803840637207,16.65458106994629,16.730175018310547,11.045955657958984,839674,0.0,0.0
|
||||
2022-10-10 00:00:00+02:00,16.610815048217773,17.56966781616211,16.586944580078125,17.402565002441406,11.48989486694336,1029281,0.0,0.0
|
||||
2022-10-11 00:00:00+02:00,17.088253021240234,17.23944091796875,16.284568786621094,16.463605880737305,10.869955062866211,2020228,0.0,0.0
|
||||
2022-10-12 00:00:00+02:00,16.499414443969727,16.929107666015625,16.320375442504883,16.789854049682617,11.085357666015625,1510536,0.0,0.0
|
||||
2022-10-13 00:00:00+02:00,16.694366455078125,17.17976188659668,16.384033203125,17.17976188659668,11.342789649963379,1551570,0.0,0.0
|
||||
2022-10-14 00:00:00+02:00,17.525903701782227,17.69300651550293,16.841577529907227,17.012659072875977,11.232462882995605,1388605,0.0,0.0
|
||||
2022-10-03 00:00:00+02:00,15.671856880187988,16.419841766357422,15.628091812133789,16.34822654724121,10.793776512145996,968647,0.0,0.0
|
||||
2022-10-04 00:00:00+02:00,16.618772506713867,17.267290115356445,16.618772506713867,17.267290115356445,11.400580406188965,1425231,0.0,0.0
|
||||
2022-10-05 00:00:00+02:00,17.100189208984375,17.35084342956543,17.016637802124023,17.08029556274414,11.277118682861328,1216119,0.0,0.0
|
||||
2022-10-06 00:00:00+02:00,17.203632354736328,17.32697105407715,16.88534164428711,16.976850509643555,11.208819389343262,825166,0.0,0.0
|
||||
2022-10-07 00:00:00+02:00,16.976850509643555,17.12803840637207,16.65458106994629,16.730175018310547,11.045954704284668,839674,0.0,0.0
|
||||
2022-10-10 00:00:00+02:00,16.610815048217773,17.56966781616211,16.586944580078125,17.402565002441406,11.489893913269043,1029281,0.0,0.0
|
||||
2022-10-11 00:00:00+02:00,17.088253021240234,17.23944091796875,16.284568786621094,16.463605880737305,10.869954109191895,2020228,0.0,0.0
|
||||
2022-10-12 00:00:00+02:00,16.499414443969727,16.929107666015625,16.320375442504883,16.789854049682617,11.085356712341309,1510536,0.0,0.0
|
||||
2022-10-13 00:00:00+02:00,16.694366455078125,17.17976188659668,16.384033203125,17.17976188659668,11.342791557312012,1551570,0.0,0.0
|
||||
2022-10-14 00:00:00+02:00,17.525903701782227,17.69300651550293,16.841577529907227,17.012659072875977,11.232461929321289,1388605,0.0,0.0
|
||||
2022-10-17 00:00:00+02:00,17.012659072875977,17.49407386779785,16.913192749023438,17.287185668945312,11.413715362548828,857670,0.0,0.0
|
||||
2022-10-18 00:00:00+02:00,17.43439483642578,17.951616287231445,17.39858627319336,17.617412567138672,11.631745338439941,1118895,0.0,0.0
|
||||
2022-10-18 00:00:00+02:00,17.43439483642578,17.951616287231445,17.39858627319336,17.617412567138672,11.631746292114258,1118895,0.0,0.0
|
||||
2022-10-19 00:00:00+02:00,17.732791900634766,17.820322036743164,17.565689086914062,17.58160400390625,11.60810375213623,659672,0.0,0.0
|
||||
2022-10-20 00:00:00+02:00,17.4980525970459,17.796449661254883,17.414501190185547,17.677091598510742,11.671147346496582,869126,0.0,0.0
|
||||
2022-10-21 00:00:00+02:00,17.506010055541992,17.85215187072754,17.346864700317383,17.85215187072754,11.786730766296387,781749,0.0,0.0
|
||||
2022-10-20 00:00:00+02:00,17.4980525970459,17.796449661254883,17.414501190185547,17.677091598510742,11.671148300170898,869126,0.0,0.0
|
||||
2022-10-21 00:00:00+02:00,17.506010055541992,17.85215187072754,17.346864700317383,17.85215187072754,11.786728858947754,781749,0.0,0.0
|
||||
2022-10-24 00:00:00+02:00,18.699600219726562,18.834875106811523,17.708919525146484,18.345502853393555,12.11246109008789,1695268,0.0,0.0
|
||||
2022-10-25 00:00:00+02:00,18.440990447998047,18.627986907958984,17.931724548339844,18.202272415161133,12.017894744873047,1131150,0.0,0.0
|
||||
2022-10-26 00:00:00+02:00,18.22614288330078,18.43701171875,17.975488662719727,18.329587936401367,12.101953506469727,1222905,0.0,0.0
|
||||
2022-10-27 00:00:00+02:00,18.341524124145508,18.600135803222656,18.08291244506836,18.293779373168945,12.0783109664917,778065,0.0,0.0
|
||||
2022-10-26 00:00:00+02:00,18.22614288330078,18.43701171875,17.975488662719727,18.329587936401367,12.10195255279541,1222905,0.0,0.0
|
||||
2022-10-27 00:00:00+02:00,18.341524124145508,18.600135803222656,18.08291244506836,18.293779373168945,12.078311920166016,778065,0.0,0.0
|
||||
2022-10-28 00:00:00+02:00,18.078933715820312,18.32560920715332,17.975488662719727,18.269908905029297,12.06255054473877,1099727,0.0,0.0
|
||||
2022-10-31 00:00:00+01:00,18.369373321533203,18.532499313354492,18.14259147644043,18.150548934936523,11.983744621276855,1018936,0.0,0.0
|
||||
2022-11-01 00:00:00+01:00,18.293779373168945,18.492712020874023,18.063018798828125,18.15452766418457,11.986370086669922,1016061,0.0,0.0
|
||||
2022-11-02 00:00:00+01:00,18.186357498168945,18.194313049316406,17.88397979736328,18.063018798828125,11.92595386505127,1299861,0.0,0.0
|
||||
2022-11-03 00:00:00+01:00,17.69300651550293,18.015274047851562,17.406543731689453,17.98344612121582,11.87341594696045,1179101,0.0,0.0
|
||||
2022-11-04 00:00:00+01:00,18.202272415161133,18.894554138183594,18.15452766418457,18.791109085083008,12.406667709350586,1369272,0.0,0.0
|
||||
2022-10-31 00:00:00+01:00,18.369373321533203,18.532499313354492,18.14259147644043,18.150548934936523,11.983743667602539,1018936,0.0,0.0
|
||||
2022-11-01 00:00:00+01:00,18.293779373168945,18.492712020874023,18.063018798828125,18.15452766418457,11.986371040344238,1016061,0.0,0.0
|
||||
2022-11-02 00:00:00+01:00,18.186357498168945,18.194313049316406,17.88397979736328,18.063018798828125,11.925954818725586,1299861,0.0,0.0
|
||||
2022-11-03 00:00:00+01:00,17.69300651550293,18.015274047851562,17.406543731689453,17.98344612121582,11.873414993286133,1179101,0.0,0.0
|
||||
2022-11-04 00:00:00+01:00,18.202272415161133,18.894554138183594,18.15452766418457,18.791109085083008,12.406668663024902,1369272,0.0,0.0
|
||||
2022-11-07 00:00:00+01:00,18.759281158447266,19.391883850097656,18.659814834594727,19.336183547973633,12.766550064086914,1259541,0.0,0.0
|
||||
2022-11-08 00:00:00+01:00,19.332204818725586,19.566944122314453,19.188974380493164,19.41177749633789,12.816459655761719,886906,0.0,0.0
|
||||
2022-11-09 00:00:00+01:00,19.415756225585938,19.415756225585938,18.954233169555664,19.208866119384766,12.682489395141602,1198007,0.0,0.0
|
||||
2022-11-10 00:00:00+01:00,19.153165817260742,19.59479522705078,19.03778648376465,19.586837768554688,12.93204116821289,1410472,0.0,0.0
|
||||
2022-11-11 00:00:00+01:00,19.59479522705078,19.857385635375977,19.562965393066406,19.78974723815918,13.066010475158691,1274687,0.0,0.0
|
||||
2022-11-14 00:00:00+01:00,19.81361961364746,20.112018585205078,19.690282821655273,20.032445907592773,13.226251602172852,1295287,0.0,0.0
|
||||
2022-11-14 00:00:00+01:00,19.81361961364746,20.112018585205078,19.690282821655273,20.032445907592773,13.226252555847168,1295287,0.0,0.0
|
||||
2022-11-15 00:00:00+01:00,20.01255226135254,20.191591262817383,19.61071014404297,19.805662155151367,13.076519966125488,1056914,0.0,0.0
|
||||
2022-11-16 00:00:00+01:00,19.75394058227539,19.785770416259766,19.276504516601562,19.44758415222168,12.84010124206543,1015000,0.0,0.0
|
||||
2022-11-17 00:00:00+01:00,19.4833927154541,19.65447425842285,19.09746551513672,19.296396255493164,12.740279197692871,644501,0.0,0.0
|
||||
2022-11-16 00:00:00+01:00,19.75394058227539,19.785770416259766,19.276504516601562,19.44758415222168,12.840100288391113,1015000,0.0,0.0
|
||||
2022-11-17 00:00:00+01:00,19.4833927154541,19.65447425842285,19.09746551513672,19.296396255493164,12.740280151367188,644501,0.0,0.0
|
||||
2022-11-18 00:00:00+01:00,19.42371368408203,19.666410446166992,19.332204818725586,19.666410446166992,12.984579086303711,829590,0.0,0.0
|
||||
2022-11-21 00:00:00+01:00,19.598773956298828,19.606731414794922,19.02187156677246,19.101444244384766,12.611566543579102,918183,0.0,0.0
|
||||
2022-11-21 00:00:00+01:00,19.598773956298828,19.606731414794922,19.02187156677246,19.101444244384766,12.611564636230469,918183,0.0,0.0
|
||||
2022-11-22 00:00:00+01:00,19.137252807617188,19.49930763244629,19.073593139648438,19.395862579345703,12.805953025817871,915438,0.0,0.0
|
||||
2022-11-23 00:00:00+01:00,19.475435256958008,19.51124382019043,19.149187088012695,19.264568328857422,12.719265937805176,867427,0.0,0.0
|
||||
2022-11-24 00:00:00+01:00,19.31231117248535,19.551029205322266,19.31231117248535,19.539094924926758,12.900520324707031,658838,0.0,0.0
|
||||
2022-11-24 00:00:00+01:00,19.31231117248535,19.551029205322266,19.31231117248535,19.539094924926758,12.900519371032715,658838,0.0,0.0
|
||||
2022-11-25 00:00:00+01:00,19.535114288330078,19.574901580810547,19.371990203857422,19.419734954833984,12.8217134475708,444192,0.0,0.0
|
||||
2022-11-28 00:00:00+01:00,19.296396255493164,19.356077194213867,19.085529327392578,19.16908073425293,12.656221389770508,743198,0.0,0.0
|
||||
2022-11-29 00:00:00+01:00,18.830896377563477,18.978105545043945,18.572284698486328,18.72745132446289,12.364638328552246,1801344,0.0,0.0
|
||||
2022-11-30 00:00:00+01:00,18.89853286743164,18.92638397216797,18.405181884765625,18.675729751586914,12.33049201965332,1555300,0.0,0.0
|
||||
2022-11-29 00:00:00+01:00,18.830896377563477,18.978105545043945,18.572284698486328,18.72745132446289,12.364640235900879,1801344,0.0,0.0
|
||||
2022-11-30 00:00:00+01:00,18.89853286743164,18.92638397216797,18.405181884765625,18.675729751586914,12.330490112304688,1555300,0.0,0.0
|
||||
2022-12-01 00:00:00+01:00,18.87466049194336,18.958213806152344,18.56830596923828,18.73938751220703,12.372520446777344,1102744,0.0,0.0
|
||||
2022-12-02 00:00:00+01:00,18.663793563842773,19.013914108276367,18.55636978149414,19.005956649780273,12.5485200881958,783142,0.0,0.0
|
||||
2022-12-05 00:00:00+01:00,18.966169357299805,19.061656951904297,18.73938751220703,18.86272621154785,12.45395278930664,726414,0.0,0.0
|
||||
2022-12-05 00:00:00+01:00,18.966169357299805,19.061656951904297,18.73938751220703,18.86272621154785,12.453953742980957,726414,0.0,0.0
|
||||
2022-12-06 00:00:00+01:00,18.870683670043945,19.073593139648438,18.791109085083008,18.962190628051758,12.519624710083008,752418,0.0,0.0
|
||||
2022-12-07 00:00:00+01:00,18.922405242919922,18.958213806152344,18.572284698486328,18.62002944946289,12.29371452331543,1312303,0.0,0.0
|
||||
2022-12-08 00:00:00+01:00,18.48475456237793,18.759281158447266,18.421096801757812,18.516584396362305,12.22541618347168,1077991,0.0,0.0
|
||||
2022-12-09 00:00:00+01:00,18.56830596923828,18.890575408935547,18.52056312561035,18.83885383605957,12.438192367553711,876148,0.0,0.0
|
||||
2022-12-12 00:00:00+01:00,18.735408782958984,18.763259887695312,18.417118072509766,18.468839645385742,12.193893432617188,1151398,0.0,0.0
|
||||
2022-12-07 00:00:00+01:00,18.922405242919922,18.958213806152344,18.572284698486328,18.62002944946289,12.293715476989746,1312303,0.0,0.0
|
||||
2022-12-08 00:00:00+01:00,18.48475456237793,18.759281158447266,18.421096801757812,18.516584396362305,12.225415229797363,1077991,0.0,0.0
|
||||
2022-12-09 00:00:00+01:00,18.56830596923828,18.890575408935547,18.52056312561035,18.83885383605957,12.438191413879395,876148,0.0,0.0
|
||||
2022-12-12 00:00:00+01:00,18.735408782958984,18.763259887695312,18.417118072509766,18.468839645385742,12.193892478942871,1151398,0.0,0.0
|
||||
2022-12-13 00:00:00+01:00,18.604114532470703,19.065635681152344,18.552391052246094,18.942298889160156,12.506489753723145,1226494,0.0,0.0
|
||||
2022-12-14 00:00:00+01:00,18.858747482299805,19.017892837524414,18.75530242919922,18.8865966796875,12.469714164733887,958418,0.0,0.0
|
||||
2022-12-14 00:00:00+01:00,18.858747482299805,19.017892837524414,18.75530242919922,18.8865966796875,12.469715118408203,958418,0.0,0.0
|
||||
2022-12-15 00:00:00+01:00,18.73938751220703,18.751323699951172,18.369373321533203,18.47281837463379,12.19651985168457,1115743,0.0,0.0
|
||||
2022-12-16 00:00:00+01:00,18.4569034576416,18.627986907958984,18.329587936401367,18.564327239990234,12.256937980651855,1941860,0.0,0.0
|
||||
2022-12-19 00:00:00+01:00,18.58422088623047,18.75530242919922,18.548412322998047,18.627986907958984,12.298968315124512,778150,0.0,0.0
|
||||
2022-12-20 00:00:00+01:00,18.504648208618164,18.7990665435791,18.393245697021484,18.7990665435791,12.411921501159668,935164,0.0,0.0
|
||||
2022-12-21 00:00:00+01:00,18.89853286743164,19.244674682617188,18.8865966796875,19.208866119384766,12.682489395141602,1124419,0.0,0.0
|
||||
2022-12-22 00:00:00+01:00,19.272525787353516,19.38790512084961,18.783153533935547,18.82691764831543,12.43031120300293,1217165,0.0,0.0
|
||||
2022-12-22 00:00:00+01:00,19.272525787353516,19.38790512084961,18.783153533935547,18.82691764831543,12.430309295654297,1217165,0.0,0.0
|
||||
2022-12-23 00:00:00+01:00,18.89853286743164,19.14520835876465,18.81498146057129,19.0338077545166,12.566908836364746,552525,0.0,0.0
|
||||
2022-12-27 00:00:00+01:00,19.177038192749023,19.24069595336914,19.03778648376465,19.04972267150879,12.57741641998291,387951,0.0,0.0
|
||||
2022-12-28 00:00:00+01:00,19.09746551513672,19.177038192749023,18.934341430664062,19.005956649780273,12.5485200881958,517744,0.0,0.0
|
||||
2022-12-29 00:00:00+01:00,19.001977920532227,19.077571868896484,18.8865966796875,19.045743942260742,12.574790000915527,398794,0.0,0.0
|
||||
2022-12-30 00:00:00+01:00,18.946277618408203,19.017892837524414,18.75530242919922,18.791109085083008,12.406667709350586,449339,0.0,0.0
|
||||
2023-01-02 00:00:00+01:00,18.990041732788086,19.383926391601562,18.914447784423828,19.383926391601562,12.79807186126709,671340,0.0,0.0
|
||||
2023-01-03 00:00:00+01:00,19.356077194213867,19.78179168701172,19.344141006469727,19.435649871826172,12.832220077514648,983215,0.0,0.0
|
||||
2022-12-29 00:00:00+01:00,19.001977920532227,19.077571868896484,18.8865966796875,19.045743942260742,12.574789047241211,398794,0.0,0.0
|
||||
2022-12-30 00:00:00+01:00,18.946277618408203,19.017892837524414,18.75530242919922,18.791109085083008,12.406668663024902,449339,0.0,0.0
|
||||
2023-01-02 00:00:00+01:00,18.990041732788086,19.383926391601562,18.914447784423828,19.383926391601562,12.798072814941406,671340,0.0,0.0
|
||||
2023-01-03 00:00:00+01:00,19.356077194213867,19.78179168701172,19.344141006469727,19.435649871826172,12.832221984863281,983215,0.0,0.0
|
||||
2023-01-04 00:00:00+01:00,19.48737144470215,19.982711791992188,19.44758415222168,19.94292640686035,13.167146682739258,1333355,0.0,0.0
|
||||
2023-01-05 00:00:00+01:00,19.932979583740234,20.121965408325195,19.845449447631836,20.002605438232422,13.206550598144531,1261924,0.0,0.0
|
||||
2023-01-06 00:00:00+01:00,20.112018585205078,20.410415649414062,19.95287322998047,20.410415649414062,13.475802421569824,641716,0.0,0.0
|
||||
2023-01-05 00:00:00+01:00,19.932979583740234,20.121965408325195,19.845449447631836,20.002605438232422,13.206549644470215,1261924,0.0,0.0
|
||||
2023-01-06 00:00:00+01:00,20.112018585205078,20.410415649414062,19.95287322998047,20.410415649414062,13.47580337524414,641716,0.0,0.0
|
||||
2023-01-09 00:00:00+01:00,20.410415649414062,20.569562911987305,20.32089614868164,20.440256118774414,13.495504379272461,839910,0.0,0.0
|
||||
2023-01-10 00:00:00+01:00,20.48004150390625,20.48004150390625,19.932979583740234,20.17169761657715,13.318191528320312,1099813,0.0,0.0
|
||||
2023-01-11 00:00:00+01:00,20.241323471069336,20.838119506835938,20.10207176208496,20.599401473999023,13.600577354431152,1479852,0.0,0.0
|
||||
2023-01-12 00:00:00+01:00,20.60934829711914,20.758546829223633,20.470096588134766,20.639188766479492,13.626848220825195,1067892,0.0,0.0
|
||||
2023-01-13 00:00:00+01:00,20.559614181518555,21.01715850830078,20.430309295654297,20.788387298583984,13.725353240966797,1563851,0.0,0.0
|
||||
2023-01-16 00:00:00+01:00,20.589454650878906,20.72870635986328,20.181644439697266,20.70881462097168,14.76673412322998,790612,1.54,0.0
|
||||
2023-01-17 00:00:00+01:00,20.698867797851562,20.997264862060547,20.499935150146484,20.659080505371094,14.731269836425781,917298,0.0,0.0
|
||||
2023-01-10 00:00:00+01:00,20.48004150390625,20.48004150390625,19.932979583740234,20.17169761657715,13.31818962097168,1099813,0.0,0.0
|
||||
2023-01-11 00:00:00+01:00,20.241323471069336,20.838119506835938,20.10207176208496,20.599401473999023,13.600579261779785,1479852,0.0,0.0
|
||||
2023-01-12 00:00:00+01:00,20.60934829711914,20.758546829223633,20.470096588134766,20.639188766479492,13.626847267150879,1067892,0.0,0.0
|
||||
2023-01-13 00:00:00+01:00,20.559614181518555,21.01715850830078,20.430309295654297,20.788387298583984,13.72535514831543,1563851,0.0,0.0
|
||||
2023-01-16 00:00:00+01:00,20.589454650878906,20.72870635986328,20.181644439697266,20.70881462097168,14.766735076904297,790612,1.54,0.0
|
||||
2023-01-17 00:00:00+01:00,20.698867797851562,20.997264862060547,20.499935150146484,20.659080505371094,14.731270790100098,917298,0.0,0.0
|
||||
2023-01-18 00:00:00+01:00,20.649133682250977,20.80828094482422,20.39052391052246,20.688920974731445,14.752549171447754,976454,0.0,0.0
|
||||
2023-01-19 00:00:00+01:00,20.569562911987305,20.57950782775879,20.26121711730957,20.39052391052246,14.539772987365723,888012,0.0,0.0
|
||||
2023-01-20 00:00:00+01:00,20.529775619506836,20.649133682250977,20.340789794921875,20.619295120239258,14.702899932861328,757103,0.0,0.0
|
||||
2023-01-23 00:00:00+01:00,20.678974151611328,20.70881462097168,20.5098819732666,20.57950782775879,14.674530982971191,540245,0.0,0.0
|
||||
2023-01-19 00:00:00+01:00,20.569562911987305,20.57950782775879,20.26121711730957,20.39052391052246,14.539773941040039,888012,0.0,0.0
|
||||
2023-01-20 00:00:00+01:00,20.529775619506836,20.649133682250977,20.340789794921875,20.619295120239258,14.702900886535645,757103,0.0,0.0
|
||||
2023-01-23 00:00:00+01:00,20.678974151611328,20.70881462097168,20.5098819732666,20.57950782775879,14.674530029296875,540245,0.0,0.0
|
||||
2023-01-24 00:00:00+01:00,20.688920974731445,20.72870635986328,20.599401473999023,20.72870635986328,14.780917167663574,497230,0.0,0.0
|
||||
2023-01-25 00:00:00+01:00,20.72870635986328,20.788387298583984,20.539722442626953,20.72870635986328,14.780917167663574,610198,0.0,0.0
|
||||
2023-01-26 00:00:00+01:00,20.82817268371582,21.01715850830078,20.549667358398438,21.01715850830078,14.986603736877441,1177819,0.0,0.0
|
||||
2023-01-27 00:00:00+01:00,21.0271053314209,21.315555572509766,20.937585830688477,21.196197509765625,15.114269256591797,1399061,0.0,0.0
|
||||
2023-01-27 00:00:00+01:00,21.0271053314209,21.315555572509766,20.937585830688477,21.196197509765625,15.11427116394043,1399061,0.0,0.0
|
||||
2023-01-30 00:00:00+01:00,21.106678009033203,21.196197509765625,20.967424392700195,21.096731185913086,15.043343544006348,1048142,0.0,0.0
|
||||
2023-01-31 00:00:00+01:00,21.156410217285156,21.255876541137695,21.007211685180664,21.216089248657227,15.12845516204834,1153987,0.0,0.0
|
||||
2023-02-01 00:00:00+01:00,21.36528968811035,21.633846282958984,21.295663833618164,21.604007720947266,15.405065536499023,1127903,0.0,0.0
|
||||
2023-02-02 00:00:00+01:00,21.604007720947266,21.922298431396484,21.514488220214844,21.792993545532227,15.539825439453125,1405008,0.0,0.0
|
||||
2023-01-31 00:00:00+01:00,21.156410217285156,21.255876541137695,21.007211685180664,21.216089248657227,15.128454208374023,1153987,0.0,0.0
|
||||
2023-02-01 00:00:00+01:00,21.36528968811035,21.633846282958984,21.295663833618164,21.604007720947266,15.40506649017334,1127903,0.0,0.0
|
||||
2023-02-02 00:00:00+01:00,21.604007720947266,21.922298431396484,21.514488220214844,21.792993545532227,15.539824485778809,1405008,0.0,0.0
|
||||
2023-02-03 00:00:00+01:00,21.733312606811523,21.981977462768555,21.6437931060791,21.981977462768555,15.674581527709961,1224408,0.0,0.0
|
||||
2023-02-06 00:00:00+01:00,21.713420867919922,21.862619400024414,21.514488220214844,21.6437931060791,15.433436393737793,1078283,0.0,0.0
|
||||
2023-02-06 00:00:00+01:00,21.713420867919922,21.862619400024414,21.514488220214844,21.6437931060791,15.43343448638916,1078283,0.0,0.0
|
||||
2023-02-07 00:00:00+01:00,21.812885284423828,21.912351608276367,21.6437931060791,21.65374183654785,15.440529823303223,983431,0.0,0.0
|
||||
2023-02-08 00:00:00+01:00,21.68358039855957,22.051603317260742,21.68358039855957,21.832778930664062,15.568194389343262,983919,0.0,0.0
|
||||
2023-02-09 00:00:00+01:00,21.862619400024414,22.03171157836914,21.74325942993164,21.892459869384766,15.610751152038574,921355,0.0,0.0
|
||||
2023-02-10 00:00:00+01:00,21.773099899291992,21.892459869384766,21.39512825012207,21.58411407470703,15.39087963104248,931770,0.0,0.0
|
||||
2023-02-08 00:00:00+01:00,21.68358039855957,22.051603317260742,21.68358039855957,21.832778930664062,15.568195343017578,983919,0.0,0.0
|
||||
2023-02-09 00:00:00+01:00,21.862619400024414,22.03171157836914,21.74325942993164,21.892459869384766,15.610750198364258,921355,0.0,0.0
|
||||
2023-02-10 00:00:00+01:00,21.773099899291992,21.892459869384766,21.39512825012207,21.58411407470703,15.390880584716797,931770,0.0,0.0
|
||||
2023-02-13 00:00:00+01:00,21.613954544067383,21.68358039855957,21.484647750854492,21.534381866455078,15.355417251586914,653816,0.0,0.0
|
||||
2023-02-14 00:00:00+01:00,21.564220428466797,21.6437931060791,21.415021896362305,21.484647750854492,15.319953918457031,566610,0.0,0.0
|
||||
2023-02-14 00:00:00+01:00,21.564220428466797,21.6437931060791,21.415021896362305,21.484647750854492,15.319952964782715,566610,0.0,0.0
|
||||
2023-02-15 00:00:00+01:00,21.385181427001953,21.72336769104004,21.345396041870117,21.703474044799805,15.475992202758789,971141,0.0,0.0
|
||||
2023-02-16 00:00:00+01:00,21.733312606811523,21.852672576904297,21.58411407470703,21.753206253051758,15.511453628540039,860626,0.0,0.0
|
||||
2023-02-17 00:00:00+01:00,21.604007720947266,21.822832107543945,21.484647750854492,21.763153076171875,15.518547058105469,558814,0.0,0.0
|
||||
2023-02-20 00:00:00+01:00,21.78304672241211,22.340055465698242,21.78304672241211,22.340055465698242,15.929915428161621,997833,0.0,0.0
|
||||
2023-02-21 00:00:00+01:00,22.300268173217773,22.4693603515625,22.111284255981445,22.19085693359375,15.823528289794922,907456,0.0,0.0
|
||||
2023-02-22 00:00:00+01:00,21.59406089782715,22.011817932128906,21.484647750854492,21.97203254699707,15.667490005493164,1114536,0.0,0.0
|
||||
2023-02-23 00:00:00+01:00,22.06155014038086,22.06155014038086,21.05694580078125,21.126571655273438,15.064621925354004,2085708,0.0,0.0
|
||||
2023-02-24 00:00:00+01:00,21.126571655273438,21.763153076171875,20.967424392700195,21.07683753967285,15.029157638549805,1493284,0.0,0.0
|
||||
2023-02-27 00:00:00+01:00,21.285715103149414,21.604007720947266,21.206144332885742,21.454809188842773,15.298677444458008,744495,0.0,0.0
|
||||
2023-02-16 00:00:00+01:00,21.733312606811523,21.852672576904297,21.58411407470703,21.753206253051758,15.511454582214355,860626,0.0,0.0
|
||||
2023-02-17 00:00:00+01:00,21.604007720947266,21.822832107543945,21.484647750854492,21.763153076171875,15.518546104431152,558814,0.0,0.0
|
||||
2023-02-20 00:00:00+01:00,21.78304672241211,22.340055465698242,21.78304672241211,22.340055465698242,15.929916381835938,997833,0.0,0.0
|
||||
2023-02-21 00:00:00+01:00,22.300268173217773,22.4693603515625,22.111284255981445,22.19085693359375,15.823527336120605,907456,0.0,0.0
|
||||
2023-02-22 00:00:00+01:00,21.59406089782715,22.011817932128906,21.484647750854492,21.97203254699707,15.66749095916748,1114536,0.0,0.0
|
||||
2023-02-23 00:00:00+01:00,22.06155014038086,22.06155014038086,21.05694580078125,21.126571655273438,15.064623832702637,2085708,0.0,0.0
|
||||
2023-02-24 00:00:00+01:00,21.126571655273438,21.763153076171875,20.967424392700195,21.07683753967285,15.029159545898438,1493284,0.0,0.0
|
||||
2023-02-27 00:00:00+01:00,21.285715103149414,21.604007720947266,21.206144332885742,21.454809188842773,15.298676490783691,744495,0.0,0.0
|
||||
2023-02-28 00:00:00+01:00,21.325502395629883,21.72336769104004,21.265823364257812,21.534381866455078,15.355417251586914,1797489,0.0,0.0
|
||||
2023-03-01 00:00:00+01:00,21.613954544067383,21.663686752319336,21.30561065673828,21.37523651123047,15.241936683654785,1095414,0.0,0.0
|
||||
2023-03-02 00:00:00+01:00,21.295663833618164,21.43491554260254,21.096731185913086,21.355342864990234,15.227752685546875,729153,0.0,0.0
|
||||
2023-03-01 00:00:00+01:00,21.613954544067383,21.663686752319336,21.30561065673828,21.37523651123047,15.241935729980469,1095414,0.0,0.0
|
||||
2023-03-02 00:00:00+01:00,21.295663833618164,21.43491554260254,21.096731185913086,21.355342864990234,15.227750778198242,729153,0.0,0.0
|
||||
2023-03-03 00:00:00+01:00,21.454809188842773,21.673633575439453,21.444862365722656,21.59406089782715,15.39797306060791,731340,0.0,0.0
|
||||
2023-03-06 00:00:00+01:00,21.59406089782715,21.633846282958984,21.136518478393555,21.136518478393555,15.07171630859375,1177638,0.0,0.0
|
||||
2023-03-07 00:00:00+01:00,21.14646339416504,21.255876541137695,21.0469970703125,21.126571655273438,15.064621925354004,894823,0.0,0.0
|
||||
2023-03-08 00:00:00+01:00,21.0271053314209,21.216089248657227,20.7386531829834,21.216089248657227,15.12845516204834,1145240,0.0,0.0
|
||||
2023-03-09 00:00:00+01:00,21.07683753967285,21.196197509765625,21.01715850830078,21.066890716552734,15.022065162658691,611676,0.0,0.0
|
||||
2023-03-10 00:00:00+01:00,20.76849365234375,21.007211685180664,20.589454650878906,20.897798538208008,14.90149211883545,1111284,0.0,0.0
|
||||
2023-03-13 00:00:00+01:00,20.688920974731445,20.778440475463867,20.07223129272461,20.221431732177734,14.41919994354248,1243550,0.0,0.0
|
||||
2023-03-14 00:00:00+01:00,20.181644439697266,20.470096588134766,19.903139114379883,20.400468826293945,14.546863555908203,1301756,0.0,0.0
|
||||
2023-03-06 00:00:00+01:00,21.59406089782715,21.633846282958984,21.136518478393555,21.136518478393555,15.071715354919434,1177638,0.0,0.0
|
||||
2023-03-07 00:00:00+01:00,21.14646339416504,21.255876541137695,21.0469970703125,21.126571655273438,15.064623832702637,894823,0.0,0.0
|
||||
2023-03-08 00:00:00+01:00,21.0271053314209,21.216089248657227,20.7386531829834,21.216089248657227,15.128454208374023,1145240,0.0,0.0
|
||||
2023-03-09 00:00:00+01:00,21.07683753967285,21.196197509765625,21.01715850830078,21.066890716552734,15.022066116333008,611676,0.0,0.0
|
||||
2023-03-10 00:00:00+01:00,20.76849365234375,21.007211685180664,20.589454650878906,20.897798538208008,14.901491165161133,1111284,0.0,0.0
|
||||
2023-03-13 00:00:00+01:00,20.688920974731445,20.778440475463867,20.07223129272461,20.221431732177734,14.419198036193848,1243550,0.0,0.0
|
||||
2023-03-14 00:00:00+01:00,20.181644439697266,20.470096588134766,19.903139114379883,20.400468826293945,14.546865463256836,1301756,0.0,0.0
|
||||
2023-03-15 00:00:00+01:00,20.430309295654297,20.440256118774414,19.093486785888672,19.121337890625,13.634759902954102,2538134,0.0,0.0
|
||||
2023-03-16 00:00:00+01:00,19.578880310058594,19.68232536315918,18.914447784423828,19.344141006469727,13.793633460998535,1772646,0.0,0.0
|
||||
2023-03-17 00:00:00+01:00,19.395862579345703,19.68232536315918,18.87466049194336,19.20488739013672,13.694336891174316,2459464,0.0,0.0
|
||||
2023-03-20 00:00:00+01:00,19.196931838989258,19.531137466430664,18.723472595214844,19.467479705810547,13.881582260131836,903163,0.0,0.0
|
||||
2023-03-21 00:00:00+01:00,19.73006820678711,20.17169761657715,19.646516799926758,19.972766876220703,14.2418851852417,1270092,0.0,0.0
|
||||
2023-03-22 00:00:00+01:00,19.932979583740234,20.340789794921875,19.869321823120117,20.032445907592773,14.284440040588379,1100120,0.0,0.0
|
||||
2023-03-20 00:00:00+01:00,19.196931838989258,19.531137466430664,18.723472595214844,19.467479705810547,13.881580352783203,903163,0.0,0.0
|
||||
2023-03-21 00:00:00+01:00,19.73006820678711,20.17169761657715,19.646516799926758,19.972766876220703,14.241883277893066,1270092,0.0,0.0
|
||||
2023-03-22 00:00:00+01:00,19.932979583740234,20.340789794921875,19.869321823120117,20.032445907592773,14.284439086914062,1100120,0.0,0.0
|
||||
2023-03-23 00:00:00+01:00,19.962818145751953,19.962818145751953,19.6584529876709,19.845449447631836,14.151098251342773,1594495,0.0,0.0
|
||||
2023-03-24 00:00:00+01:00,19.74200439453125,19.761898040771484,19.165102005004883,19.726089477539062,14.065986633300781,2008460,0.0,0.0
|
||||
2023-03-27 00:00:00+02:00,20.07223129272461,20.301002502441406,19.833513259887695,20.221431732177734,14.41919994354248,1382281,0.0,0.0
|
||||
2023-03-24 00:00:00+01:00,19.74200439453125,19.761898040771484,19.165102005004883,19.726089477539062,14.065988540649414,2008460,0.0,0.0
|
||||
2023-03-27 00:00:00+02:00,20.07223129272461,20.301002502441406,19.833513259887695,20.221431732177734,14.419198036193848,1382281,0.0,0.0
|
||||
2023-03-28 00:00:00+02:00,20.42036247253418,20.559614181518555,20.13191032409668,20.470096588134766,14.596513748168945,1220512,0.0,0.0
|
||||
2023-03-29 00:00:00+02:00,20.559614181518555,20.639188766479492,20.370630264282227,20.539722442626953,14.646160125732422,791707,0.0,0.0
|
||||
2023-03-30 00:00:00+02:00,20.659080505371094,21.01715850830078,20.629241943359375,20.82817268371582,14.851845741271973,968974,0.0,0.0
|
||||
2023-03-31 00:00:00+02:00,20.82817268371582,21.01715850830078,20.748600006103516,20.95747947692871,14.944048881530762,1172265,0.0,0.0
|
||||
2023-03-29 00:00:00+02:00,20.559614181518555,20.639188766479492,20.370630264282227,20.539722442626953,14.646161079406738,791707,0.0,0.0
|
||||
2023-03-30 00:00:00+02:00,20.659080505371094,21.01715850830078,20.629241943359375,20.82817268371582,14.851842880249023,968974,0.0,0.0
|
||||
2023-03-31 00:00:00+02:00,20.82817268371582,21.01715850830078,20.748600006103516,20.95747947692871,14.944049835205078,1172265,0.0,0.0
|
||||
2023-04-03 00:00:00+02:00,20.967424392700195,21.066890716552734,20.688920974731445,20.937585830688477,14.929863929748535,1141103,0.0,0.0
|
||||
2023-04-04 00:00:00+02:00,21.08678436279297,21.186250686645508,20.858013153076172,20.858013153076172,14.873123168945312,728163,0.0,0.0
|
||||
2023-04-05 00:00:00+02:00,20.897798538208008,20.947532653808594,20.46014976501465,20.499935150146484,14.617790222167969,1310588,0.0,0.0
|
||||
2023-04-04 00:00:00+02:00,21.08678436279297,21.186250686645508,20.858013153076172,20.858013153076172,14.873122215270996,728163,0.0,0.0
|
||||
2023-04-05 00:00:00+02:00,20.897798538208008,20.947532653808594,20.46014976501465,20.499935150146484,14.617789268493652,1310588,0.0,0.0
|
||||
2023-04-06 00:00:00+02:00,20.649133682250977,20.758546829223633,20.470096588134766,20.589454650878906,14.681623458862305,957116,0.0,0.0
|
||||
2023-04-11 00:00:00+02:00,20.887853622436523,21.216089248657227,20.867958068847656,21.196197509765625,15.114269256591797,1155390,0.0,0.0
|
||||
2023-04-11 00:00:00+02:00,20.887853622436523,21.216089248657227,20.867958068847656,21.196197509765625,15.11427116394043,1155390,0.0,0.0
|
||||
2023-04-12 00:00:00+02:00,21.156410217285156,21.285715103149414,20.907745361328125,21.226036071777344,15.135547637939453,907456,0.0,0.0
|
||||
2023-04-13 00:00:00+02:00,21.186250686645508,21.385181427001953,21.14646339416504,21.255876541137695,15.156824111938477,1096832,0.0,0.0
|
||||
2023-04-14 00:00:00+02:00,21.315555572509766,21.514488220214844,21.216089248657227,21.484647750854492,15.319953918457031,1071929,0.0,0.0
|
||||
2023-04-17 00:00:00+02:00,21.882511138916016,22.07149887084961,21.58411407470703,21.892459869384766,15.610751152038574,1508490,0.0,0.0
|
||||
2023-04-18 00:00:00+02:00,21.862619400024414,22.041658401489258,21.484647750854492,21.613954544067383,15.412158012390137,1127797,0.0,0.0
|
||||
2023-04-19 00:00:00+02:00,21.633846282958984,21.65374183654785,21.37523651123047,21.633846282958984,15.426342010498047,908843,0.0,0.0
|
||||
2023-04-20 00:00:00+02:00,21.68358039855957,21.68358039855957,21.484647750854492,21.6239013671875,15.419249534606934,810257,0.0,0.0
|
||||
2023-04-21 00:00:00+02:00,21.58411407470703,21.58411407470703,21.255876541137695,21.424968719482422,15.277398109436035,823291,0.0,0.0
|
||||
2023-04-24 00:00:00+02:00,21.385181427001953,21.703474044799805,21.295663833618164,21.633846282958984,15.426342010498047,882673,0.0,0.0
|
||||
2023-04-14 00:00:00+02:00,21.315555572509766,21.514488220214844,21.216089248657227,21.484647750854492,15.319952964782715,1071929,0.0,0.0
|
||||
2023-04-17 00:00:00+02:00,21.882511138916016,22.07149887084961,21.58411407470703,21.892459869384766,15.610750198364258,1508490,0.0,0.0
|
||||
2023-04-18 00:00:00+02:00,21.862619400024414,22.041658401489258,21.484647750854492,21.613954544067383,15.41215991973877,1127797,0.0,0.0
|
||||
2023-04-19 00:00:00+02:00,21.633846282958984,21.65374183654785,21.37523651123047,21.633846282958984,15.426342964172363,908843,0.0,0.0
|
||||
2023-04-20 00:00:00+02:00,21.68358039855957,21.68358039855957,21.484647750854492,21.6239013671875,15.41925048828125,810257,0.0,0.0
|
||||
2023-04-21 00:00:00+02:00,21.58411407470703,21.58411407470703,21.255876541137695,21.424968719482422,15.277397155761719,823291,0.0,0.0
|
||||
2023-04-24 00:00:00+02:00,21.385181427001953,21.703474044799805,21.295663833618164,21.633846282958984,15.426342964172363,882673,0.0,0.0
|
||||
2023-04-25 00:00:00+02:00,21.59406089782715,21.74325942993164,21.385181427001953,21.663686752319336,15.447622299194336,1318878,0.0,0.0
|
||||
2023-04-26 00:00:00+02:00,21.464754104614258,21.613954544067383,21.096731185913086,21.613954544067383,15.412158012390137,1135730,0.0,0.0
|
||||
2023-04-27 00:00:00+02:00,21.504541397094727,21.504541397094727,20.897798538208008,21.11662483215332,15.057530403137207,1167454,0.0,0.0
|
||||
2023-04-26 00:00:00+02:00,21.464754104614258,21.613954544067383,21.096731185913086,21.613954544067383,15.41215991973877,1135730,0.0,0.0
|
||||
2023-04-27 00:00:00+02:00,21.504541397094727,21.504541397094727,20.897798538208008,21.11662483215332,15.05752944946289,1167454,0.0,0.0
|
||||
2023-04-28 00:00:00+02:00,21.136518478393555,21.65374183654785,21.007211685180664,21.65374183654785,15.440529823303223,1480858,0.0,0.0
|
||||
2023-05-02 00:00:00+02:00,21.68358039855957,21.713420867919922,21.126571655273438,21.14646339416504,15.07880687713623,1146537,0.0,0.0
|
||||
2023-05-03 00:00:00+02:00,21.285715103149414,21.504541397094727,21.186250686645508,21.424968719482422,15.277398109436035,1054129,0.0,0.0
|
||||
2023-05-04 00:00:00+02:00,20.987319946289062,21.6437931060791,20.340789794921875,20.66902732849121,14.738364219665527,1741640,0.0,0.0
|
||||
2023-05-05 00:00:00+02:00,21.01715850830078,21.59406089782715,20.80828094482422,21.444862365722656,15.291584014892578,1420028,0.0,0.0
|
||||
2023-05-02 00:00:00+02:00,21.68358039855957,21.713420867919922,21.126571655273438,21.14646339416504,15.078805923461914,1146537,0.0,0.0
|
||||
2023-05-03 00:00:00+02:00,21.285715103149414,21.504541397094727,21.186250686645508,21.424968719482422,15.277397155761719,1054129,0.0,0.0
|
||||
2023-05-04 00:00:00+02:00,20.987319946289062,21.6437931060791,20.340789794921875,20.66902732849121,14.738363265991211,1741640,0.0,0.0
|
||||
2023-05-05 00:00:00+02:00,21.01715850830078,21.59406089782715,20.80828094482422,21.444862365722656,15.291584968566895,1420028,0.0,0.0
|
||||
2023-05-08 00:00:00+02:00,21.484647750854492,21.514488220214844,21.245929718017578,21.514488220214844,15.341232299804688,674713,0.0,0.0
|
||||
2023-05-09 00:00:00+02:00,21.663686752319336,21.663686752319336,21.17630386352539,21.444862365722656,15.291584014892578,853724,0.0,0.0
|
||||
2023-05-09 00:00:00+02:00,21.663686752319336,21.663686752319336,21.17630386352539,21.444862365722656,15.291584968566895,853724,0.0,0.0
|
||||
2023-05-10 00:00:00+02:00,21.49459457397461,21.663686752319336,21.156410217285156,21.405075073242188,15.263213157653809,826931,0.0,0.0
|
||||
2023-05-11 00:00:00+02:00,21.464754104614258,21.633846282958984,21.106678009033203,21.37523651123047,15.241936683654785,1023400,0.0,0.0
|
||||
2023-05-11 00:00:00+02:00,21.464754104614258,21.633846282958984,21.106678009033203,21.37523651123047,15.241935729980469,1023400,0.0,0.0
|
||||
2023-05-12 00:00:00+02:00,21.37523651123047,21.43491554260254,21.206144332885742,21.37523651123047,17.269859313964844,847053,2.51,0.0
|
||||
2023-05-15 00:00:00+02:00,21.0469970703125,21.096731185913086,20.788387298583984,20.858013153076172,19.094114303588867,1023546,2.51,0.0
|
||||
2023-05-16 00:00:00+02:00,20.7386531829834,20.76849365234375,20.281110763549805,20.310949325561523,18.593313217163086,1280267,0.0,0.0
|
||||
2023-05-17 00:00:00+02:00,20.201536178588867,20.57950782775879,20.092124938964844,20.549667358398438,18.811845779418945,1106539,0.0,0.0
|
||||
2023-05-18 00:00:00+02:00,20.72870635986328,20.818225860595703,20.539722442626953,20.678974151611328,18.930217742919922,704356,0.0,0.0
|
||||
2023-05-19 00:00:00+02:00,20.818225860595703,20.897798538208008,20.66902732849121,20.72870635986328,18.975744247436523,1030030,0.0,0.0
|
||||
2023-05-22 00:00:00+02:00,20.66902732849121,20.788387298583984,20.57950782775879,20.76849365234375,19.012165069580078,853879,0.0,0.0
|
||||
2023-05-23 00:00:00+02:00,20.748600006103516,20.80828094482422,20.66902732849121,20.79833221435547,19.03948211669922,779729,0.0,0.0
|
||||
2023-05-24 00:00:00+02:00,20.60934829711914,20.60934829711914,20.291057586669922,20.489988327026367,18.757211685180664,846847,0.0,0.0
|
||||
2023-05-18 00:00:00+02:00,20.72870635986328,20.818225860595703,20.539722442626953,20.678974151611328,18.93021583557129,704356,0.0,0.0
|
||||
2023-05-19 00:00:00+02:00,20.818225860595703,20.897798538208008,20.66902732849121,20.72870635986328,18.97574234008789,1030030,0.0,0.0
|
||||
2023-05-22 00:00:00+02:00,20.66902732849121,20.788387298583984,20.57950782775879,20.76849365234375,19.01216697692871,853879,0.0,0.0
|
||||
2023-05-23 00:00:00+02:00,20.748600006103516,20.80828094482422,20.66902732849121,20.79833221435547,19.039480209350586,779729,0.0,0.0
|
||||
2023-05-24 00:00:00+02:00,20.60934829711914,20.60934829711914,20.291057586669922,20.489988327026367,18.757213592529297,846847,0.0,0.0
|
||||
2023-05-25 00:00:00+02:00,20.51982879638672,20.51982879638672,19.962818145751953,20.01255226135254,18.320152282714844,1017197,0.0,0.0
|
||||
2023-05-26 00:00:00+02:00,20.141857147216797,20.26121711730957,19.885236740112305,20.191591262817383,18.48404884338379,1058894,0.0,0.0
|
||||
2023-05-29 00:00:00+02:00,20.301002502441406,20.340789794921875,20.181644439697266,20.26121711730957,18.547786712646484,295090,0.0,0.0
|
||||
2023-05-30 00:00:00+02:00,20.301002502441406,20.340789794921875,20.052337646484375,20.092124938964844,18.392993927001953,641576,0.0,0.0
|
||||
2023-05-31 00:00:00+02:00,19.77781105041504,19.77781105041504,19.184995651245117,19.427692413330078,17.784751892089844,3164263,0.0,0.0
|
||||
2023-06-01 00:00:00+02:00,19.614688873291016,19.698240280151367,19.475435256958008,19.68232536315918,18.017850875854492,876148,0.0,0.0
|
||||
2023-06-02 00:00:00+02:00,19.857385635375977,20.499935150146484,19.8255558013916,20.440256118774414,18.711685180664062,1069712,0.0,0.0
|
||||
2023-06-01 00:00:00+02:00,19.614688873291016,19.698240280151367,19.475435256958008,19.68232536315918,18.017852783203125,876148,0.0,0.0
|
||||
2023-06-02 00:00:00+02:00,19.857385635375977,20.499935150146484,19.8255558013916,20.440256118774414,18.711687088012695,1069712,0.0,0.0
|
||||
2023-06-05 00:00:00+02:00,20.529775619506836,20.589454650878906,20.39052391052246,20.499935150146484,18.766319274902344,850280,0.0,0.0
|
||||
2023-06-06 00:00:00+02:00,20.489988327026367,20.66902732849121,20.38057518005371,20.66902732849121,18.921110153198242,646291,0.0,0.0
|
||||
2023-06-07 00:00:00+02:00,20.678974151611328,20.92763900756836,20.569562911987305,20.92763900756836,19.157852172851562,885388,0.0,0.0
|
||||
2023-06-07 00:00:00+02:00,20.678974151611328,20.92763900756836,20.569562911987305,20.92763900756836,19.157854080200195,885388,0.0,0.0
|
||||
2023-06-08 00:00:00+02:00,20.877906799316406,21.514488220214844,20.877906799316406,21.186250686645508,19.394594192504883,1247924,0.0,0.0
|
||||
2023-06-09 00:00:00+02:00,21.126571655273438,21.17630386352539,20.46014976501465,20.818225860595703,19.05769157409668,1294412,0.0,0.0
|
||||
2023-06-09 00:00:00+02:00,21.126571655273438,21.17630386352539,20.46014976501465,20.818225860595703,19.057693481445312,1294412,0.0,0.0
|
||||
2023-06-12 00:00:00+02:00,20.887853622436523,21.08678436279297,20.80828094482422,21.05694580078125,19.27622413635254,932962,0.0,0.0
|
||||
2023-06-13 00:00:00+02:00,21.166357040405273,21.454809188842773,20.907745361328125,21.424968719482422,19.61312484741211,905912,0.0,0.0
|
||||
2023-06-14 00:00:00+02:00,21.862619400024414,21.882511138916016,21.424968719482422,21.514488220214844,19.6950740814209,1696595,0.0,0.0
|
||||
2023-06-15 00:00:00+02:00,21.474702835083008,21.474702835083008,21.01715850830078,21.355342864990234,19.549386978149414,932700,0.0,0.0
|
||||
2023-06-16 00:00:00+02:00,21.444862365722656,21.52443504333496,20.04239273071289,20.569562911987305,18.83005714416504,3430067,0.0,0.0
|
||||
2023-06-19 00:00:00+02:00,20.291057586669922,20.291057586669922,19.932979583740234,19.982711791992188,18.292835235595703,1208865,0.0,0.0
|
||||
2023-06-19 00:00:00+02:00,20.291057586669922,20.291057586669922,19.932979583740234,19.982711791992188,18.29283332824707,1208865,0.0,0.0
|
||||
2023-06-20 00:00:00+02:00,19.495328903198242,20.121965408325195,19.208866119384766,19.821577072143555,18.145326614379883,2053697,0.0,0.0
|
||||
2023-06-21 00:00:00+02:00,19.845449447631836,19.923032760620117,19.662431716918945,19.923032760620117,18.238203048706055,644074,0.0,0.0
|
||||
2023-06-22 00:00:00+02:00,19.749961853027344,20.022499084472656,19.68232536315918,19.797706604003906,18.12347412109375,667821,0.0,0.0
|
||||
2023-06-23 00:00:00+02:00,19.65447425842285,19.805662155151367,19.539094924926758,19.686304092407227,18.021493911743164,893260,0.0,0.0
|
||||
2023-06-26 00:00:00+02:00,19.757919311523438,20.032445907592773,19.65447425842285,19.982711791992188,18.292835235595703,793819,0.0,0.0
|
||||
2023-06-21 00:00:00+02:00,19.845449447631836,19.923032760620117,19.662431716918945,19.923032760620117,18.238201141357422,644074,0.0,0.0
|
||||
2023-06-22 00:00:00+02:00,19.749961853027344,20.022499084472656,19.68232536315918,19.797706604003906,18.123476028442383,667821,0.0,0.0
|
||||
2023-06-23 00:00:00+02:00,19.65447425842285,19.805662155151367,19.539094924926758,19.686304092407227,18.02149200439453,893260,0.0,0.0
|
||||
2023-06-26 00:00:00+02:00,19.757919311523438,20.032445907592773,19.65447425842285,19.982711791992188,18.29283332824707,793819,0.0,0.0
|
||||
2023-06-27 00:00:00+02:00,20.092124938964844,20.211484909057617,19.74200439453125,19.95287322998047,18.265520095825195,871227,0.0,0.0
|
||||
2023-06-28 00:00:00+02:00,20.112018585205078,20.151803970336914,19.865341186523438,19.95287322998047,18.265520095825195,911547,0.0,0.0
|
||||
2023-06-29 00:00:00+02:00,20.01255226135254,20.181644439697266,19.903139114379883,20.092124938964844,18.392993927001953,1053234,0.0,0.0
|
||||
2023-06-30 00:00:00+02:00,20.092124938964844,20.46014976501465,20.092124938964844,20.350736618041992,18.629737854003906,934560,0.0,0.0
|
||||
2023-06-30 00:00:00+02:00,20.092124938964844,20.46014976501465,20.092124938964844,20.350736618041992,18.629735946655273,934560,0.0,0.0
|
||||
2023-07-03 00:00:00+02:00,20.301002502441406,20.499935150146484,20.181644439697266,20.26121711730957,18.547786712646484,652308,0.0,0.0
|
||||
2023-07-04 00:00:00+02:00,20.241323471069336,20.241323471069336,20.032445907592773,20.181644439697266,18.474945068359375,483753,0.0,0.0
|
||||
2023-07-05 00:00:00+02:00,20.07223129272461,20.201536178588867,20.002605438232422,20.092124938964844,18.392993927001953,692829,0.0,0.0
|
||||
2023-07-06 00:00:00+02:00,19.903139114379883,20.002605438232422,19.634580612182617,19.74200439453125,18.07248306274414,1098682,0.0,0.0
|
||||
2023-07-07 00:00:00+02:00,19.7181339263916,20.350736618041992,19.7181339263916,20.350736618041992,18.629737854003906,909321,0.0,0.0
|
||||
2023-07-07 00:00:00+02:00,19.7181339263916,20.350736618041992,19.7181339263916,20.350736618041992,18.629735946655273,909321,0.0,0.0
|
||||
2023-07-10 00:00:00+02:00,20.221431732177734,20.48004150390625,20.201536178588867,20.241323471069336,18.52957534790039,599989,0.0,0.0
|
||||
2023-07-11 00:00:00+02:00,20.291057586669922,20.60934829711914,20.211484909057617,20.51982879638672,18.784528732299805,514723,0.0,0.0
|
||||
2023-07-12 00:00:00+02:00,20.569562911987305,21.126571655273438,20.529775619506836,21.066890716552734,19.285327911376953,903369,0.0,0.0
|
||||
2023-07-13 00:00:00+02:00,20.967424392700195,21.226036071777344,20.92763900756836,20.967424392700195,19.194272994995117,830319,0.0,0.0
|
||||
2023-07-14 00:00:00+02:00,20.877906799316406,20.897798538208008,20.301002502441406,20.301002502441406,18.584209442138672,959780,0.0,0.0
|
||||
2023-07-17 00:00:00+02:00,20.191591262817383,20.330842971801758,20.151803970336914,20.201536178588867,18.493154525756836,678639,0.0,0.0
|
||||
2023-07-14 00:00:00+02:00,20.877906799316406,20.897798538208008,20.301002502441406,20.301002502441406,18.58420753479004,959780,0.0,0.0
|
||||
2023-07-17 00:00:00+02:00,20.191591262817383,20.330842971801758,20.151803970336914,20.201536178588867,18.493152618408203,678639,0.0,0.0
|
||||
2023-07-18 00:00:00+02:00,20.211484909057617,20.410415649414062,20.112018585205078,20.410415649414062,18.684368133544922,696082,0.0,0.0
|
||||
2023-07-19 00:00:00+02:00,20.340789794921875,20.430309295654297,20.04239273071289,20.310949325561523,18.593313217163086,1027451,0.0,0.0
|
||||
2023-07-20 00:00:00+02:00,20.330842971801758,20.589454650878906,20.330842971801758,20.589454650878906,18.8482666015625,771530,0.0,0.0
|
||||
@@ -402,123 +402,123 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
|
||||
2023-07-25 00:00:00+02:00,20.80828094482422,21.156410217285156,20.7386531829834,21.14646339416504,19.358171463012695,815268,0.0,0.0
|
||||
2023-07-26 00:00:00+02:00,21.066890716552734,21.206144332885742,20.867958068847656,20.967424392700195,19.194272994995117,501060,0.0,0.0
|
||||
2023-07-27 00:00:00+02:00,21.01715850830078,21.43491554260254,20.967424392700195,21.39512825012207,19.58580780029297,1024169,0.0,0.0
|
||||
2023-07-28 00:00:00+02:00,21.30561065673828,21.802940368652344,21.255876541137695,21.802940368652344,19.95913314819336,1075428,0.0,0.0
|
||||
2023-07-28 00:00:00+02:00,21.30561065673828,21.802940368652344,21.255876541137695,21.802940368652344,19.959131240844727,1075428,0.0,0.0
|
||||
2023-07-31 00:00:00+02:00,21.802940368652344,21.912351608276367,21.663686752319336,21.703474044799805,19.868078231811523,1096731,0.0,0.0
|
||||
2023-08-01 00:00:00+02:00,21.59406089782715,21.604007720947266,21.424968719482422,21.424968719482422,19.61312484741211,660286,0.0,0.0
|
||||
2023-08-02 00:00:00+02:00,21.186250686645508,21.58411407470703,21.08678436279297,21.454809188842773,19.64044189453125,858203,0.0,0.0
|
||||
2023-08-03 00:00:00+02:00,21.673633575439453,21.78304672241211,20.01255226135254,20.499935150146484,18.766319274902344,1721865,0.0,0.0
|
||||
2023-08-04 00:00:00+02:00,20.66902732849121,20.718759536743164,20.39052391052246,20.659080505371094,18.912004470825195,610022,0.0,0.0
|
||||
2023-08-04 00:00:00+02:00,20.66902732849121,20.718759536743164,20.39052391052246,20.659080505371094,18.912006378173828,610022,0.0,0.0
|
||||
2023-08-07 00:00:00+02:00,20.589454650878906,20.80828094482422,20.45020294189453,20.80828094482422,19.048587799072266,484065,0.0,0.0
|
||||
2023-08-08 00:00:00+02:00,20.688920974731445,20.818225860595703,20.589454650878906,20.678974151611328,18.930217742919922,420797,0.0,0.0
|
||||
2023-08-08 00:00:00+02:00,20.688920974731445,20.818225860595703,20.589454650878906,20.678974151611328,18.93021583557129,420797,0.0,0.0
|
||||
2023-08-09 00:00:00+02:00,20.858013153076172,21.037052154541016,20.76849365234375,20.858013153076172,19.094114303588867,550545,0.0,0.0
|
||||
2023-08-10 00:00:00+02:00,20.977371215820312,21.126571655273438,20.858013153076172,20.997264862060547,19.221590042114258,468059,0.0,0.0
|
||||
2023-08-11 00:00:00+02:00,20.877906799316406,21.0271053314209,20.748600006103516,20.758546829223633,19.00305938720703,462374,0.0,0.0
|
||||
2023-08-11 00:00:00+02:00,20.877906799316406,21.0271053314209,20.748600006103516,20.758546829223633,19.003061294555664,462374,0.0,0.0
|
||||
2023-08-14 00:00:00+02:00,20.7386531829834,20.848066329956055,20.66902732849121,20.7386531829834,18.984848022460938,668188,0.0,0.0
|
||||
2023-08-15 00:00:00+02:00,20.788387298583984,20.818225860595703,20.430309295654297,20.57950782775879,18.839162826538086,432414,0.0,0.0
|
||||
2023-08-16 00:00:00+02:00,20.539722442626953,20.76849365234375,20.539722442626953,20.70881462097168,18.95753288269043,544437,0.0,0.0
|
||||
2023-08-15 00:00:00+02:00,20.788387298583984,20.818225860595703,20.430309295654297,20.57950782775879,18.839160919189453,432414,0.0,0.0
|
||||
2023-08-16 00:00:00+02:00,20.539722442626953,20.76849365234375,20.539722442626953,20.70881462097168,18.957534790039062,544437,0.0,0.0
|
||||
2023-08-17 00:00:00+02:00,20.57950782775879,20.76849365234375,20.549667358398438,20.688920974731445,18.939321517944336,564871,0.0,0.0
|
||||
2023-08-18 00:00:00+02:00,20.688920974731445,20.70881462097168,20.291057586669922,20.38057518005371,18.657052993774414,693870,0.0,0.0
|
||||
2023-08-21 00:00:00+02:00,20.39052391052246,20.66902732849121,20.39052391052246,20.569562911987305,18.83005714416504,793311,0.0,0.0
|
||||
2023-08-22 00:00:00+02:00,20.599401473999023,20.907745361328125,20.5098819732666,20.76849365234375,19.012165069580078,650046,0.0,0.0
|
||||
2023-08-23 00:00:00+02:00,20.80828094482422,20.858013153076172,20.330842971801758,20.370630264282227,18.64794921875,647211,0.0,0.0
|
||||
2023-08-22 00:00:00+02:00,20.599401473999023,20.907745361328125,20.5098819732666,20.76849365234375,19.01216697692871,650046,0.0,0.0
|
||||
2023-08-23 00:00:00+02:00,20.80828094482422,20.858013153076172,20.330842971801758,20.370630264282227,18.647947311401367,647211,0.0,0.0
|
||||
2023-08-24 00:00:00+02:00,20.45020294189453,20.599401473999023,20.291057586669922,20.330842971801758,18.611526489257812,475896,0.0,0.0
|
||||
2023-08-25 00:00:00+02:00,20.301002502441406,20.45020294189453,20.26121711730957,20.291057586669922,18.575103759765625,318928,0.0,0.0
|
||||
2023-08-25 00:00:00+02:00,20.301002502441406,20.45020294189453,20.26121711730957,20.291057586669922,18.575105667114258,318928,0.0,0.0
|
||||
2023-08-28 00:00:00+02:00,20.42036247253418,20.549667358398438,20.42036247253418,20.499935150146484,18.766319274902344,332741,0.0,0.0
|
||||
2023-08-29 00:00:00+02:00,20.66902732849121,20.897798538208008,20.66902732849121,20.838119506835938,19.075902938842773,523138,0.0,0.0
|
||||
2023-08-30 00:00:00+02:00,20.838119506835938,21.007211685180664,20.778440475463867,20.907745361328125,19.13964080810547,394929,0.0,0.0
|
||||
2023-08-31 00:00:00+02:00,20.947532653808594,21.36528968811035,20.92763900756836,21.265823364257812,19.467437744140625,2323236,0.0,0.0
|
||||
2023-09-01 00:00:00+02:00,21.255876541137695,21.9322452545166,21.255876541137695,21.87256622314453,20.022869110107422,966179,0.0,0.0
|
||||
2023-09-04 00:00:00+02:00,21.981977462768555,22.021764755249023,21.544328689575195,21.58411407470703,19.758811950683594,643546,0.0,0.0
|
||||
2023-09-01 00:00:00+02:00,21.255876541137695,21.9322452545166,21.255876541137695,21.87256622314453,20.022871017456055,966179,0.0,0.0
|
||||
2023-09-04 00:00:00+02:00,21.981977462768555,22.021764755249023,21.544328689575195,21.58411407470703,19.75881004333496,643546,0.0,0.0
|
||||
2023-09-05 00:00:00+02:00,21.504541397094727,21.78304672241211,21.424968719482422,21.6239013671875,19.79523277282715,541345,0.0,0.0
|
||||
2023-09-06 00:00:00+02:00,21.544328689575195,22.111284255981445,21.504541397094727,22.09139060974121,20.223188400268555,851678,0.0,0.0
|
||||
2023-09-06 00:00:00+02:00,21.544328689575195,22.111284255981445,21.504541397094727,22.09139060974121,20.223190307617188,851678,0.0,0.0
|
||||
2023-09-07 00:00:00+02:00,21.882511138916016,21.90240478515625,21.424968719482422,21.464754104614258,19.649545669555664,700314,0.0,0.0
|
||||
2023-09-08 00:00:00+02:00,21.574167251586914,21.574167251586914,20.887853622436523,21.235984802246094,19.440122604370117,719356,0.0,0.0
|
||||
2023-09-11 00:00:00+02:00,21.345396041870117,21.564220428466797,21.315555572509766,21.52443504333496,19.704177856445312,524078,0.0,0.0
|
||||
2023-09-12 00:00:00+02:00,21.58411407470703,21.6239013671875,21.11662483215332,21.11662483215332,19.330856323242188,772781,0.0,0.0
|
||||
2023-09-13 00:00:00+02:00,21.0469970703125,21.36528968811035,20.76849365234375,20.818225860595703,19.05769157409668,691035,0.0,0.0
|
||||
2023-09-13 00:00:00+02:00,21.0469970703125,21.36528968811035,20.76849365234375,20.818225860595703,19.057693481445312,691035,0.0,0.0
|
||||
2023-09-14 00:00:00+02:00,20.887853622436523,21.196197509765625,20.629241943359375,21.126571655273438,19.339962005615234,578423,0.0,0.0
|
||||
2023-09-15 00:00:00+02:00,21.295663833618164,21.952138900756836,21.295663833618164,21.84272575378418,19.99555206298828,2234985,0.0,0.0
|
||||
2023-09-18 00:00:00+02:00,21.802940368652344,21.84272575378418,21.673633575439453,21.713420867919922,19.87718391418457,856277,0.0,0.0
|
||||
2023-09-19 00:00:00+02:00,21.6437931060791,21.6437931060791,21.39512825012207,21.415021896362305,19.604019165039062,685505,0.0,0.0
|
||||
2023-09-19 00:00:00+02:00,21.6437931060791,21.6437931060791,21.39512825012207,21.415021896362305,19.60401725769043,685505,0.0,0.0
|
||||
2023-09-20 00:00:00+02:00,21.52443504333496,21.792993545532227,21.504541397094727,21.74325942993164,19.904497146606445,752488,0.0,0.0
|
||||
2023-09-21 00:00:00+02:00,21.534381866455078,21.574167251586914,21.0271053314209,21.186250686645508,19.394594192504883,722196,0.0,0.0
|
||||
2023-09-22 00:00:00+02:00,21.08678436279297,21.295663833618164,20.95747947692871,21.096731185913086,19.312644958496094,535977,0.0,0.0
|
||||
2023-09-25 00:00:00+02:00,21.037052154541016,21.17630386352539,20.529775619506836,20.788387298583984,19.030376434326172,678523,0.0,0.0
|
||||
2023-09-26 00:00:00+02:00,20.72870635986328,20.72870635986328,20.410415649414062,20.489988327026367,18.757211685180664,999281,0.0,0.0
|
||||
2023-09-26 00:00:00+02:00,20.72870635986328,20.72870635986328,20.410415649414062,20.489988327026367,18.757213592529297,999281,0.0,0.0
|
||||
2023-09-27 00:00:00+02:00,20.559614181518555,20.66902732849121,20.440256118774414,20.569562911987305,18.83005714416504,679654,0.0,0.0
|
||||
2023-09-28 00:00:00+02:00,20.57950782775879,20.858013153076172,20.42036247253418,20.80828094482422,19.048587799072266,791858,0.0,0.0
|
||||
2023-09-29 00:00:00+02:00,20.977371215820312,21.07683753967285,20.778440475463867,20.858013153076172,19.094114303588867,1368070,0.0,0.0
|
||||
2023-10-02 00:00:00+02:00,20.877906799316406,20.95747947692871,20.38057518005371,20.489988327026367,18.757211685180664,921943,0.0,0.0
|
||||
2023-10-02 00:00:00+02:00,20.877906799316406,20.95747947692871,20.38057518005371,20.489988327026367,18.757213592529297,921943,0.0,0.0
|
||||
2023-10-03 00:00:00+02:00,20.45020294189453,20.559614181518555,20.241323471069336,20.430309295654297,18.70258140563965,870202,0.0,0.0
|
||||
2023-10-04 00:00:00+02:00,20.340789794921875,20.629241943359375,20.23137664794922,20.301002502441406,18.584209442138672,1412955,0.0,0.0
|
||||
2023-10-04 00:00:00+02:00,20.340789794921875,20.629241943359375,20.23137664794922,20.301002502441406,18.58420753479004,1412955,0.0,0.0
|
||||
2023-10-05 00:00:00+02:00,20.301002502441406,20.410415649414062,20.151803970336914,20.23137664794922,18.520471572875977,552761,0.0,0.0
|
||||
2023-10-06 00:00:00+02:00,20.271163940429688,20.489988327026367,20.17169761657715,20.370630264282227,18.64794921875,824653,0.0,0.0
|
||||
2023-10-09 00:00:00+02:00,20.201536178588867,20.26121711730957,19.817598342895508,20.201536178588867,18.493154525756836,857112,0.0,0.0
|
||||
2023-10-06 00:00:00+02:00,20.271163940429688,20.489988327026367,20.17169761657715,20.370630264282227,18.647947311401367,824653,0.0,0.0
|
||||
2023-10-09 00:00:00+02:00,20.201536178588867,20.26121711730957,19.817598342895508,20.201536178588867,18.493152618408203,857112,0.0,0.0
|
||||
2023-10-10 00:00:00+02:00,20.310949325561523,20.619295120239258,20.281110763549805,20.470096588134766,18.739002227783203,881954,0.0,0.0
|
||||
2023-10-11 00:00:00+02:00,20.32089614868164,20.629241943359375,20.32089614868164,20.440256118774414,18.711685180664062,612797,0.0,0.0
|
||||
2023-10-11 00:00:00+02:00,20.32089614868164,20.629241943359375,20.32089614868164,20.440256118774414,18.711687088012695,612797,0.0,0.0
|
||||
2023-10-12 00:00:00+02:00,20.569562911987305,20.688920974731445,20.271163940429688,20.32089614868164,18.602420806884766,484462,0.0,0.0
|
||||
2023-10-13 00:00:00+02:00,20.211484909057617,20.470096588134766,20.211484909057617,20.301002502441406,18.584209442138672,538324,0.0,0.0
|
||||
2023-10-13 00:00:00+02:00,20.211484909057617,20.470096588134766,20.211484909057617,20.301002502441406,18.58420753479004,538324,0.0,0.0
|
||||
2023-10-16 00:00:00+02:00,20.340789794921875,20.489988327026367,20.26121711730957,20.310949325561523,18.593313217163086,495104,0.0,0.0
|
||||
2023-10-17 00:00:00+02:00,20.241323471069336,20.301002502441406,19.9130859375,20.221431732177734,18.511367797851562,618131,0.0,0.0
|
||||
2023-10-18 00:00:00+02:00,20.191591262817383,20.23137664794922,19.881256103515625,19.881256103515625,18.19995880126953,559829,0.0,0.0
|
||||
2023-10-19 00:00:00+02:00,19.714153289794922,19.84147071838379,19.551029205322266,19.630603790283203,17.970502853393555,708805,0.0,0.0
|
||||
2023-10-20 00:00:00+02:00,19.49930763244629,19.54705047607422,19.296396255493164,19.296396255493164,17.664560317993164,760144,0.0,0.0
|
||||
2023-10-20 00:00:00+02:00,19.49930763244629,19.54705047607422,19.296396255493164,19.296396255493164,17.66455841064453,760144,0.0,0.0
|
||||
2023-10-23 00:00:00+02:00,19.3162899017334,19.344141006469727,19.005956649780273,19.16908073425293,17.548009872436523,652032,0.0,0.0
|
||||
2023-10-24 00:00:00+02:00,19.101444244384766,19.232738494873047,18.994020462036133,19.11735725402832,17.500661849975586,565349,0.0,0.0
|
||||
2023-10-25 00:00:00+02:00,19.133272171020508,19.184995651245117,18.882619857788086,19.093486785888672,17.478809356689453,597757,0.0,0.0
|
||||
2023-10-26 00:00:00+02:00,18.882619857788086,19.507265090942383,18.834875106811523,19.403820037841797,17.762897491455078,756208,0.0,0.0
|
||||
2023-10-27 00:00:00+02:00,19.519201278686523,19.75394058227539,19.20488739013672,19.20488739013672,17.580787658691406,767302,0.0,0.0
|
||||
2023-10-30 00:00:00+01:00,19.296396255493164,19.54705047607422,19.296396255493164,19.45156478881836,17.806604385375977,755454,0.0,0.0
|
||||
2023-10-26 00:00:00+02:00,18.882619857788086,19.507265090942383,18.834875106811523,19.403820037841797,17.76289939880371,756208,0.0,0.0
|
||||
2023-10-27 00:00:00+02:00,19.519201278686523,19.75394058227539,19.20488739013672,19.20488739013672,17.58078956604004,767302,0.0,0.0
|
||||
2023-10-30 00:00:00+01:00,19.296396255493164,19.54705047607422,19.296396255493164,19.45156478881836,17.80660629272461,755454,0.0,0.0
|
||||
2023-10-31 00:00:00+01:00,19.455543518066406,19.972766876220703,19.443607330322266,19.84147071838379,18.163537979125977,1249155,0.0,0.0
|
||||
2023-11-01 00:00:00+01:00,19.903139114379883,20.04239273071289,19.551029205322266,19.618667602539062,17.959575653076172,645054,0.0,0.0
|
||||
2023-11-01 00:00:00+01:00,19.903139114379883,20.04239273071289,19.551029205322266,19.618667602539062,17.959577560424805,645054,0.0,0.0
|
||||
2023-11-02 00:00:00+01:00,19.734046936035156,20.410415649414062,19.726089477539062,20.141857147216797,18.438520431518555,1414951,0.0,0.0
|
||||
2023-11-03 00:00:00+01:00,19.877277374267578,20.211484909057617,19.165102005004883,19.51124382019043,17.861238479614258,1786173,0.0,0.0
|
||||
2023-11-03 00:00:00+01:00,19.877277374267578,20.211484909057617,19.165102005004883,19.51124382019043,17.861236572265625,1786173,0.0,0.0
|
||||
2023-11-06 00:00:00+01:00,19.515222549438477,19.78179168701172,19.304353713989258,19.531137466430664,17.87944793701172,1141224,0.0,0.0
|
||||
2023-11-07 00:00:00+01:00,19.42371368408203,19.535114288330078,19.25263214111328,19.35209846496582,17.71554946899414,719557,0.0,0.0
|
||||
2023-11-08 00:00:00+01:00,19.228759765625,19.427692413330078,19.093486785888672,19.320268630981445,17.686412811279297,829203,0.0,0.0
|
||||
2023-11-09 00:00:00+01:00,19.308332443237305,19.903139114379883,19.308332443237305,19.574901580810547,17.919511795043945,1169455,0.0,0.0
|
||||
2023-11-10 00:00:00+01:00,19.479415893554688,19.761898040771484,19.244674682617188,19.761898040771484,18.090694427490234,991826,0.0,0.0
|
||||
2023-11-13 00:00:00+01:00,19.773834228515625,19.857385635375977,19.531137466430664,19.734046936035156,18.06519889831543,980360,0.0,0.0
|
||||
2023-11-14 00:00:00+01:00,19.79372787475586,20.410415649414062,19.78974723815918,20.340789794921875,18.620630264282227,892672,0.0,0.0
|
||||
2023-11-14 00:00:00+01:00,19.79372787475586,20.410415649414062,19.78974723815918,20.340789794921875,18.62063217163086,892672,0.0,0.0
|
||||
2023-11-15 00:00:00+01:00,20.36068344116211,20.917692184448242,20.291057586669922,20.917692184448242,19.148746490478516,1168610,0.0,0.0
|
||||
2023-11-16 00:00:00+01:00,20.79833221435547,21.07683753967285,20.549667358398438,20.549667358398438,18.811845779418945,755625,0.0,0.0
|
||||
2023-11-17 00:00:00+01:00,20.549667358398438,20.848066329956055,20.549667358398438,20.559614181518555,18.82094955444336,784037,0.0,0.0
|
||||
2023-11-20 00:00:00+01:00,20.589454650878906,20.887853622436523,20.51982879638672,20.72870635986328,18.975744247436523,946072,0.0,0.0
|
||||
2023-11-21 00:00:00+01:00,20.688920974731445,20.82817268371582,20.470096588134766,20.629241943359375,18.88469123840332,1185330,0.0,0.0
|
||||
2023-11-17 00:00:00+01:00,20.549667358398438,20.848066329956055,20.549667358398438,20.559614181518555,18.820951461791992,784037,0.0,0.0
|
||||
2023-11-20 00:00:00+01:00,20.589454650878906,20.887853622436523,20.51982879638672,20.72870635986328,18.97574234008789,946072,0.0,0.0
|
||||
2023-11-21 00:00:00+01:00,20.688920974731445,20.82817268371582,20.470096588134766,20.629241943359375,18.884689331054688,1185330,0.0,0.0
|
||||
2023-11-22 00:00:00+01:00,20.629241943359375,20.838119506835938,20.559614181518555,20.599401473999023,18.85737419128418,1261386,0.0,0.0
|
||||
2023-11-23 00:00:00+01:00,20.599401473999023,20.76849365234375,20.599401473999023,20.7386531829834,18.984848022460938,633558,0.0,0.0
|
||||
2023-11-24 00:00:00+01:00,20.778440475463867,20.92763900756836,20.72870635986328,20.92763900756836,19.157852172851562,719180,0.0,0.0
|
||||
2023-11-27 00:00:00+01:00,20.887853622436523,20.907745361328125,20.51982879638672,20.57950782775879,18.839162826538086,1094505,0.0,0.0
|
||||
2023-11-28 00:00:00+01:00,20.529775619506836,20.66902732849121,20.330842971801758,20.60934829711914,18.866477966308594,1053370,0.0,0.0
|
||||
2023-11-24 00:00:00+01:00,20.778440475463867,20.92763900756836,20.72870635986328,20.92763900756836,19.157854080200195,719180,0.0,0.0
|
||||
2023-11-27 00:00:00+01:00,20.887853622436523,20.907745361328125,20.51982879638672,20.57950782775879,18.839160919189453,1094505,0.0,0.0
|
||||
2023-11-28 00:00:00+01:00,20.529775619506836,20.66902732849121,20.330842971801758,20.60934829711914,18.866479873657227,1053370,0.0,0.0
|
||||
2023-11-29 00:00:00+01:00,20.60934829711914,21.037052154541016,20.569562911987305,20.977371215820312,19.203378677368164,957061,0.0,0.0
|
||||
2023-11-30 00:00:00+01:00,20.947532653808594,21.27577018737793,20.818225860595703,21.11662483215332,19.330856323242188,2370750,0.0,0.0
|
||||
2023-12-01 00:00:00+01:00,21.166357040405273,21.6437931060791,21.166357040405273,21.604007720947266,19.777023315429688,1195222,0.0,0.0
|
||||
2023-12-04 00:00:00+01:00,21.484647750854492,21.94219207763672,21.464754104614258,21.74325942993164,19.904497146606445,1089262,0.0,0.0
|
||||
2023-12-05 00:00:00+01:00,21.6239013671875,21.9322452545166,21.59406089782715,21.882511138916016,20.03197479248047,1150906,0.0,0.0
|
||||
2023-12-06 00:00:00+01:00,21.882511138916016,22.081443786621094,21.84272575378418,22.041658401489258,20.177661895751953,1090639,0.0,0.0
|
||||
2023-12-07 00:00:00+01:00,22.081443786621094,22.489255905151367,22.041658401489258,22.359949111938477,20.469036102294922,1596696,0.0,0.0
|
||||
2023-12-06 00:00:00+01:00,21.882511138916016,22.081443786621094,21.84272575378418,22.041658401489258,20.177663803100586,1090639,0.0,0.0
|
||||
2023-12-07 00:00:00+01:00,22.081443786621094,22.489255905151367,22.041658401489258,22.359949111938477,20.469038009643555,1596696,0.0,0.0
|
||||
2023-12-08 00:00:00+01:00,22.330108642578125,22.479307174682617,21.991924285888672,22.35000228881836,20.459930419921875,1410130,0.0,0.0
|
||||
2023-12-11 00:00:00+01:00,19.450000762939453,23.649999618530273,17.895000457763672,20.6200008392334,18.876230239868164,8998324,0.0,0.0
|
||||
2023-12-12 00:00:00+01:00,20.790000915527344,22.3700008392334,20.75,22.139999389648438,20.26768684387207,3236690,0.0,0.0
|
||||
2023-12-13 00:00:00+01:00,22.489999771118164,24.530000686645508,22.399999618530273,23.950000762939453,21.924623489379883,2215354,0.0,0.0
|
||||
2023-12-13 00:00:00+01:00,22.489999771118164,24.530000686645508,22.399999618530273,23.950000762939453,21.92462158203125,2215354,0.0,0.0
|
||||
2023-12-14 00:00:00+01:00,24.5,25.010000228881836,23.950000762939453,24.540000915527344,22.4647274017334,1535694,0.0,0.0
|
||||
2023-12-15 00:00:00+01:00,24.8799991607666,25.420000076293945,24.600000381469727,25.40999984741211,23.261154174804688,2385553,0.0,0.0
|
||||
2023-12-18 00:00:00+01:00,25.649999618530273,26.969999313354492,25.489999771118164,26.1299991607666,23.920265197753906,965441,0.0,0.0
|
||||
2023-12-19 00:00:00+01:00,26.290000915527344,27.399999618530273,26.200000762939453,27.209999084472656,24.908931732177734,908754,0.0,0.0
|
||||
2023-12-20 00:00:00+01:00,27.3700008392334,27.469999313354492,26.350000381469727,26.350000381469727,24.121660232543945,821654,0.0,0.0
|
||||
2023-12-21 00:00:00+01:00,26.239999771118164,26.3700008392334,25.760000228881836,26.049999237060547,23.847028732299805,744197,0.0,0.0
|
||||
2023-12-19 00:00:00+01:00,26.290000915527344,27.399999618530273,26.200000762939453,27.209999084472656,24.908933639526367,908754,0.0,0.0
|
||||
2023-12-20 00:00:00+01:00,27.3700008392334,27.469999313354492,26.350000381469727,26.350000381469727,24.121662139892578,821654,0.0,0.0
|
||||
2023-12-21 00:00:00+01:00,26.239999771118164,26.3700008392334,25.760000228881836,26.049999237060547,23.847030639648438,744197,0.0,0.0
|
||||
2023-12-22 00:00:00+01:00,26.1200008392334,26.510000228881836,26.049999237060547,26.239999771118164,24.020963668823242,358134,0.0,0.0
|
||||
2023-12-27 00:00:00+01:00,26.639999389648438,26.729999542236328,26.299999237060547,26.729999542236328,24.469526290893555,398784,0.0,0.0
|
||||
2023-12-28 00:00:00+01:00,26.899999618530273,27.200000762939453,26.899999618530273,27.190000534057617,24.890625,306879,0.0,0.0
|
||||
2023-12-27 00:00:00+01:00,26.639999389648438,26.729999542236328,26.299999237060547,26.729999542236328,24.469524383544922,398784,0.0,0.0
|
||||
2023-12-28 00:00:00+01:00,26.899999618530273,27.200000762939453,26.899999618530273,27.190000534057617,24.890626907348633,306879,0.0,0.0
|
||||
2023-12-29 00:00:00+01:00,27.219999313354492,27.959999084472656,27.219999313354492,27.729999542236328,25.384958267211914,508827,0.0,0.0
|
||||
2024-01-02 00:00:00+01:00,28.059999465942383,28.600000381469727,27.520000457763672,28.030000686645508,25.659587860107422,395002,0.0,0.0
|
||||
2024-01-02 00:00:00+01:00,28.059999465942383,28.600000381469727,27.520000457763672,28.030000686645508,25.659589767456055,395002,0.0,0.0
|
||||
2024-01-03 00:00:00+01:00,28.110000610351562,28.15999984741211,27.170000076293945,27.43000030517578,25.110328674316406,517626,0.0,0.0
|
||||
2024-01-04 00:00:00+01:00,27.5,28.110000610351562,27.5,28.09000015258789,25.714515686035156,353356,0.0,0.0
|
||||
2024-01-05 00:00:00+01:00,28.079999923706055,28.469999313354492,28.0,28.329999923706055,25.93421745300293,426440,0.0,0.0
|
||||
2024-01-08 00:00:00+01:00,28.290000915527344,28.329999923706055,27.540000915527344,28.0,25.632125854492188,503233,0.0,0.0
|
||||
2024-01-09 00:00:00+01:00,27.190000534057617,27.549999237060547,27.079999923706055,27.299999237060547,24.991321563720703,592677,0.0,0.0
|
||||
2024-01-10 00:00:00+01:00,27.100000381469727,27.170000076293945,26.350000381469727,26.350000381469727,24.121660232543945,692877,0.0,0.0
|
||||
2024-01-11 00:00:00+01:00,26.389999389648438,26.559999465942383,25.889999389648438,26.0,23.801259994506836,631805,0.0,0.0
|
||||
2024-01-10 00:00:00+01:00,27.100000381469727,27.170000076293945,26.350000381469727,26.350000381469727,24.121662139892578,692877,0.0,0.0
|
||||
2024-01-11 00:00:00+01:00,26.389999389648438,26.559999465942383,25.889999389648438,26.0,23.801258087158203,631805,0.0,0.0
|
||||
2024-01-12 00:00:00+01:00,26.639999389648438,26.860000610351562,26.06999969482422,26.139999389648438,23.929418563842773,803481,0.0,0.0
|
||||
2024-01-15 00:00:00+01:00,25.059999465942383,25.329999923706055,25.0,25.299999237060547,24.690631866455078,726646,1.62,0.0
|
||||
2024-01-16 00:00:00+01:00,25.149999618530273,25.200000762939453,24.579999923706055,24.989999771118164,24.388099670410156,493029,0.0,0.0
|
||||
@@ -675,4 +675,67 @@ Datetime,Open,High,Low,Close,Adj Close,Volume,Dividends,Stock Splits
|
||||
2024-08-19 00:00:00+02:00,31.030000686645508,31.299999237060547,30.670000076293945,31.030000686645508,31.030000686645508,180272,0.0,0.0
|
||||
2024-08-20 00:00:00+02:00,31.170000076293945,31.170000076293945,30.469999313354492,30.530000686645508,30.530000686645508,152575,0.0,0.0
|
||||
2024-08-21 00:00:00+02:00,30.530000686645508,31.020000457763672,30.530000686645508,30.969999313354492,30.969999313354492,128994,0.0,0.0
|
||||
2024-08-22 00:00:00+02:00,30.979999542236328,31.1299991607666,30.780000686645508,31.059999465942383,31.059999465942383,15067,0.0,0.0
|
||||
2024-08-22 00:00:00+02:00,30.979999542236328,31.3799991607666,30.780000686645508,31.229999542236328,31.229999542236328,87006,0.0,0.0
|
||||
2024-08-23 00:00:00+02:00,31.18000030517578,31.540000915527344,31.18000030517578,31.270000457763672,31.270000457763672,84423,0.0,0.0
|
||||
2024-08-26 00:00:00+02:00,31.149999618530273,31.459999084472656,30.829999923706055,31.030000686645508,31.030000686645508,72965,0.0,0.0
|
||||
2024-08-27 00:00:00+02:00,30.90999984741211,31.360000610351562,30.809999465942383,31.139999389648438,31.139999389648438,102326,0.0,0.0
|
||||
2024-08-28 00:00:00+02:00,31.139999389648438,31.190000534057617,30.540000915527344,30.93000030517578,30.93000030517578,133750,0.0,0.0
|
||||
2024-08-29 00:00:00+02:00,30.81999969482422,31.25,30.81999969482422,31.079999923706055,31.079999923706055,110738,0.0,0.0
|
||||
2024-08-30 00:00:00+02:00,31.190000534057617,31.829999923706055,31.079999923706055,31.700000762939453,31.700000762939453,222082,0.0,0.0
|
||||
2024-09-02 00:00:00+02:00,31.739999771118164,32.36000061035156,31.469999313354492,32.18000030517578,32.18000030517578,137822,0.0,0.0
|
||||
2024-09-03 00:00:00+02:00,32.04999923706055,32.2400016784668,31.469999313354492,31.520000457763672,31.520000457763672,115050,0.0,0.0
|
||||
2024-09-04 00:00:00+02:00,31.100000381469727,31.739999771118164,31.030000686645508,31.559999465942383,31.559999465942383,110471,0.0,0.0
|
||||
2024-09-05 00:00:00+02:00,31.34000015258789,32.310001373291016,31.34000015258789,31.670000076293945,31.670000076293945,230413,0.0,0.0
|
||||
2024-09-06 00:00:00+02:00,31.489999771118164,31.8700008392334,31.18000030517578,31.209999084472656,31.209999084472656,163894,0.0,0.0
|
||||
2024-09-09 00:00:00+02:00,31.5,31.729999542236328,31.280000686645508,31.649999618530273,31.649999618530273,150347,0.0,0.0
|
||||
2024-09-10 00:00:00+02:00,31.59000015258789,32.040000915527344,30.8700008392334,30.8700008392334,30.8700008392334,177060,0.0,0.0
|
||||
2024-09-11 00:00:00+02:00,30.93000030517578,32.06999969482422,30.93000030517578,31.049999237060547,31.049999237060547,253253,0.0,0.0
|
||||
2024-09-12 00:00:00+02:00,31.049999237060547,31.3799991607666,30.809999465942383,30.809999465942383,30.809999465942383,198487,0.0,0.0
|
||||
2024-09-13 00:00:00+02:00,30.809999465942383,31.6299991607666,30.809999465942383,31.3700008392334,31.3700008392334,160154,0.0,0.0
|
||||
2024-09-16 00:00:00+02:00,31.270000457763672,31.469999313354492,31.100000381469727,31.450000762939453,31.450000762939453,112962,0.0,0.0
|
||||
2024-09-17 00:00:00+02:00,31.719999313354492,32.75,31.719999313354492,32.75,32.75,181018,0.0,0.0
|
||||
2024-09-18 00:00:00+02:00,32.81999969482422,33.84000015258789,32.38999938964844,33.72999954223633,33.72999954223633,208825,0.0,0.0
|
||||
2024-09-19 00:00:00+02:00,34.119998931884766,34.689998626708984,33.84000015258789,34.58000183105469,34.58000183105469,292983,0.0,0.0
|
||||
2024-09-20 00:00:00+02:00,34.599998474121094,34.599998474121094,33.93000030517578,34.279998779296875,34.279998779296875,547234,0.0,0.0
|
||||
2024-09-23 00:00:00+02:00,34.22999954223633,34.68000030517578,34.11000061035156,34.369998931884766,34.369998931884766,148293,0.0,0.0
|
||||
2024-09-24 00:00:00+02:00,34.709999084472656,35.13999938964844,34.279998779296875,34.279998779296875,34.279998779296875,214647,0.0,0.0
|
||||
2024-09-25 00:00:00+02:00,34.279998779296875,34.83000183105469,33.58000183105469,33.58000183105469,33.58000183105469,194543,0.0,0.0
|
||||
2024-09-26 00:00:00+02:00,34.0,34.119998931884766,33.650001525878906,34.119998931884766,34.119998931884766,198143,0.0,0.0
|
||||
2024-09-27 00:00:00+02:00,34.2400016784668,35.02000045776367,34.130001068115234,34.63999938964844,34.63999938964844,196448,0.0,0.0
|
||||
2024-09-30 00:00:00+02:00,34.150001525878906,35.45000076293945,34.0,35.20000076293945,35.20000076293945,261067,0.0,0.0
|
||||
2024-10-01 00:00:00+02:00,35.20000076293945,35.88999938964844,35.18000030517578,35.61000061035156,35.61000061035156,218502,0.0,0.0
|
||||
2024-10-02 00:00:00+02:00,35.61000061035156,36.810001373291016,35.45000076293945,36.310001373291016,36.310001373291016,185328,0.0,0.0
|
||||
2024-10-03 00:00:00+02:00,36.22999954223633,36.619998931884766,36.209999084472656,36.310001373291016,36.310001373291016,246827,0.0,0.0
|
||||
2024-10-04 00:00:00+02:00,36.209999084472656,37.560001373291016,36.13999938964844,37.5099983215332,37.5099983215332,298766,0.0,0.0
|
||||
2024-10-07 00:00:00+02:00,37.5,37.5099983215332,36.47999954223633,36.91999816894531,36.91999816894531,161195,0.0,0.0
|
||||
2024-10-08 00:00:00+02:00,36.7599983215332,36.7599983215332,35.66999816894531,35.93000030517578,35.93000030517578,144993,0.0,0.0
|
||||
2024-10-09 00:00:00+02:00,35.86000061035156,36.52000045776367,35.400001525878906,36.369998931884766,36.369998931884766,123249,0.0,0.0
|
||||
2024-10-10 00:00:00+02:00,36.619998931884766,37.0,36.439998626708984,36.959999084472656,36.959999084472656,127939,0.0,0.0
|
||||
2024-10-11 00:00:00+02:00,36.650001525878906,37.349998474121094,36.560001373291016,37.150001525878906,37.150001525878906,110000,0.0,0.0
|
||||
2024-10-14 00:00:00+02:00,37.349998474121094,38.0,37.0,38.0,38.0,215775,0.0,0.0
|
||||
2024-10-15 00:00:00+02:00,38.0,38.72999954223633,37.7400016784668,38.43000030517578,38.43000030517578,289899,0.0,0.0
|
||||
2024-10-16 00:00:00+02:00,38.5,39.31999969482422,38.310001373291016,39.31999969482422,39.31999969482422,351315,0.0,0.0
|
||||
2024-10-17 00:00:00+02:00,39.27000045776367,39.310001373291016,37.95000076293945,38.439998626708984,38.439998626708984,336837,0.0,0.0
|
||||
2024-10-18 00:00:00+02:00,38.209999084472656,39.369998931884766,37.939998626708984,39.349998474121094,39.349998474121094,284589,0.0,0.0
|
||||
2024-10-21 00:00:00+02:00,39.11000061035156,39.13999938964844,38.43000030517578,39.099998474121094,39.099998474121094,176237,0.0,0.0
|
||||
2024-10-22 00:00:00+02:00,39.119998931884766,39.369998931884766,38.63999938964844,38.900001525878906,38.900001525878906,219984,0.0,0.0
|
||||
2024-10-23 00:00:00+02:00,38.70000076293945,38.86000061035156,37.790000915527344,38.79999923706055,38.79999923706055,212351,0.0,0.0
|
||||
2024-10-24 00:00:00+02:00,38.70000076293945,38.939998626708984,38.36000061035156,38.68000030517578,38.68000030517578,118090,0.0,0.0
|
||||
2024-10-25 00:00:00+02:00,38.630001068115234,38.849998474121094,38.04999923706055,38.560001373291016,38.560001373291016,164039,0.0,0.0
|
||||
2024-10-28 00:00:00+01:00,38.560001373291016,38.81999969482422,37.84000015258789,38.25,38.25,156263,0.0,0.0
|
||||
2024-10-29 00:00:00+01:00,38.25,38.88999938964844,38.029998779296875,38.31999969482422,38.31999969482422,213012,0.0,0.0
|
||||
2024-10-30 00:00:00+01:00,37.75,38.04999923706055,37.029998779296875,37.029998779296875,37.029998779296875,397551,0.0,0.0
|
||||
2024-10-31 00:00:00+01:00,37.0,37.310001373291016,36.34000015258789,37.060001373291016,37.060001373291016,281687,0.0,0.0
|
||||
2024-11-01 00:00:00+01:00,36.84000015258789,37.43000030517578,36.84000015258789,37.2400016784668,37.2400016784668,81048,0.0,0.0
|
||||
2024-11-04 00:00:00+01:00,37.060001373291016,37.79999923706055,37.040000915527344,37.560001373291016,37.560001373291016,82632,0.0,0.0
|
||||
2024-11-05 00:00:00+01:00,37.560001373291016,37.95000076293945,37.369998931884766,37.95000076293945,37.95000076293945,199518,0.0,0.0
|
||||
2024-11-06 00:00:00+01:00,38.20000076293945,38.900001525878906,34.91999816894531,34.91999816894531,34.91999816894531,469899,0.0,0.0
|
||||
2024-11-07 00:00:00+01:00,34.08000183105469,34.900001525878906,33.72999954223633,33.72999954223633,33.72999954223633,380050,0.0,0.0
|
||||
2024-11-08 00:00:00+01:00,33.61000061035156,33.91999816894531,33.29999923706055,33.54999923706055,33.54999923706055,389420,0.0,0.0
|
||||
2024-11-11 00:00:00+01:00,33.810001373291016,34.31999969482422,33.130001068115234,33.130001068115234,33.130001068115234,233145,0.0,0.0
|
||||
2024-11-12 00:00:00+01:00,32.79999923706055,33.029998779296875,31.670000076293945,31.709999084472656,31.709999084472656,284709,0.0,0.0
|
||||
2024-11-13 00:00:00+01:00,31.780000686645508,32.11000061035156,31.360000610351562,31.510000228881836,31.510000228881836,208626,0.0,0.0
|
||||
2024-11-14 00:00:00+01:00,31.600000381469727,31.8799991607666,31.34000015258789,31.40999984741211,31.40999984741211,193374,0.0,0.0
|
||||
2024-11-15 00:00:00+01:00,31.309999465942383,32.5,31.309999465942383,32.22999954223633,32.22999954223633,130866,0.0,0.0
|
||||
2024-11-18 00:00:00+01:00,32.20000076293945,32.72999954223633,32.08000183105469,32.130001068115234,32.130001068115234,94641,0.0,0.0
|
||||
2024-11-19 00:00:00+01:00,32.099998474121094,32.650001525878906,31.06999969482422,31.920000076293945,31.920000076293945,159142,0.0,0.0
|
||||
|
||||
|
93
tests/test_cache.py
Normal file
93
tests/test_cache.py
Normal file
@@ -0,0 +1,93 @@
|
||||
"""
|
||||
Tests for cache
|
||||
|
||||
To run all tests in suite from commandline:
|
||||
python -m unittest tests.cache
|
||||
|
||||
Specific test class:
|
||||
python -m unittest tests.cache.TestCache
|
||||
|
||||
"""
|
||||
from unittest import TestSuite
|
||||
|
||||
from tests.context import yfinance as yf
|
||||
|
||||
import unittest
|
||||
import tempfile
|
||||
import os
|
||||
|
||||
|
||||
class TestCache(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.tempCacheDir = tempfile.TemporaryDirectory()
|
||||
yf.set_tz_cache_location(cls.tempCacheDir.name)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
yf.cache._TzDBManager.close_db()
|
||||
cls.tempCacheDir.cleanup()
|
||||
|
||||
def test_storeTzNoRaise(self):
|
||||
# storing TZ to cache should never raise exception
|
||||
tkr = 'AMZN'
|
||||
tz1 = "America/New_York"
|
||||
tz2 = "London/Europe"
|
||||
cache = yf.cache.get_tz_cache()
|
||||
cache.store(tkr, tz1)
|
||||
cache.store(tkr, tz2)
|
||||
|
||||
def test_setTzCacheLocation(self):
|
||||
self.assertEqual(yf.cache._TzDBManager.get_location(), self.tempCacheDir.name)
|
||||
|
||||
tkr = 'AMZN'
|
||||
tz1 = "America/New_York"
|
||||
cache = yf.cache.get_tz_cache()
|
||||
cache.store(tkr, tz1)
|
||||
|
||||
self.assertTrue(os.path.exists(os.path.join(self.tempCacheDir.name, "tkr-tz.db")))
|
||||
|
||||
|
||||
class TestCacheNoPermission(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
if os.name == "nt": # Windows
|
||||
cls.cache_path = "C:\\Windows\\System32\\yf-cache"
|
||||
else: # Unix/Linux/MacOS
|
||||
# Use a writable directory
|
||||
cls.cache_path = "/yf-cache"
|
||||
yf.set_tz_cache_location(cls.cache_path)
|
||||
|
||||
def test_tzCacheRootStore(self):
|
||||
# Test that if cache path in read-only filesystem, no exception.
|
||||
tkr = 'AMZN'
|
||||
tz1 = "America/New_York"
|
||||
|
||||
# During attempt to store, will discover cannot write
|
||||
yf.cache.get_tz_cache().store(tkr, tz1)
|
||||
|
||||
# Handling the store failure replaces cache with a dummy
|
||||
cache = yf.cache.get_tz_cache()
|
||||
self.assertTrue(cache.dummy)
|
||||
cache.store(tkr, tz1)
|
||||
|
||||
def test_tzCacheRootLookup(self):
|
||||
# Test that if cache path in read-only filesystem, no exception.
|
||||
tkr = 'AMZN'
|
||||
# During attempt to lookup, will discover cannot write
|
||||
yf.cache.get_tz_cache().lookup(tkr)
|
||||
|
||||
# Handling the lookup failure replaces cache with a dummy
|
||||
cache = yf.cache.get_tz_cache()
|
||||
self.assertTrue(cache.dummy)
|
||||
cache.lookup(tkr)
|
||||
|
||||
def suite():
|
||||
ts: TestSuite = unittest.TestSuite()
|
||||
ts.addTest(TestCache('Test cache'))
|
||||
ts.addTest(TestCacheNoPermission('Test cache no permission'))
|
||||
return ts
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
@@ -367,9 +367,9 @@ class TestPriceRepair(unittest.TestCase):
|
||||
"Close": [103.03, 102.05, 102.08],
|
||||
"Adj Close": [102.03, 102.05, 102.08],
|
||||
"Volume": [560, 137, 117]},
|
||||
index=_pd.to_datetime([_dt.datetime(2022, 11, 1),
|
||||
_dt.datetime(2022, 10, 31),
|
||||
_dt.datetime(2022, 10, 30)]))
|
||||
index=_pd.to_datetime([_dt.datetime(2024, 11, 1),
|
||||
_dt.datetime(2024, 10, 31),
|
||||
_dt.datetime(2024, 10, 30)]))
|
||||
df_bad = df_bad.sort_index()
|
||||
df_bad.index.name = "Date"
|
||||
df_bad.index = df_bad.index.tz_localize(tz_exchange)
|
||||
@@ -377,9 +377,9 @@ class TestPriceRepair(unittest.TestCase):
|
||||
repaired_df = hist._fix_zeroes(df_bad, "1d", tz_exchange, prepost=False)
|
||||
|
||||
correct_df = df_bad.copy()
|
||||
correct_df.loc["2022-11-01", "Open"] = 102.080002
|
||||
correct_df.loc["2022-11-01", "Low"] = 102.032501
|
||||
correct_df.loc["2022-11-01", "High"] = 102.080002
|
||||
correct_df.loc["2024-11-01", "Open"] = 102.572729
|
||||
correct_df.loc["2024-11-01", "Low"] = 102.309091
|
||||
correct_df.loc["2024-11-01", "High"] = 102.572729
|
||||
for c in ["Open", "Low", "High", "Close"]:
|
||||
self.assertTrue(_np.isclose(repaired_df[c], correct_df[c], rtol=1e-8).all())
|
||||
|
||||
@@ -462,7 +462,7 @@ class TestPriceRepair(unittest.TestCase):
|
||||
# Stocks that split in 2022 but no problems in Yahoo data,
|
||||
# so repair should change nothing
|
||||
good_tkrs = ['AMZN', 'DXCM', 'FTNT', 'GOOG', 'GME', 'PANW', 'SHOP', 'TSLA']
|
||||
good_tkrs += ['AEI', 'GHI', 'IRON', 'LXU', 'NUZE', 'RSLS', 'TISI']
|
||||
good_tkrs += ['AEI', 'GHI', 'IRON', 'LXU', 'RSLS', 'TISI']
|
||||
good_tkrs += ['BOL.ST', 'TUI1.DE']
|
||||
intervals = ['1d', '1wk', '1mo', '3mo']
|
||||
for tkr in good_tkrs:
|
||||
@@ -580,7 +580,6 @@ class TestPriceRepair(unittest.TestCase):
|
||||
# Div 100x
|
||||
bad_tkrs += ['ABDP.L']
|
||||
bad_tkrs += ['ELCO.L']
|
||||
bad_tkrs += ['KWS.L']
|
||||
bad_tkrs += ['PSH.L']
|
||||
|
||||
# Div 100x and adjust too big
|
||||
|
||||
@@ -118,7 +118,7 @@ class TestPriceHistory(unittest.TestCase):
|
||||
continue
|
||||
test_run = True
|
||||
|
||||
df = dat.history(start=dt.date() - _dt.timedelta(days=7), interval="1wk")
|
||||
df = dat.history(start=dt.date() - _dt.timedelta(days=13), interval="1wk")
|
||||
dt0 = df.index[-2]
|
||||
dt1 = df.index[-1]
|
||||
try:
|
||||
@@ -401,7 +401,7 @@ class TestPriceHistory(unittest.TestCase):
|
||||
|
||||
# Setup
|
||||
tkr = "AMZN"
|
||||
special_day = _dt.date(2023, 11, 24)
|
||||
special_day = _dt.date(2024, 11, 29)
|
||||
time_early_close = _dt.time(13)
|
||||
dat = yf.Ticker(tkr, session=self.session)
|
||||
|
||||
@@ -427,8 +427,8 @@ class TestPriceHistory(unittest.TestCase):
|
||||
dat = yf.Ticker(tkr, session=self.session)
|
||||
|
||||
# Test no other afternoons (or mornings) were pruned
|
||||
start_d = _dt.date(2023, 1, 1)
|
||||
end_d = _dt.date(2023+1, 1, 1)
|
||||
start_d = _dt.date(2024, 1, 1)
|
||||
end_d = _dt.date(2024+1, 1, 1)
|
||||
df = dat.history(start=start_d, end=end_d, interval="1h", prepost=False, keepna=True)
|
||||
last_dts = _pd.Series(df.index).groupby(df.index.date).last()
|
||||
dfd = dat.history(start=start_d, end=end_d, interval='1d', prepost=False, keepna=True)
|
||||
|
||||
@@ -1,133 +1,38 @@
|
||||
import unittest
|
||||
from unittest.mock import patch, MagicMock
|
||||
from yfinance.const import PREDEFINED_SCREENER_BODY_MAP
|
||||
from yfinance.screener.screener import Screener
|
||||
from yfinance.screener.screener_query import EquityQuery
|
||||
from yfinance.screener.screener import screen
|
||||
from yfinance.screener.query import EquityQuery
|
||||
|
||||
|
||||
class TestScreener(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
self.screener = Screener()
|
||||
self.query = EquityQuery('gt',['eodprice',3])
|
||||
|
||||
def test_set_default_body(self):
|
||||
self.screener.set_default_body(self.query)
|
||||
|
||||
self.assertEqual(self.screener.body['offset'], 0)
|
||||
self.assertEqual(self.screener.body['size'], 100)
|
||||
self.assertEqual(self.screener.body['sortField'], 'ticker')
|
||||
self.assertEqual(self.screener.body['sortType'], 'desc')
|
||||
self.assertEqual(self.screener.body['quoteType'], 'equity')
|
||||
self.assertEqual(self.screener.body['query'], self.query.to_dict())
|
||||
self.assertEqual(self.screener.body['userId'], '')
|
||||
self.assertEqual(self.screener.body['userIdType'], 'guid')
|
||||
|
||||
def test_set_predefined_body(self):
|
||||
k = 'most_actives'
|
||||
self.screener.set_predefined_body(k)
|
||||
self.assertEqual(self.screener.body, PREDEFINED_SCREENER_BODY_MAP[k])
|
||||
|
||||
def test_set_predefined_body_invalid_key(self):
|
||||
with self.assertRaises(ValueError):
|
||||
self.screener.set_predefined_body('invalid_key')
|
||||
|
||||
def test_set_body(self):
|
||||
body = {
|
||||
"offset": 0,
|
||||
"size": 100,
|
||||
"sortField": "ticker",
|
||||
"sortType": "desc",
|
||||
"quoteType": "equity",
|
||||
"query": self.query.to_dict(),
|
||||
"userId": "",
|
||||
"userIdType": "guid"
|
||||
}
|
||||
self.screener.set_body(body)
|
||||
|
||||
self.assertEqual(self.screener.body, body)
|
||||
|
||||
def test_set_body_missing_keys(self):
|
||||
body = {
|
||||
"offset": 0,
|
||||
"size": 100,
|
||||
"sortField": "ticker",
|
||||
"sortType": "desc",
|
||||
"quoteType": "equity"
|
||||
}
|
||||
with self.assertRaises(ValueError):
|
||||
self.screener.set_body(body)
|
||||
|
||||
def test_set_body_extra_keys(self):
|
||||
body = {
|
||||
"offset": 0,
|
||||
"size": 100,
|
||||
"sortField": "ticker",
|
||||
"sortType": "desc",
|
||||
"quoteType": "equity",
|
||||
"query": self.query.to_dict(),
|
||||
"userId": "",
|
||||
"userIdType": "guid",
|
||||
"extraKey": "extraValue"
|
||||
}
|
||||
with self.assertRaises(ValueError):
|
||||
self.screener.set_body(body)
|
||||
|
||||
def test_patch_body(self):
|
||||
initial_body = {
|
||||
"offset": 0,
|
||||
"size": 100,
|
||||
"sortField": "ticker",
|
||||
"sortType": "desc",
|
||||
"quoteType": "equity",
|
||||
"query": self.query.to_dict(),
|
||||
"userId": "",
|
||||
"userIdType": "guid"
|
||||
}
|
||||
self.screener.set_body(initial_body)
|
||||
patch_values = {"size": 50}
|
||||
self.screener.patch_body(patch_values)
|
||||
|
||||
self.assertEqual(self.screener.body['size'], 50)
|
||||
self.assertEqual(self.screener.body['query'], self.query.to_dict())
|
||||
|
||||
def test_patch_body_extra_keys(self):
|
||||
initial_body = {
|
||||
"offset": 0,
|
||||
"size": 100,
|
||||
"sortField": "ticker",
|
||||
"sortType": "desc",
|
||||
"quoteType": "equity",
|
||||
"query": self.query.to_dict(),
|
||||
"userId": "",
|
||||
"userIdType": "guid"
|
||||
}
|
||||
self.screener.set_body(initial_body)
|
||||
patch_values = {"extraKey": "extraValue"}
|
||||
with self.assertRaises(ValueError):
|
||||
self.screener.patch_body(patch_values)
|
||||
self.predefined = 'aggressive_small_caps'
|
||||
|
||||
@patch('yfinance.screener.screener.YfData.post')
|
||||
def test_fetch(self, mock_post):
|
||||
mock_response = MagicMock()
|
||||
mock_response.json.return_value = {'finance': {'result': [{}]}}
|
||||
mock_post.return_value = mock_response
|
||||
def test_set_large_size_in_body(self, mock_post):
|
||||
with self.assertRaises(ValueError):
|
||||
screen(self.query, size=251)
|
||||
|
||||
self.screener.set_default_body(self.query)
|
||||
response = self.screener._fetch()
|
||||
|
||||
self.assertEqual(response, {'finance': {'result': [{}]}})
|
||||
|
||||
@patch('yfinance.screener.screener.YfData.post')
|
||||
def test_fetch_and_parse(self, mock_post):
|
||||
@patch('yfinance.data.YfData.post')
|
||||
def test_fetch_query(self, mock_post):
|
||||
mock_response = MagicMock()
|
||||
mock_response.json.return_value = {'finance': {'result': [{'key': 'value'}]}}
|
||||
mock_post.return_value = mock_response
|
||||
|
||||
self.screener.set_default_body(self.query)
|
||||
self.screener._fetch_and_parse()
|
||||
self.assertEqual(self.screener.response, {'key': 'value'})
|
||||
response = screen(self.query)
|
||||
self.assertEqual(response, {'key': 'value'})
|
||||
|
||||
@patch('yfinance.data.YfData.get')
|
||||
def test_fetch_predefined(self, mock_get):
|
||||
mock_response = MagicMock()
|
||||
mock_response.json.return_value = {'finance': {'result': [{'key': 'value'}]}}
|
||||
mock_get.return_value = mock_response
|
||||
|
||||
response = screen(self.predefined)
|
||||
self.assertEqual(response, {'key': 'value'})
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
42
tests/test_search.py
Normal file
42
tests/test_search.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import unittest
|
||||
|
||||
from tests.context import yfinance as yf
|
||||
|
||||
|
||||
class TestSearch(unittest.TestCase):
|
||||
def test_invalid_query(self):
|
||||
search = yf.Search(query="XYZXYZ")
|
||||
|
||||
self.assertEqual(len(search.quotes), 0)
|
||||
self.assertEqual(len(search.news), 0)
|
||||
self.assertEqual(len(search.lists), 0)
|
||||
self.assertEqual(len(search.nav), 0)
|
||||
self.assertEqual(len(search.research), 0)
|
||||
|
||||
def test_empty_query(self):
|
||||
search = yf.Search(query="")
|
||||
|
||||
self.assertEqual(len(search.quotes), 0)
|
||||
self.assertEqual(len(search.news), 0)
|
||||
|
||||
def test_fuzzy_query(self):
|
||||
search = yf.Search(query="Appel", enable_fuzzy_query=True)
|
||||
|
||||
# Check if the fuzzy search retrieves relevant results despite the typo
|
||||
self.assertGreater(len(search.quotes), 0)
|
||||
self.assertIn("AAPL", search.quotes[0]['symbol'])
|
||||
|
||||
def test_quotes(self):
|
||||
search = yf.Search(query="AAPL", max_results=5)
|
||||
|
||||
self.assertEqual(len(search.quotes), 5)
|
||||
self.assertIn("AAPL", search.quotes[0]['symbol'])
|
||||
|
||||
def test_news(self):
|
||||
search = yf.Search(query="AAPL", news_count=3)
|
||||
|
||||
self.assertEqual(len(search.news), 3)
|
||||
|
||||
def test_research_reports(self):
|
||||
search = yf.Search(query="AAPL", include_research=True)
|
||||
self.assertEqual(len(search.research), 3)
|
||||
@@ -8,6 +8,8 @@ Specific test class:
|
||||
python -m unittest tests.ticker.TestTicker
|
||||
|
||||
"""
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from tests.context import yfinance as yf
|
||||
@@ -133,8 +135,55 @@ class TestTicker(unittest.TestCase):
|
||||
with self.assertRaises(YFInvalidPeriodError):
|
||||
dat.history(period="2wks", interval="1d", raise_errors=True)
|
||||
with self.assertRaises(YFInvalidPeriodError):
|
||||
dat.history(period="2mo", interval="1d", raise_errors=True)
|
||||
dat.history(period="2mos", interval="1d", raise_errors=True)
|
||||
|
||||
def test_valid_custom_periods(self):
|
||||
valid_periods = [
|
||||
# Yahoo provided periods
|
||||
("1d", "1m"), ("5d", "15m"), ("1mo", "1d"), ("3mo", "1wk"),
|
||||
("6mo", "1d"), ("1y", "1mo"), ("5y", "1wk"), ("max", "1mo"),
|
||||
|
||||
# Custom periods
|
||||
("2d", "30m"), ("10mo", "1d"), ("1y", "1d"), ("3y", "1d"),
|
||||
("2wk", "15m"), ("6mo", "5d"), ("10y", "1wk")
|
||||
]
|
||||
|
||||
tkr = "AAPL"
|
||||
dat = yf.Ticker(tkr, session=self.session)
|
||||
|
||||
for period, interval in valid_periods:
|
||||
with self.subTest(period=period, interval=interval):
|
||||
df = dat.history(period=period, interval=interval, raise_errors=True)
|
||||
self.assertIsInstance(df, pd.DataFrame)
|
||||
self.assertFalse(df.empty, f"No data returned for period={period}, interval={interval}")
|
||||
self.assertIn("Close", df.columns, f"'Close' column missing for period={period}, interval={interval}")
|
||||
|
||||
# Validate date range
|
||||
now = datetime.now()
|
||||
if period != "max": # Difficult to assert for "max", therefore we skip
|
||||
if period.endswith("d"):
|
||||
days = int(period[:-1])
|
||||
expected_start = now - timedelta(days=days)
|
||||
elif period.endswith("mo"):
|
||||
months = int(period[:-2])
|
||||
expected_start = now - timedelta(days=30 * months)
|
||||
elif period.endswith("y"):
|
||||
years = int(period[:-1])
|
||||
expected_start = now - timedelta(days=365 * years)
|
||||
elif period.endswith("wk"):
|
||||
weeks = int(period[:-2])
|
||||
expected_start = now - timedelta(weeks=weeks)
|
||||
else:
|
||||
continue
|
||||
|
||||
actual_start = df.index[0].to_pydatetime().replace(tzinfo=None)
|
||||
expected_start = expected_start.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
|
||||
# leeway added because of weekends
|
||||
self.assertGreaterEqual(actual_start, expected_start - timedelta(days=10),
|
||||
f"Start date {actual_start} out of range for period={period}")
|
||||
self.assertLessEqual(df.index[-1].to_pydatetime().replace(tzinfo=None), now,
|
||||
f"End date {df.index[-1]} out of range for period={period}")
|
||||
|
||||
def test_prices_missing(self):
|
||||
# this test will need to be updated every time someone wants to run a test
|
||||
@@ -216,11 +265,24 @@ class TestTickerHistory(unittest.TestCase):
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
|
||||
def test_download(self):
|
||||
tomorrow = pd.Timestamp.now().date() + pd.Timedelta(days=1) # helps with caching
|
||||
for t in [False, True]:
|
||||
for i in [False, True]:
|
||||
data = yf.download(self.symbols, threads=t, ignore_tz=i)
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
for m in [False, True]:
|
||||
for n in [1, 'all']:
|
||||
symbols = self.symbols[0] if n == 1 else self.symbols
|
||||
data = yf.download(symbols, end=tomorrow, session=self.session,
|
||||
threads=t, ignore_tz=i, multi_level_index=m)
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
if i:
|
||||
self.assertIsNone(data.index.tz)
|
||||
else:
|
||||
self.assertIsNotNone(data.index.tz)
|
||||
if (not m) and n == 1:
|
||||
self.assertFalse(isinstance(data.columns, pd.MultiIndex))
|
||||
else:
|
||||
self.assertIsInstance(data.columns, pd.MultiIndex)
|
||||
|
||||
def test_no_expensive_calls_introduced(self):
|
||||
"""
|
||||
@@ -246,14 +308,13 @@ class TestTickerHistory(unittest.TestCase):
|
||||
actual_urls_called[i] = u
|
||||
actual_urls_called = tuple(actual_urls_called)
|
||||
|
||||
expected_urls = (
|
||||
f"https://query2.finance.yahoo.com/v8/finance/chart/{symbol}?events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&range={period}",
|
||||
)
|
||||
self.assertEqual(
|
||||
expected_urls,
|
||||
actual_urls_called,
|
||||
"Different than expected url used to fetch history."
|
||||
)
|
||||
expected_urls = [
|
||||
f"https://query2.finance.yahoo.com/v8/finance/chart/{symbol}?interval=1d&range=1d", # ticker's tz
|
||||
f"https://query2.finance.yahoo.com/v8/finance/chart/{symbol}?events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&range={period}"
|
||||
]
|
||||
for url in actual_urls_called:
|
||||
self.assertTrue(url in expected_urls, f"Unexpected URL called: {url}")
|
||||
|
||||
def test_dividends(self):
|
||||
data = self.ticker.dividends
|
||||
self.assertIsInstance(data, pd.Series, "data has wrong type")
|
||||
@@ -296,7 +357,7 @@ class TestTickerEarnings(unittest.TestCase):
|
||||
def test_earnings_dates_with_limit(self):
|
||||
# use ticker with lots of historic earnings
|
||||
ticker = yf.Ticker("IBM")
|
||||
limit = 110
|
||||
limit = 100
|
||||
data = ticker.get_earnings_dates(limit=limit)
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
@@ -747,7 +808,7 @@ class TestTickerAnalysts(unittest.TestCase):
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
self.assertTrue(len(data.columns) == 4, "data has wrong number of columns")
|
||||
self.assertEqual(data.columns.values.tolist(), ['Firm', 'ToGrade', 'FromGrade', 'Action'], "data has wrong column names")
|
||||
self.assertCountEqual(data.columns.values.tolist(), ['Firm', 'ToGrade', 'FromGrade', 'Action'], "data has wrong column names")
|
||||
self.assertIsInstance(data.index, pd.DatetimeIndex, "data has wrong index type")
|
||||
|
||||
data_cached = self.ticker.upgrades_downgrades
|
||||
@@ -757,9 +818,6 @@ class TestTickerAnalysts(unittest.TestCase):
|
||||
data = self.ticker.analyst_price_targets
|
||||
self.assertIsInstance(data, dict, "data has wrong type")
|
||||
|
||||
keys = {'current', 'low', 'high', 'mean', 'median'}
|
||||
self.assertEqual(data.keys(), keys, "data has wrong keys")
|
||||
|
||||
data_cached = self.ticker.analyst_price_targets
|
||||
self.assertIs(data, data_cached, "data not cached")
|
||||
|
||||
@@ -768,12 +826,6 @@ class TestTickerAnalysts(unittest.TestCase):
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
|
||||
columns = ['numberOfAnalysts', 'avg', 'low', 'high', 'yearAgoEps', 'growth']
|
||||
self.assertEqual(data.columns.values.tolist(), columns, "data has wrong column names")
|
||||
|
||||
index = ['0q', '+1q', '0y', '+1y']
|
||||
self.assertEqual(data.index.values.tolist(), index, "data has wrong row names")
|
||||
|
||||
data_cached = self.ticker.earnings_estimate
|
||||
self.assertIs(data, data_cached, "data not cached")
|
||||
|
||||
@@ -782,12 +834,6 @@ class TestTickerAnalysts(unittest.TestCase):
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
|
||||
columns = ['numberOfAnalysts', 'avg', 'low', 'high', 'yearAgoRevenue', 'growth']
|
||||
self.assertEqual(data.columns.values.tolist(), columns, "data has wrong column names")
|
||||
|
||||
index = ['0q', '+1q', '0y', '+1y']
|
||||
self.assertEqual(data.index.values.tolist(), index, "data has wrong row names")
|
||||
|
||||
data_cached = self.ticker.revenue_estimate
|
||||
self.assertIs(data, data_cached, "data not cached")
|
||||
|
||||
@@ -796,8 +842,6 @@ class TestTickerAnalysts(unittest.TestCase):
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
|
||||
columns = ['epsEstimate', 'epsActual', 'epsDifference', 'surprisePercent']
|
||||
self.assertEqual(data.columns.values.tolist(), columns, "data has wrong column names")
|
||||
self.assertIsInstance(data.index, pd.DatetimeIndex, "data has wrong index type")
|
||||
|
||||
data_cached = self.ticker.earnings_history
|
||||
@@ -808,12 +852,6 @@ class TestTickerAnalysts(unittest.TestCase):
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
|
||||
columns = ['current', '7daysAgo', '30daysAgo', '60daysAgo', '90daysAgo']
|
||||
self.assertEqual(data.columns.values.tolist(), columns, "data has wrong column names")
|
||||
|
||||
index = ['0q', '+1q', '0y', '+1y']
|
||||
self.assertEqual(data.index.values.tolist(), index, "data has wrong row names")
|
||||
|
||||
data_cached = self.ticker.eps_trend
|
||||
self.assertIs(data, data_cached, "data not cached")
|
||||
|
||||
@@ -822,12 +860,6 @@ class TestTickerAnalysts(unittest.TestCase):
|
||||
self.assertIsInstance(data, pd.DataFrame, "data has wrong type")
|
||||
self.assertFalse(data.empty, "data is empty")
|
||||
|
||||
columns = ['stock', 'industry', 'sector', 'index']
|
||||
self.assertEqual(data.columns.values.tolist(), columns, "data has wrong column names")
|
||||
|
||||
index = ['0q', '+1q', '0y', '+1y', '+5y', '-5y']
|
||||
self.assertEqual(data.index.values.tolist(), index, "data has wrong row names")
|
||||
|
||||
data_cached = self.ticker.growth_estimates
|
||||
self.assertIs(data, data_cached, "data not cached")
|
||||
|
||||
|
||||
@@ -12,74 +12,10 @@ from datetime import datetime
|
||||
from unittest import TestSuite
|
||||
|
||||
import pandas as pd
|
||||
# import numpy as np
|
||||
|
||||
from tests.context import yfinance as yf
|
||||
|
||||
import unittest
|
||||
# import requests_cache
|
||||
import tempfile
|
||||
import os
|
||||
|
||||
|
||||
class TestCache(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.tempCacheDir = tempfile.TemporaryDirectory()
|
||||
yf.set_tz_cache_location(cls.tempCacheDir.name)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
cls.tempCacheDir.cleanup()
|
||||
|
||||
def test_storeTzNoRaise(self):
|
||||
# storing TZ to cache should never raise exception
|
||||
tkr = 'AMZN'
|
||||
tz1 = "America/New_York"
|
||||
tz2 = "London/Europe"
|
||||
cache = yf.cache.get_tz_cache()
|
||||
cache.store(tkr, tz1)
|
||||
cache.store(tkr, tz2)
|
||||
|
||||
def test_setTzCacheLocation(self):
|
||||
self.assertEqual(yf.cache._TzDBManager.get_location(), self.tempCacheDir.name)
|
||||
|
||||
tkr = 'AMZN'
|
||||
tz1 = "America/New_York"
|
||||
cache = yf.cache.get_tz_cache()
|
||||
cache.store(tkr, tz1)
|
||||
|
||||
self.assertTrue(os.path.exists(os.path.join(self.tempCacheDir.name, "tkr-tz.db")))
|
||||
|
||||
|
||||
class TestCacheNoPermission(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
yf.set_tz_cache_location("/root/yf-cache")
|
||||
|
||||
def test_tzCacheRootStore(self):
|
||||
# Test that if cache path in read-only filesystem, no exception.
|
||||
tkr = 'AMZN'
|
||||
tz1 = "America/New_York"
|
||||
|
||||
# During attempt to store, will discover cannot write
|
||||
yf.cache.get_tz_cache().store(tkr, tz1)
|
||||
|
||||
# Handling the store failure replaces cache with a dummy
|
||||
cache = yf.cache.get_tz_cache()
|
||||
self.assertTrue(cache.dummy)
|
||||
cache.store(tkr, tz1)
|
||||
|
||||
def test_tzCacheRootLookup(self):
|
||||
# Test that if cache path in read-only filesystem, no exception.
|
||||
tkr = 'AMZN'
|
||||
# During attempt to lookup, will discover cannot write
|
||||
yf.cache.get_tz_cache().lookup(tkr)
|
||||
|
||||
# Handling the lookup failure replaces cache with a dummy
|
||||
cache = yf.cache.get_tz_cache()
|
||||
self.assertTrue(cache.dummy)
|
||||
cache.lookup(tkr)
|
||||
from yfinance.utils import is_valid_period_format
|
||||
|
||||
|
||||
class TestPandas(unittest.TestCase):
|
||||
@@ -105,11 +41,30 @@ class TestPandas(unittest.TestCase):
|
||||
i += 1
|
||||
|
||||
|
||||
class TestUtils(unittest.TestCase):
|
||||
def test_is_valid_period_format_valid(self):
|
||||
self.assertTrue(is_valid_period_format("1d"))
|
||||
self.assertTrue(is_valid_period_format("5wk"))
|
||||
self.assertTrue(is_valid_period_format("12mo"))
|
||||
self.assertTrue(is_valid_period_format("2y"))
|
||||
|
||||
def test_is_valid_period_format_invalid(self):
|
||||
self.assertFalse(is_valid_period_format("1m")) # Incorrect suffix
|
||||
self.assertFalse(is_valid_period_format("2wks")) # Incorrect suffix
|
||||
self.assertFalse(is_valid_period_format("10")) # Missing suffix
|
||||
self.assertFalse(is_valid_period_format("abc")) # Invalid string
|
||||
self.assertFalse(is_valid_period_format("")) # Empty string
|
||||
|
||||
def test_is_valid_period_format_edge_cases(self):
|
||||
self.assertFalse(is_valid_period_format(None)) # None input
|
||||
self.assertFalse(is_valid_period_format("0d")) # Zero is invalid
|
||||
self.assertTrue(is_valid_period_format("999mo")) # Large number valid
|
||||
|
||||
|
||||
def suite():
|
||||
ts: TestSuite = unittest.TestSuite()
|
||||
ts.addTest(TestCache('Test cache'))
|
||||
ts.addTest(TestCacheNoPermission('Test cache no permission'))
|
||||
ts.addTest(TestPandas("Test pandas"))
|
||||
ts.addTest(TestUtils("Test utils"))
|
||||
return ts
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#
|
||||
|
||||
from . import version
|
||||
from .search import Search
|
||||
from .ticker import Ticker
|
||||
from .tickers import Tickers
|
||||
from .multi import download
|
||||
@@ -27,8 +28,10 @@ from .utils import enable_debug_mode
|
||||
from .cache import set_tz_cache_location
|
||||
from .domain.sector import Sector
|
||||
from .domain.industry import Industry
|
||||
from .screener.screener import Screener
|
||||
from .screener.screener_query import EquityQuery
|
||||
from .domain.market import Market
|
||||
|
||||
from .screener.query import EquityQuery, FundQuery
|
||||
from .screener.screener import screen, PREDEFINED_SCREENER_QUERIES
|
||||
|
||||
__version__ = version.version
|
||||
__author__ = "Ran Aroussi"
|
||||
@@ -36,5 +39,6 @@ __author__ = "Ran Aroussi"
|
||||
import warnings
|
||||
warnings.filterwarnings('default', category=DeprecationWarning, module='^yfinance')
|
||||
|
||||
__all__ = ['download', 'Ticker', 'Tickers', 'enable_debug_mode', 'set_tz_cache_location', 'Sector', 'Industry',
|
||||
'EquityQuery','Screener']
|
||||
__all__ = ['download', 'Market', 'Search', 'Ticker', 'Tickers', 'enable_debug_mode', 'set_tz_cache_location', 'Sector', 'Industry']
|
||||
# screener stuff:
|
||||
__all__ += ['EquityQuery', 'FundQuery', 'screen', 'PREDEFINED_SCREENER_QUERIES']
|
||||
168
yfinance/base.py
168
yfinance/base.py
@@ -21,18 +21,18 @@
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
from io import StringIO
|
||||
import json as _json
|
||||
import warnings
|
||||
from typing import Optional, Union
|
||||
from urllib.parse import quote as urlencode
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from . import utils, cache
|
||||
from .data import YfData
|
||||
from .exceptions import YFEarningsDateMissing
|
||||
from .exceptions import YFEarningsDateMissing, YFRateLimitError
|
||||
from .scrapers.analysis import Analysis
|
||||
from .scrapers.fundamentals import Fundamentals
|
||||
from .scrapers.holders import Holders
|
||||
@@ -40,7 +40,7 @@ from .scrapers.quote import Quote, FastInfo
|
||||
from .scrapers.history import PriceHistory
|
||||
from .scrapers.funds import FundsData
|
||||
|
||||
from .const import _BASE_URL_, _ROOT_URL_
|
||||
from .const import _BASE_URL_, _ROOT_URL_, _QUERY1_URL_
|
||||
|
||||
|
||||
class TickerBase:
|
||||
@@ -124,6 +124,9 @@ class TickerBase:
|
||||
try:
|
||||
data = self._data.cache_get(url=url, params=params, proxy=proxy, timeout=timeout)
|
||||
data = data.json()
|
||||
except YFRateLimitError:
|
||||
# Must propagate this
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to get ticker '{self.ticker}' reason: {e}")
|
||||
return None
|
||||
@@ -534,118 +537,117 @@ class TickerBase:
|
||||
self._isin = data.split(search_str)[1].split('"')[0].split('|')[0]
|
||||
return self._isin
|
||||
|
||||
def get_news(self, proxy=None) -> list:
|
||||
def get_news(self, count=10, tab="news", proxy=None) -> list:
|
||||
"""Allowed options for tab: "news", "all", "press releases"""
|
||||
if self._news:
|
||||
return self._news
|
||||
|
||||
# Getting data from json
|
||||
url = f"{_BASE_URL_}/v1/finance/search?q={self.ticker}"
|
||||
data = self._data.cache_get(url=url, proxy=proxy)
|
||||
logger = utils.get_yf_logger()
|
||||
|
||||
tab_queryrefs = {
|
||||
"all": "newsAll",
|
||||
"news": "latestNews",
|
||||
"press releases": "pressRelease",
|
||||
}
|
||||
|
||||
query_ref = tab_queryrefs.get(tab.lower())
|
||||
if not query_ref:
|
||||
raise ValueError(f"Invalid tab name '{tab}'. Choose from: {', '.join(tab_queryrefs.keys())}")
|
||||
|
||||
url = f"{_ROOT_URL_}/xhr/ncp?queryRef={query_ref}&serviceKey=ncp_fin"
|
||||
payload = {
|
||||
"serviceConfig": {
|
||||
"snippetCount": count,
|
||||
"s": [self.ticker]
|
||||
}
|
||||
}
|
||||
|
||||
data = self._data.post(url, body=payload, proxy=proxy)
|
||||
if data is None or "Will be right back" in data.text:
|
||||
raise RuntimeError("*** YAHOO! FINANCE IS CURRENTLY DOWN! ***\n"
|
||||
"Our engineers are working quickly to resolve "
|
||||
"the issue. Thank you for your patience.")
|
||||
try:
|
||||
data = data.json()
|
||||
except (_json.JSONDecodeError):
|
||||
logger = utils.get_yf_logger()
|
||||
except _json.JSONDecodeError:
|
||||
logger.error(f"{self.ticker}: Failed to retrieve the news and received faulty response instead.")
|
||||
data = {}
|
||||
|
||||
# parse news
|
||||
self._news = data.get("news", [])
|
||||
news = data.get("data", {}).get("tickerStream", {}).get("stream", [])
|
||||
|
||||
self._news = [article for article in news if not article.get('ad', [])]
|
||||
return self._news
|
||||
|
||||
@utils.log_indent_decorator
|
||||
def get_earnings_dates(self, limit=12, proxy=None) -> Optional[pd.DataFrame]:
|
||||
"""
|
||||
Get earning dates (future and historic)
|
||||
:param limit: max amount of upcoming and recent earnings dates to return.
|
||||
Default value 12 should return next 4 quarters and last 8 quarters.
|
||||
Increase if more history is needed.
|
||||
|
||||
:param proxy: requests proxy to use.
|
||||
:return: pandas dataframe
|
||||
|
||||
Args:
|
||||
limit (int): max amount of upcoming and recent earnings dates to return.
|
||||
Default value 12 should return next 4 quarters and last 8 quarters.
|
||||
Increase if more history is needed.
|
||||
proxy: requests proxy to use.
|
||||
|
||||
Returns:
|
||||
pd.DataFrame
|
||||
"""
|
||||
if self._earnings_dates and limit in self._earnings_dates:
|
||||
return self._earnings_dates[limit]
|
||||
|
||||
logger = utils.get_yf_logger()
|
||||
clamped_limit = min(limit, 100) # YF caps at 100, don't go higher
|
||||
|
||||
page_size = min(limit, 100) # YF caps at 100, don't go higher
|
||||
page_offset = 0
|
||||
dates = None
|
||||
while True:
|
||||
url = f"{_ROOT_URL_}/calendar/earnings?symbol={self.ticker}&offset={page_offset}&size={page_size}"
|
||||
data = self._data.cache_get(url=url, proxy=proxy).text
|
||||
if self._earnings_dates and clamped_limit in self._earnings_dates:
|
||||
return self._earnings_dates[clamped_limit]
|
||||
|
||||
if "Will be right back" in data:
|
||||
raise RuntimeError("*** YAHOO! FINANCE IS CURRENTLY DOWN! ***\n"
|
||||
"Our engineers are working quickly to resolve "
|
||||
"the issue. Thank you for your patience.")
|
||||
# Fetch data
|
||||
url = f"{_QUERY1_URL_}/v1/finance/visualization"
|
||||
params = {"lang": "en-US", "region": "US"}
|
||||
body = {
|
||||
"size": clamped_limit,
|
||||
"query": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{"operator": "eq", "operands": ["ticker", self.ticker]},
|
||||
{"operator": "eq", "operands": ["eventtype", "2"]}
|
||||
]
|
||||
},
|
||||
"sortField": "startdatetime",
|
||||
"sortType": "DESC",
|
||||
"entityIdType": "earnings",
|
||||
"includeFields": ["startdatetime", "timeZoneShortName", "epsestimate", "epsactual", "epssurprisepct"]
|
||||
}
|
||||
response = self._data.post(url, params=params, body=body, proxy=proxy)
|
||||
json_data = response.json()
|
||||
|
||||
try:
|
||||
data = pd.read_html(StringIO(data))[0]
|
||||
except ValueError:
|
||||
if page_offset == 0:
|
||||
# Should not fail on first page
|
||||
if "Showing Earnings for:" in data:
|
||||
# Actually YF was successful, problem is company doesn't have earnings history
|
||||
dates = utils.empty_earnings_dates_df()
|
||||
break
|
||||
if dates is None:
|
||||
dates = data
|
||||
else:
|
||||
dates = pd.concat([dates, data], axis=0)
|
||||
# Extract data
|
||||
columns = [row['label'] for row in json_data['finance']['result'][0]['documents'][0]['columns']]
|
||||
rows = json_data['finance']['result'][0]['documents'][0]['rows']
|
||||
df = pd.DataFrame(rows, columns=columns)
|
||||
|
||||
page_offset += page_size
|
||||
# got less data then we asked for or already fetched all we requested, no need to fetch more pages
|
||||
if len(data) < page_size or len(dates) >= limit:
|
||||
dates = dates.iloc[:limit]
|
||||
break
|
||||
else:
|
||||
# do not fetch more than needed next time
|
||||
page_size = min(limit - len(dates), page_size)
|
||||
|
||||
if dates is None or dates.shape[0] == 0:
|
||||
if df.empty:
|
||||
_exception = YFEarningsDateMissing(self.ticker)
|
||||
err_msg = str(_exception)
|
||||
logger.error(f'{self.ticker}: {err_msg}')
|
||||
return None
|
||||
dates = dates.reset_index(drop=True)
|
||||
|
||||
# Drop redundant columns
|
||||
dates = dates.drop(["Symbol", "Company"], axis=1)
|
||||
# Calculate earnings date
|
||||
df['Earnings Date'] = pd.to_datetime(df['Event Start Date']).dt.normalize()
|
||||
tz = self._get_ticker_tz(proxy=proxy, timeout=30)
|
||||
if df['Earnings Date'].dt.tz is None:
|
||||
df['Earnings Date'] = df['Earnings Date'].dt.tz_localize(tz)
|
||||
else:
|
||||
df['Earnings Date'] = df['Earnings Date'].dt.tz_convert(tz)
|
||||
|
||||
# Convert types
|
||||
for cn in ["EPS Estimate", "Reported EPS", "Surprise(%)"]:
|
||||
dates.loc[dates[cn] == '-', cn] = float("nan")
|
||||
dates[cn] = dates[cn].astype(float)
|
||||
columns_to_update = ['Surprise (%)', 'EPS Estimate', 'Reported EPS']
|
||||
df[columns_to_update] = df[columns_to_update].astype('float64').replace(0.0, np.nan)
|
||||
|
||||
# Convert % to range 0->1:
|
||||
dates["Surprise(%)"] *= 0.01
|
||||
# Format the dataframe
|
||||
df.drop(['Event Start Date', 'Timezone short name'], axis=1, inplace=True)
|
||||
df.set_index('Earnings Date', inplace=True)
|
||||
df.rename(columns={'Surprise (%)': 'Surprise(%)'}, inplace=True) # Compatibility
|
||||
|
||||
# Parse earnings date string
|
||||
cn = "Earnings Date"
|
||||
# - remove AM/PM and timezone from date string
|
||||
tzinfo = dates[cn].str.extract('([AP]M[a-zA-Z]*)$')
|
||||
dates[cn] = dates[cn].replace(' [AP]M[a-zA-Z]*$', '', regex=True)
|
||||
# - split AM/PM from timezone
|
||||
tzinfo = tzinfo[0].str.extract('([AP]M)([a-zA-Z]*)', expand=True)
|
||||
tzinfo.columns = ["AM/PM", "TZ"]
|
||||
# - combine and parse
|
||||
dates[cn] = dates[cn] + ' ' + tzinfo["AM/PM"]
|
||||
dates[cn] = pd.to_datetime(dates[cn], format="%b %d, %Y, %I %p")
|
||||
# - instead of attempting decoding of ambiguous timezone abbreviation, just use 'info':
|
||||
self._quote.proxy = proxy or self.proxy
|
||||
tz = self._get_ticker_tz(proxy=proxy, timeout=30)
|
||||
dates[cn] = dates[cn].dt.tz_localize(tz)
|
||||
|
||||
dates = dates.set_index("Earnings Date")
|
||||
|
||||
self._earnings_dates[limit] = dates
|
||||
|
||||
return dates
|
||||
self._earnings_dates[clamped_limit] = df
|
||||
return df
|
||||
|
||||
def get_history_metadata(self, proxy=None) -> dict:
|
||||
return self._lazy_load_price_history().get_history_metadata(proxy)
|
||||
@@ -654,4 +656,4 @@ class TickerBase:
|
||||
if not self._funds_data:
|
||||
self._funds_data = FundsData(self._data, self.ticker)
|
||||
|
||||
return self._funds_data
|
||||
return self._funds_data
|
||||
|
||||
@@ -305,21 +305,92 @@ SECTOR_INDUSTY_MAPPING = {
|
||||
'utilities-independent-power-producers',
|
||||
'utilities-regulated-water'}
|
||||
}
|
||||
|
||||
def merge_two_level_dicts(dict1, dict2):
|
||||
result = dict1.copy()
|
||||
for key, value in dict2.items():
|
||||
if key in result:
|
||||
# If both are sets, merge them
|
||||
if isinstance(value, set) and isinstance(result[key], set):
|
||||
result[key] = result[key] | value
|
||||
# If both are dicts, merge their contents
|
||||
elif isinstance(value, dict) and isinstance(result[key], dict):
|
||||
result[key] = {
|
||||
k: (result[key].get(k, set()) | v if isinstance(v, set)
|
||||
else v) if k in result[key]
|
||||
else v
|
||||
for k, v in value.items()
|
||||
}
|
||||
else:
|
||||
result[key] = value
|
||||
return result
|
||||
|
||||
EQUITY_SCREENER_EQ_MAP = {
|
||||
"region": {
|
||||
"za", "ve", "vn", "us", "tw", "th", "tr", "sr", "sg", "sa", "se", "ru", "ro", "qa", "pt", "pk", "pl",
|
||||
"ph", "nz", "nl", "mx", "pe", "no", "my", "lv", "lt", "kw", "jp", "is", "il", "lk", "kr", "it", "in",
|
||||
"ie", "hu", "id", "hk", "gb", "fi", "eg", "dk", "gr", "fr", "es", "ee", "de", "cz", "cl", "ca", "be",
|
||||
"at", "cn", "br", "au", "ar", "ch"
|
||||
"exchange": {
|
||||
'ar': {'BUE'},
|
||||
'at': {'VIE'},
|
||||
'au': {'ASX'},
|
||||
'be': {'BRU'},
|
||||
'br': {'SAO'},
|
||||
'ca': {'CNQ', 'NEO', 'TOR', 'VAN'},
|
||||
'ch': {'EBS'},
|
||||
'cl': {'SGO'},
|
||||
'cn': {'SHH', 'SHZ'},
|
||||
'co': {'BVC'},
|
||||
'cz': {'PRA'},
|
||||
'de': {'BER', 'DUS', 'FRA', 'HAM', 'GER', 'MUN', 'STU'},
|
||||
'dk': {'CPH'},
|
||||
'ee': {'TAL'},
|
||||
'eg': {'CAI'},
|
||||
'es': {'MCE'},
|
||||
'fi': {'HEL'},
|
||||
'fr': {'PAR'},
|
||||
'gb': {'AQS', 'IOB', 'LSE'},
|
||||
'gr': {'ATH'},
|
||||
'hk': {'HKG'},
|
||||
'hu': {'BUD'},
|
||||
'id': {'JKT'},
|
||||
'ie': {'ISE'},
|
||||
'il': {'TLV'},
|
||||
'in': {'BSE', 'NSI'},
|
||||
'is': {'ICE'},
|
||||
'it': {'MIL'},
|
||||
'jp': {'FKA', 'JPX', 'SAP'},
|
||||
'kr': {'KOE', 'KSC'},
|
||||
'kw': {'KUW'},
|
||||
'lk': {},
|
||||
'lt': {'LIT'},
|
||||
'lv': {'RIS'},
|
||||
'mx': {'MEX'},
|
||||
'my': {'KLS'},
|
||||
'nl': {'AMS'},
|
||||
'no': {'OSL'},
|
||||
'nz': {'NZE'},
|
||||
'pe': {},
|
||||
'ph': {'PHP', 'PHS'},
|
||||
'pk': {},
|
||||
'pl': {'WSE'},
|
||||
'pt': {'LIS'},
|
||||
'qa': {'DOH'},
|
||||
'ro': {'BVB'},
|
||||
'ru': {},
|
||||
'sa': {'SAU'},
|
||||
'se': {'STO'},
|
||||
'sg': {'SES'},
|
||||
'sr': {},
|
||||
'th': {'SET'},
|
||||
'tr': {'IST'},
|
||||
'tw': {'TAI', 'TWO'},
|
||||
'us': {'ASE', 'BTS', 'CXI', 'NCM', 'NGM', 'NMS', 'NYQ', 'OEM', 'OQB', 'OQX', 'PCX', 'PNK', 'YHD'},
|
||||
've': {'CCS'},
|
||||
'vn': {},
|
||||
'za': {'JNB'}
|
||||
},
|
||||
"sector": {
|
||||
"Basic Materials", "Industrials", "Communication Services", "Healthcare",
|
||||
"Real Estate", "Technology", "Energy", "Utilities", "Financial Services",
|
||||
"Consumer Defensive", "Consumer Cyclical"
|
||||
},
|
||||
"exchanges": {
|
||||
"NMS", "NAS", "YHD", "NYQ", "NGM", "NCM", "BSE"
|
||||
},
|
||||
"peer_group": {
|
||||
"US Fund Equity Energy",
|
||||
"US CE Convertibles",
|
||||
@@ -426,136 +497,130 @@ EQUITY_SCREENER_EQ_MAP = {
|
||||
"Banks"
|
||||
}
|
||||
}
|
||||
EQUITY_SCREENER_FIELDS = {
|
||||
# EQ Fields
|
||||
"region",
|
||||
"sector",
|
||||
"peer_group",
|
||||
"exchanges",
|
||||
|
||||
# price
|
||||
"eodprice",
|
||||
"intradaypricechange",
|
||||
"lastclosemarketcap.lasttwelvemonths",
|
||||
"percentchange",
|
||||
"lastclose52weekhigh.lasttwelvemonths",
|
||||
"fiftytwowkpercentchange",
|
||||
"intradayprice",
|
||||
"lastclose52weeklow.lasttwelvemonths",
|
||||
"intradaymarketcap",
|
||||
|
||||
# trading
|
||||
"beta",
|
||||
"avgdailyvol3m",
|
||||
"pctheldinsider",
|
||||
"pctheldinst",
|
||||
"dayvolume",
|
||||
"eodvolume",
|
||||
|
||||
# short interest
|
||||
"short_percentage_of_shares_outstanding.value",
|
||||
"short_interest.value",
|
||||
"short_percentage_of_float.value",
|
||||
"days_to_cover_short.value",
|
||||
"short_interest_percentage_change.value",
|
||||
|
||||
# valuation
|
||||
"bookvalueshare.lasttwelvemonths",
|
||||
"lastclosemarketcaptotalrevenue.lasttwelvemonths",
|
||||
"lastclosetevtotalrevenue.lasttwelvemonths",
|
||||
"pricebookratio.quarterly",
|
||||
"peratio.lasttwelvemonths",
|
||||
"lastclosepricetangiblebookvalue.lasttwelvemonths",
|
||||
"lastclosepriceearnings.lasttwelvemonths",
|
||||
"pegratio_5y",
|
||||
|
||||
# profitability
|
||||
"consecutive_years_of_dividend_growth_count",
|
||||
"returnonassets.lasttwelvemonths",
|
||||
"returnonequity.lasttwelvemonths",
|
||||
"forward_dividend_per_share",
|
||||
"forward_dividend_yield",
|
||||
"returnontotalcapital.lasttwelvemonths",
|
||||
|
||||
# leverage
|
||||
"lastclosetevebit.lasttwelvemonths",
|
||||
"netdebtebitda.lasttwelvemonths",
|
||||
"totaldebtequity.lasttwelvemonths",
|
||||
"ltdebtequity.lasttwelvemonths",
|
||||
"ebitinterestexpense.lasttwelvemonths",
|
||||
"ebitdainterestexpense.lasttwelvemonths",
|
||||
"lastclosetevebitda.lasttwelvemonths",
|
||||
"totaldebtebitda.lasttwelvemonths",
|
||||
|
||||
# liquidity
|
||||
"quickratio.lasttwelvemonths",
|
||||
"altmanzscoreusingtheaveragestockinformationforaperiod.lasttwelvemonths",
|
||||
"currentratio.lasttwelvemonths",
|
||||
"operatingcashflowtocurrentliabilities.lasttwelvemonths",
|
||||
|
||||
# income statement
|
||||
"totalrevenues.lasttwelvemonths",
|
||||
"netincomemargin.lasttwelvemonths",
|
||||
"grossprofit.lasttwelvemonths",
|
||||
"ebitda1yrgrowth.lasttwelvemonths",
|
||||
"dilutedepscontinuingoperations.lasttwelvemonths",
|
||||
"quarterlyrevenuegrowth.quarterly",
|
||||
"epsgrowth.lasttwelvemonths",
|
||||
"netincomeis.lasttwelvemonths",
|
||||
"ebitda.lasttwelvemonths",
|
||||
"dilutedeps1yrgrowth.lasttwelvemonths",
|
||||
"totalrevenues1yrgrowth.lasttwelvemonths",
|
||||
"operatingincome.lasttwelvemonths",
|
||||
"netincome1yrgrowth.lasttwelvemonths",
|
||||
"grossprofitmargin.lasttwelvemonths",
|
||||
"ebitdamargin.lasttwelvemonths",
|
||||
"ebit.lasttwelvemonths",
|
||||
"basicepscontinuingoperations.lasttwelvemonths",
|
||||
"netepsbasic.lasttwelvemonths"
|
||||
"netepsdiluted.lasttwelvemonths",
|
||||
|
||||
# balance sheet
|
||||
"totalassets.lasttwelvemonths",
|
||||
"totalcommonsharesoutstanding.lasttwelvemonths",
|
||||
"totaldebt.lasttwelvemonths",
|
||||
"totalequity.lasttwelvemonths",
|
||||
"totalcurrentassets.lasttwelvemonths",
|
||||
"totalcashandshortterminvestments.lasttwelvemonths",
|
||||
"totalcommonequity.lasttwelvemonths",
|
||||
"totalcurrentliabilities.lasttwelvemonths",
|
||||
"totalsharesoutstanding",
|
||||
|
||||
# cash flow
|
||||
"forward_dividend_yield",
|
||||
"leveredfreecashflow.lasttwelvemonths",
|
||||
"capitalexpenditure.lasttwelvemonths",
|
||||
"cashfromoperations.lasttwelvemonths",
|
||||
"leveredfreecashflow1yrgrowth.lasttwelvemonths",
|
||||
"unleveredfreecashflow.lasttwelvemonths",
|
||||
"cashfromoperations1yrgrowth.lasttwelvemonths",
|
||||
|
||||
# ESG
|
||||
"esg_score",
|
||||
"environmental_score",
|
||||
"governance_score",
|
||||
"social_score",
|
||||
"highest_controversy"
|
||||
EQUITY_SCREENER_EQ_MAP['region'] = EQUITY_SCREENER_EQ_MAP['exchange'].keys()
|
||||
ordered_keys = ['region'] + [k for k in EQUITY_SCREENER_EQ_MAP.keys() if k != 'region']
|
||||
EQUITY_SCREENER_EQ_MAP = {k:EQUITY_SCREENER_EQ_MAP[k] for k in ordered_keys}
|
||||
FUND_SCREENER_EQ_MAP = {
|
||||
"exchange": {
|
||||
'us': {'NAS'}
|
||||
}
|
||||
}
|
||||
|
||||
PREDEFINED_SCREENER_BODY_MAP = {
|
||||
'aggressive_small_caps': {"offset":0,"size":25,"sortField":"eodvolume","sortType":"desc","quoteType":"equity","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NMS"]},{"operator":"eq","operands":["exchange","NYQ"]}]},{"operator":"or","operands":[{"operator":"LT","operands":["epsgrowth.lasttwelvemonths",15]}]}]},"userId":"","userIdType":"guid"},
|
||||
'day_gainers': {"offset":0,"size":25,"sortField":"percentchange","sortType":"DESC","quoteType":"EQUITY","query":{"operator":"AND","operands":[{"operator":"gt","operands":["percentchange",3]},{"operator":"eq","operands":["region","us"]},{"operator":"or","operands":[{"operator":"BTWN","operands":["intradaymarketcap",2000000000,10000000000]},{"operator":"BTWN","operands":["intradaymarketcap",10000000000,100000000000]},{"operator":"GT","operands":["intradaymarketcap",100000000000]}]},{"operator":"gte","operands":["intradayprice",5]},{"operator":"gt","operands":["dayvolume",15000]}]},"userId":"","userIdType":"guid"},
|
||||
'day_losers': {"offset":0,"size":25,"sortField":"percentchange","sortType":"ASC","quoteType":"EQUITY","query":{"operator":"AND","operands":[{"operator":"lt","operands":["percentchange",-2.5]},{"operator":"eq","operands":["region","us"]},{"operator":"or","operands":[{"operator":"BTWN","operands":["intradaymarketcap",2000000000,10000000000]},{"operator":"BTWN","operands":["intradaymarketcap",10000000000,100000000000]},{"operator":"GT","operands":["intradaymarketcap",100000000000]}]},{"operator":"gte","operands":["intradayprice",5]},{"operator":"gt","operands":["dayvolume",20000]}]},"userId":"","userIdType":"guid"},
|
||||
'growth_technology_stocks': {"offset":0,"size":25,"sortField":"eodvolume","sortType":"desc","quoteType":"equity","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"BTWN","operands":["quarterlyrevenuegrowth.quarterly",50,100]},{"operator":"GT","operands":["quarterlyrevenuegrowth.quarterly",100]},{"operator":"BTWN","operands":["quarterlyrevenuegrowth.quarterly",25,50]}]},{"operator":"or","operands":[{"operator":"BTWN","operands":["epsgrowth.lasttwelvemonths",25,50]},{"operator":"BTWN","operands":["epsgrowth.lasttwelvemonths",50,100]},{"operator":"GT","operands":["epsgrowth.lasttwelvemonths",100]}]},{"operator":"eq","operands":["sector","Technology"]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NMS"]},{"operator":"eq","operands":["exchange","NYQ"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'most_actives': {"offset":0,"size":25,"sortField":"dayvolume","sortType":"DESC","quoteType":"EQUITY","query":{"operator":"AND","operands":[{"operator":"eq","operands":["region","us"]},{"operator":"or","operands":[{"operator":"BTWN","operands":["intradaymarketcap",10000000000,100000000000]},{"operator":"GT","operands":["intradaymarketcap",100000000000]},{"operator":"BTWN","operands":["intradaymarketcap",2000000000,10000000000]}]},{"operator":"gt","operands":["dayvolume",5000000]}]},"userId":"","userIdType":"guid"},
|
||||
'most_shorted_stocks': {"size":25,"offset":0,"sortField":"short_percentage_of_shares_outstanding.value","sortType":"DESC","quoteType":"EQUITY","topOperator":"AND","query":{"operator":"AND","operands":[{"operator":"or","operands":[{"operator":"EQ","operands":["region","us"]}]},{"operator":"gt","operands":["intradayprice",1]},{"operator":"gt","operands":["avgdailyvol3m",200000]}]},"userId":"","userIdType":"guid"},
|
||||
'small_cap_gainers': {"offset":0,"size":25,"sortField":"eodvolume","sortType":"desc","quoteType":"equity","query":{"operator":"and","operands":[{"operator":"lt","operands":["intradaymarketcap",2000000000]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NMS"]},{"operator":"eq","operands":["exchange","NYQ"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'undervalued_growth_stocks': {"offset":0,"size":25,"sortType":"DESC","sortField":"eodvolume","quoteType":"EQUITY","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"BTWN","operands":["peratio.lasttwelvemonths",0,20]}]},{"operator":"or","operands":[{"operator":"LT","operands":["pegratio_5y",1]}]},{"operator":"or","operands":[{"operator":"BTWN","operands":["epsgrowth.lasttwelvemonths",25,50]},{"operator":"BTWN","operands":["epsgrowth.lasttwelvemonths",50,100]},{"operator":"GT","operands":["epsgrowth.lasttwelvemonths",100]}]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NMS"]},{"operator":"eq","operands":["exchange","NYQ"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'undervalued_large_caps': {"offset":0,"size":25,"sortField":"eodvolume","sortType":"desc","quoteType":"equity","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"BTWN","operands":["peratio.lasttwelvemonths",0,20]}]},{"operator":"lt","operands":["pegratio_5y",1]},{"operator":"btwn","operands":["intradaymarketcap",10000000000,100000000000]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NMS"]},{"operator":"eq","operands":["exchange","NYQ"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'conservative_foreign_funds': {"offset":0,"size":25,"sortType":"DESC","sortField":"fundnetassets","quoteType":"MUTUALFUND","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"EQ","operands":["categoryname","Foreign Large Value"]},{"operator":"EQ","operands":["categoryname","Foreign Large Blend"]},{"operator":"EQ","operands":["categoryname","Foreign Large Growth"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Growth"]},{"operator":"EQ","operands":["categoryname","Foreign Large Blend"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Blend"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Value"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Blend"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Value"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Blend"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Value"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Blend"]},{"operator":"EQ","operands":["categoryname","Foreign Small/Mid Value"]}]},{"operator":"or","operands":[{"operator":"EQ","operands":["performanceratingoverall",4]},{"operator":"EQ","operands":["performanceratingoverall",5]}]},{"operator":"lt","operands":["initialinvestment",100001]},{"operator":"lt","operands":["annualreturnnavy1categoryrank",50]},{"operator":"or","operands":[{"operator":"EQ","operands":["riskratingoverall",1]},{"operator":"EQ","operands":["riskratingoverall",3]},{"operator":"EQ","operands":["riskratingoverall",2]}]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NAS"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'high_yield_bond': {"offset":0,"size":25,"sortType":"DESC","sortField":"fundnetassets","quoteType":"MUTUALFUND","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"EQ","operands":["performanceratingoverall",4]},{"operator":"EQ","operands":["performanceratingoverall",5]}]},{"operator":"lt","operands":["initialinvestment",100001]},{"operator":"lt","operands":["annualreturnnavy1categoryrank",50]},{"operator":"or","operands":[{"operator":"EQ","operands":["riskratingoverall",1]},{"operator":"EQ","operands":["riskratingoverall",3]},{"operator":"EQ","operands":["riskratingoverall",2]}]},{"operator":"or","operands":[{"operator":"EQ","operands":["categoryname","High Yield Bond"]}]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NAS"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'portfolio_anchors': {"offset":0,"size":25,"sortType":"DESC","sortField":"fundnetassets","quoteType":"MUTUALFUND","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"EQ","operands":["categoryname","Large Blend"]}]},{"operator":"or","operands":[{"operator":"EQ","operands":["performanceratingoverall",4]},{"operator":"EQ","operands":["performanceratingoverall",5]}]},{"operator":"lt","operands":["initialinvestment",100001]},{"operator":"lt","operands":["annualreturnnavy1categoryrank",50]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NAS"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'solid_large_growth_funds': {"offset":0,"size":25,"sortType":"DESC","sortField":"fundnetassets","quoteType":"MUTUALFUND","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"EQ","operands":["categoryname","Large Growth"]}]},{"operator":"or","operands":[{"operator":"EQ","operands":["performanceratingoverall",5]},{"operator":"EQ","operands":["performanceratingoverall",4]}]},{"operator":"lt","operands":["initialinvestment",100001]},{"operator":"lt","operands":["annualreturnnavy1categoryrank",50]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NAS"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'solid_midcap_growth_funds': {"offset":0,"size":25,"sortType":"DESC","sortField":"fundnetassets","quoteType":"MUTUALFUND","query":{"operator":"and","operands":[{"operator":"or","operands":[{"operator":"EQ","operands":["categoryname","Mid-Cap Growth"]}]},{"operator":"or","operands":[{"operator":"EQ","operands":["performanceratingoverall",5]},{"operator":"EQ","operands":["performanceratingoverall",4]}]},{"operator":"lt","operands":["initialinvestment",100001]},{"operator":"lt","operands":["annualreturnnavy1categoryrank",50]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NAS"]}]}]},"userId":"","userIdType":"guid"},
|
||||
'top_mutual_funds': {"offset":0,"size":25,"sortType":"DESC","sortField":"percentchange","quoteType":"MUTUALFUND","query":{"operator":"and","operands":[{"operator":"gt","operands":["intradayprice",15]},{"operator":"or","operands":[{"operator":"EQ","operands":["performanceratingoverall",5]},{"operator":"EQ","operands":["performanceratingoverall",4]}]},{"operator":"gt","operands":["initialinvestment",1000]},{"operator":"or","operands":[{"operator":"eq","operands":["exchange","NAS"]}]}]},"userId":"","userIdType":"guid"}
|
||||
}
|
||||
COMMON_SCREENER_FIELDS = {
|
||||
"price":{
|
||||
"eodprice",
|
||||
"intradaypricechange",
|
||||
"intradayprice"
|
||||
},
|
||||
"eq_fields": {
|
||||
"exchange"},
|
||||
}
|
||||
FUND_SCREENER_FIELDS = {
|
||||
"eq_fields": {
|
||||
"categoryname",
|
||||
"performanceratingoverall",
|
||||
"initialinvestment",
|
||||
"annualreturnnavy1categoryrank",
|
||||
"riskratingoverall"}
|
||||
}
|
||||
FUND_SCREENER_FIELDS = merge_two_level_dicts(FUND_SCREENER_FIELDS, COMMON_SCREENER_FIELDS)
|
||||
EQUITY_SCREENER_FIELDS = {
|
||||
"eq_fields": {
|
||||
"region",
|
||||
"sector",
|
||||
"peer_group"},
|
||||
"price":{
|
||||
"lastclosemarketcap.lasttwelvemonths",
|
||||
"percentchange",
|
||||
"lastclose52weekhigh.lasttwelvemonths",
|
||||
"fiftytwowkpercentchange",
|
||||
"lastclose52weeklow.lasttwelvemonths",
|
||||
"intradaymarketcap"},
|
||||
"trading":{
|
||||
"beta",
|
||||
"avgdailyvol3m",
|
||||
"pctheldinsider",
|
||||
"pctheldinst",
|
||||
"dayvolume",
|
||||
"eodvolume"},
|
||||
"short_interest":{
|
||||
"short_percentage_of_shares_outstanding.value",
|
||||
"short_interest.value",
|
||||
"short_percentage_of_float.value",
|
||||
"days_to_cover_short.value",
|
||||
"short_interest_percentage_change.value"},
|
||||
"valuation":{
|
||||
"bookvalueshare.lasttwelvemonths",
|
||||
"lastclosemarketcaptotalrevenue.lasttwelvemonths",
|
||||
"lastclosetevtotalrevenue.lasttwelvemonths",
|
||||
"pricebookratio.quarterly",
|
||||
"peratio.lasttwelvemonths",
|
||||
"lastclosepricetangiblebookvalue.lasttwelvemonths",
|
||||
"lastclosepriceearnings.lasttwelvemonths",
|
||||
"pegratio_5y"},
|
||||
"profitability":{
|
||||
"consecutive_years_of_dividend_growth_count",
|
||||
"returnonassets.lasttwelvemonths",
|
||||
"returnonequity.lasttwelvemonths",
|
||||
"forward_dividend_per_share",
|
||||
"forward_dividend_yield",
|
||||
"returnontotalcapital.lasttwelvemonths"},
|
||||
"leverage":{
|
||||
"lastclosetevebit.lasttwelvemonths",
|
||||
"netdebtebitda.lasttwelvemonths",
|
||||
"totaldebtequity.lasttwelvemonths",
|
||||
"ltdebtequity.lasttwelvemonths",
|
||||
"ebitinterestexpense.lasttwelvemonths",
|
||||
"ebitdainterestexpense.lasttwelvemonths",
|
||||
"lastclosetevebitda.lasttwelvemonths",
|
||||
"totaldebtebitda.lasttwelvemonths"},
|
||||
"liquidity":{
|
||||
"quickratio.lasttwelvemonths",
|
||||
"altmanzscoreusingtheaveragestockinformationforaperiod.lasttwelvemonths",
|
||||
"currentratio.lasttwelvemonths",
|
||||
"operatingcashflowtocurrentliabilities.lasttwelvemonths"},
|
||||
"income_statement":{
|
||||
"totalrevenues.lasttwelvemonths",
|
||||
"netincomemargin.lasttwelvemonths",
|
||||
"grossprofit.lasttwelvemonths",
|
||||
"ebitda1yrgrowth.lasttwelvemonths",
|
||||
"dilutedepscontinuingoperations.lasttwelvemonths",
|
||||
"quarterlyrevenuegrowth.quarterly",
|
||||
"epsgrowth.lasttwelvemonths",
|
||||
"netincomeis.lasttwelvemonths",
|
||||
"ebitda.lasttwelvemonths",
|
||||
"dilutedeps1yrgrowth.lasttwelvemonths",
|
||||
"totalrevenues1yrgrowth.lasttwelvemonths",
|
||||
"operatingincome.lasttwelvemonths",
|
||||
"netincome1yrgrowth.lasttwelvemonths",
|
||||
"grossprofitmargin.lasttwelvemonths",
|
||||
"ebitdamargin.lasttwelvemonths",
|
||||
"ebit.lasttwelvemonths",
|
||||
"basicepscontinuingoperations.lasttwelvemonths",
|
||||
"netepsbasic.lasttwelvemonths"
|
||||
"netepsdiluted.lasttwelvemonths"},
|
||||
"balance_sheet":{
|
||||
"totalassets.lasttwelvemonths",
|
||||
"totalcommonsharesoutstanding.lasttwelvemonths",
|
||||
"totaldebt.lasttwelvemonths",
|
||||
"totalequity.lasttwelvemonths",
|
||||
"totalcurrentassets.lasttwelvemonths",
|
||||
"totalcashandshortterminvestments.lasttwelvemonths",
|
||||
"totalcommonequity.lasttwelvemonths",
|
||||
"totalcurrentliabilities.lasttwelvemonths",
|
||||
"totalsharesoutstanding"},
|
||||
"cash_flow":{
|
||||
"forward_dividend_yield",
|
||||
"leveredfreecashflow.lasttwelvemonths",
|
||||
"capitalexpenditure.lasttwelvemonths",
|
||||
"cashfromoperations.lasttwelvemonths",
|
||||
"leveredfreecashflow1yrgrowth.lasttwelvemonths",
|
||||
"unleveredfreecashflow.lasttwelvemonths",
|
||||
"cashfromoperations1yrgrowth.lasttwelvemonths"},
|
||||
"esg":{
|
||||
"esg_score",
|
||||
"environmental_score",
|
||||
"governance_score",
|
||||
"social_score",
|
||||
"highest_controversy"}
|
||||
}
|
||||
EQUITY_SCREENER_FIELDS = merge_two_level_dicts(EQUITY_SCREENER_FIELDS, COMMON_SCREENER_FIELDS)
|
||||
|
||||
@@ -10,6 +10,8 @@ from frozendict import frozendict
|
||||
from . import utils, cache
|
||||
import threading
|
||||
|
||||
from .exceptions import YFRateLimitError
|
||||
|
||||
cache_maxsize = 64
|
||||
|
||||
|
||||
@@ -229,11 +231,16 @@ class YfData(metaclass=SingletonMeta):
|
||||
'timeout': timeout}
|
||||
|
||||
get_args = {**base_args, 'url': 'https://guce.yahoo.com/consent'}
|
||||
if self._session_is_caching:
|
||||
get_args['expire_after'] = self._expire_after
|
||||
response = self._session.get(**get_args)
|
||||
else:
|
||||
response = self._session.get(**get_args)
|
||||
try:
|
||||
if self._session_is_caching:
|
||||
get_args['expire_after'] = self._expire_after
|
||||
response = self._session.get(**get_args)
|
||||
else:
|
||||
response = self._session.get(**get_args)
|
||||
except requests.exceptions.ChunkedEncodingError:
|
||||
# No idea why happens, but handle nicely so can switch to other cookie method.
|
||||
utils.get_yf_logger().debug('_get_cookie_csrf() encountering requests.exceptions.ChunkedEncodingError, aborting')
|
||||
return False
|
||||
|
||||
soup = BeautifulSoup(response.content, 'html.parser')
|
||||
csrfTokenInput = soup.find('input', attrs={'name': 'csrfToken'})
|
||||
@@ -262,14 +269,18 @@ class YfData(metaclass=SingletonMeta):
|
||||
get_args = {**base_args,
|
||||
'url': f'https://guce.yahoo.com/copyConsent?sessionId={sessionId}',
|
||||
'data': data}
|
||||
if self._session_is_caching:
|
||||
post_args['expire_after'] = self._expire_after
|
||||
get_args['expire_after'] = self._expire_after
|
||||
self._session.post(**post_args)
|
||||
self._session.get(**get_args)
|
||||
else:
|
||||
self._session.post(**post_args)
|
||||
self._session.get(**get_args)
|
||||
try:
|
||||
if self._session_is_caching:
|
||||
post_args['expire_after'] = self._expire_after
|
||||
get_args['expire_after'] = self._expire_after
|
||||
self._session.post(**post_args)
|
||||
self._session.get(**get_args)
|
||||
else:
|
||||
self._session.post(**post_args)
|
||||
self._session.get(**get_args)
|
||||
except requests.exceptions.ChunkedEncodingError:
|
||||
# No idea why happens, but handle nicely so can switch to other cookie method.
|
||||
utils.get_yf_logger().debug('_get_cookie_csrf() encountering requests.exceptions.ChunkedEncodingError, aborting')
|
||||
self._cookie = True
|
||||
self._save_session_cookies()
|
||||
return True
|
||||
@@ -390,6 +401,10 @@ class YfData(metaclass=SingletonMeta):
|
||||
response = request_method(**request_args)
|
||||
utils.get_yf_logger().debug(f'response code={response.status_code}')
|
||||
|
||||
# Raise exception if rate limited
|
||||
if response.status_code == 429:
|
||||
raise YFRateLimitError()
|
||||
|
||||
return response
|
||||
|
||||
@lru_cache_freezeargs
|
||||
|
||||
@@ -1,14 +1,27 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from ..ticker import Ticker
|
||||
from ..const import _QUERY1_URL_
|
||||
from ..data import YfData
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
import pandas as _pd
|
||||
|
||||
_QUERY_URL_ = f'{_QUERY1_URL_}/v1/finance'
|
||||
|
||||
class Domain:
|
||||
class Domain(ABC):
|
||||
"""
|
||||
Abstract base class representing a domain entity in financial data, with key attributes
|
||||
and methods for fetching and parsing data. Derived classes must implement the `_fetch_and_parse()` method.
|
||||
"""
|
||||
|
||||
def __init__(self, key: str, session=None, proxy=None):
|
||||
"""
|
||||
Initializes the Domain object with a key, session, and proxy.
|
||||
|
||||
Args:
|
||||
key (str): Unique key identifying the domain entity.
|
||||
session (Optional[requests.Session]): Session object for HTTP requests. Defaults to None.
|
||||
proxy (Optional[Dict]): Proxy settings. Defaults to None.
|
||||
"""
|
||||
self._key: str = key
|
||||
self.proxy = proxy
|
||||
self.session = session
|
||||
@@ -19,47 +32,105 @@ class Domain:
|
||||
self._overview: Optional[Dict] = None
|
||||
self._top_companies: Optional[_pd.DataFrame] = None
|
||||
self._research_reports: Optional[List[Dict[str, str]]] = None
|
||||
|
||||
|
||||
@property
|
||||
def key(self) -> str:
|
||||
"""
|
||||
Retrieves the key of the domain entity.
|
||||
|
||||
Returns:
|
||||
str: The unique key of the domain entity.
|
||||
"""
|
||||
return self._key
|
||||
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
"""
|
||||
Retrieves the name of the domain entity.
|
||||
|
||||
Returns:
|
||||
str: The name of the domain entity.
|
||||
"""
|
||||
self._ensure_fetched(self._name)
|
||||
return self._name
|
||||
|
||||
|
||||
@property
|
||||
def symbol(self) -> str:
|
||||
"""
|
||||
Retrieves the symbol of the domain entity.
|
||||
|
||||
Returns:
|
||||
str: The symbol representing the domain entity.
|
||||
"""
|
||||
self._ensure_fetched(self._symbol)
|
||||
return self._symbol
|
||||
|
||||
|
||||
@property
|
||||
def ticker(self) -> Ticker:
|
||||
"""
|
||||
Retrieves a Ticker object based on the domain entity's symbol.
|
||||
|
||||
Returns:
|
||||
Ticker: A Ticker object associated with the domain entity.
|
||||
"""
|
||||
self._ensure_fetched(self._symbol)
|
||||
return Ticker(self._symbol)
|
||||
|
||||
|
||||
@property
|
||||
def overview(self) -> Dict:
|
||||
"""
|
||||
Retrieves the overview information of the domain entity.
|
||||
|
||||
Returns:
|
||||
Dict: A dictionary containing an overview of the domain entity.
|
||||
"""
|
||||
self._ensure_fetched(self._overview)
|
||||
return self._overview
|
||||
|
||||
|
||||
@property
|
||||
def top_companies(self) -> Optional[_pd.DataFrame]:
|
||||
"""
|
||||
Retrieves the top companies within the domain entity.
|
||||
|
||||
Returns:
|
||||
pandas.DataFrame: A DataFrame containing the top companies in the domain.
|
||||
"""
|
||||
self._ensure_fetched(self._top_companies)
|
||||
return self._top_companies
|
||||
|
||||
|
||||
@property
|
||||
def research_reports(self) -> List[Dict[str, str]]:
|
||||
"""
|
||||
Retrieves research reports related to the domain entity.
|
||||
|
||||
Returns:
|
||||
List[Dict[str, str]]: A list of research reports, where each report is a dictionary with metadata.
|
||||
"""
|
||||
self._ensure_fetched(self._research_reports)
|
||||
return self._research_reports
|
||||
|
||||
|
||||
def _fetch(self, query_url, proxy) -> Dict:
|
||||
"""
|
||||
Fetches data from the given query URL.
|
||||
|
||||
Args:
|
||||
query_url (str): The URL used for the data query.
|
||||
proxy (Dict): Proxy settings for the request.
|
||||
|
||||
Returns:
|
||||
Dict: The JSON response data from the request.
|
||||
"""
|
||||
params_dict = {"formatted": "true", "withReturns": "true", "lang": "en-US", "region": "US"}
|
||||
result = self._data.get_raw_json(query_url, user_agent_headers=self._data.user_agent_headers, params=params_dict, proxy=proxy)
|
||||
return result
|
||||
|
||||
|
||||
def _parse_and_assign_common(self, data) -> None:
|
||||
"""
|
||||
Parses and assigns common data fields such as name, symbol, overview, and top companies.
|
||||
|
||||
Args:
|
||||
data (Dict): The raw data received from the API.
|
||||
"""
|
||||
self._name = data.get('name')
|
||||
self._symbol = data.get('symbol')
|
||||
self._overview = self._parse_overview(data.get('overview', {}))
|
||||
@@ -67,6 +138,15 @@ class Domain:
|
||||
self._research_reports = data.get('researchReports')
|
||||
|
||||
def _parse_overview(self, overview) -> Dict:
|
||||
"""
|
||||
Parses the overview data for the domain entity.
|
||||
|
||||
Args:
|
||||
overview (Dict): The raw overview data.
|
||||
|
||||
Returns:
|
||||
Dict: A dictionary containing parsed overview information.
|
||||
"""
|
||||
return {
|
||||
"companies_count": overview.get('companiesCount', None),
|
||||
"market_cap": overview.get('marketCap', {}).get('raw', None),
|
||||
@@ -78,6 +158,15 @@ class Domain:
|
||||
}
|
||||
|
||||
def _parse_top_companies(self, top_companies) -> Optional[_pd.DataFrame]:
|
||||
"""
|
||||
Parses the top companies data and converts it into a pandas DataFrame.
|
||||
|
||||
Args:
|
||||
top_companies (Dict): The raw top companies data.
|
||||
|
||||
Returns:
|
||||
Optional[pandas.DataFrame]: A DataFrame containing top company data, or None if no data is available.
|
||||
"""
|
||||
top_companies_column = ['symbol', 'name', 'rating', 'market weight']
|
||||
top_companies_values = [(c.get('symbol'),
|
||||
c.get('name'),
|
||||
@@ -87,11 +176,22 @@ class Domain:
|
||||
if not top_companies_values:
|
||||
return None
|
||||
|
||||
return _pd.DataFrame(top_companies_values, columns = top_companies_column).set_index('symbol')
|
||||
return _pd.DataFrame(top_companies_values, columns=top_companies_column).set_index('symbol')
|
||||
|
||||
@abstractmethod
|
||||
def _fetch_and_parse(self) -> None:
|
||||
"""
|
||||
Abstract method for fetching and parsing domain-specific data.
|
||||
Must be implemented by derived classes.
|
||||
"""
|
||||
raise NotImplementedError("_fetch_and_parse() needs to be implemented by children classes")
|
||||
|
||||
def _ensure_fetched(self, attribute) -> None:
|
||||
"""
|
||||
Ensures that the given attribute is fetched by calling `_fetch_and_parse()` if the attribute is None.
|
||||
|
||||
Args:
|
||||
attribute: The attribute to check and potentially fetch.
|
||||
"""
|
||||
if attribute is None:
|
||||
self._fetch_and_parse()
|
||||
@@ -7,7 +7,17 @@ from .domain import Domain, _QUERY_URL_
|
||||
from .. import utils
|
||||
|
||||
class Industry(Domain):
|
||||
"""
|
||||
Represents an industry within a sector.
|
||||
"""
|
||||
|
||||
def __init__(self, key, session=None, proxy=None):
|
||||
"""
|
||||
Args:
|
||||
key (str): The key identifier for the industry.
|
||||
session (optional): The session to use for requests.
|
||||
proxy (optional): The proxy to use for requests.
|
||||
"""
|
||||
super(Industry, self).__init__(key, session, proxy)
|
||||
self._query_url = f'{_QUERY_URL_}/industries/{self._key}'
|
||||
|
||||
@@ -17,29 +27,68 @@ class Industry(Domain):
|
||||
self._top_growth_companies = None
|
||||
|
||||
def __repr__(self):
|
||||
"""
|
||||
Returns a string representation of the Industry instance.
|
||||
|
||||
Returns:
|
||||
str: String representation of the Industry instance.
|
||||
"""
|
||||
return f'yfinance.Industry object <{self._key}>'
|
||||
|
||||
@property
|
||||
def sector_key(self) -> str:
|
||||
"""
|
||||
Returns the sector key of the industry.
|
||||
|
||||
Returns:
|
||||
str: The sector key.
|
||||
"""
|
||||
self._ensure_fetched(self._sector_key)
|
||||
return self._sector_key
|
||||
|
||||
@property
|
||||
def sector_name(self) -> str:
|
||||
"""
|
||||
Returns the sector name of the industry.
|
||||
|
||||
Returns:
|
||||
str: The sector name.
|
||||
"""
|
||||
self._ensure_fetched(self._sector_name)
|
||||
return self._sector_name
|
||||
|
||||
@property
|
||||
def top_performing_companies(self) -> Optional[_pd.DataFrame]:
|
||||
"""
|
||||
Returns the top performing companies in the industry.
|
||||
|
||||
Returns:
|
||||
Optional[pd.DataFrame]: DataFrame containing top performing companies.
|
||||
"""
|
||||
self._ensure_fetched(self._top_performing_companies)
|
||||
return self._top_performing_companies
|
||||
|
||||
@property
|
||||
def top_growth_companies(self) -> Optional[_pd.DataFrame]:
|
||||
"""
|
||||
Returns the top growth companies in the industry.
|
||||
|
||||
Returns:
|
||||
Optional[pd.DataFrame]: DataFrame containing top growth companies.
|
||||
"""
|
||||
self._ensure_fetched(self._top_growth_companies)
|
||||
return self._top_growth_companies
|
||||
|
||||
def _parse_top_performing_companies(self, top_performing_companies: Dict) -> Optional[_pd.DataFrame]:
|
||||
"""
|
||||
Parses the top performing companies data.
|
||||
|
||||
Args:
|
||||
top_performing_companies (Dict): Dictionary containing top performing companies data.
|
||||
|
||||
Returns:
|
||||
Optional[pd.DataFrame]: DataFrame containing parsed top performing companies data.
|
||||
"""
|
||||
compnaies_column = ['symbol','name','ytd return',' last price','target price']
|
||||
compnaies_values = [(c.get('symbol', None),
|
||||
c.get('name', None),
|
||||
@@ -53,6 +102,15 @@ class Industry(Domain):
|
||||
return _pd.DataFrame(compnaies_values, columns = compnaies_column).set_index('symbol')
|
||||
|
||||
def _parse_top_growth_companies(self, top_growth_companies: Dict) -> Optional[_pd.DataFrame]:
|
||||
"""
|
||||
Parses the top growth companies data.
|
||||
|
||||
Args:
|
||||
top_growth_companies (Dict): Dictionary containing top growth companies data.
|
||||
|
||||
Returns:
|
||||
Optional[pd.DataFrame]: DataFrame containing parsed top growth companies data.
|
||||
"""
|
||||
compnaies_column = ['symbol','name','ytd return',' growth estimate']
|
||||
compnaies_values = [(c.get('symbol', None),
|
||||
c.get('name', None),
|
||||
@@ -65,6 +123,9 @@ class Industry(Domain):
|
||||
return _pd.DataFrame(compnaies_values, columns = compnaies_column).set_index('symbol')
|
||||
|
||||
def _fetch_and_parse(self) -> None:
|
||||
"""
|
||||
Fetches and parses the industry data.
|
||||
"""
|
||||
result = None
|
||||
|
||||
try:
|
||||
|
||||
100
yfinance/domain/market.py
Normal file
100
yfinance/domain/market.py
Normal file
@@ -0,0 +1,100 @@
|
||||
import datetime as dt
|
||||
|
||||
from ..data import YfData
|
||||
from ..data import utils
|
||||
from ..const import _QUERY1_URL_
|
||||
import json as _json
|
||||
|
||||
class Market:
|
||||
def __init__(self, market:'str', session=None, proxy=None, timeout=30):
|
||||
self.market = market
|
||||
self.session = session
|
||||
self.proxy = proxy
|
||||
self.timeout = timeout
|
||||
|
||||
self._data = YfData(session=self.session)
|
||||
self._logger = utils.get_yf_logger()
|
||||
|
||||
self._status = None
|
||||
self._summary = None
|
||||
|
||||
def _fetch_json(self, url, params):
|
||||
data = self._data.cache_get(url=url, params=params, proxy=self.proxy, timeout=self.timeout)
|
||||
if data is None or "Will be right back" in data.text:
|
||||
raise RuntimeError("*** YAHOO! FINANCE IS CURRENTLY DOWN! ***\n"
|
||||
"Our engineers are working quickly to resolve "
|
||||
"the issue. Thank you for your patience.")
|
||||
try:
|
||||
return data.json()
|
||||
except _json.JSONDecodeError:
|
||||
self._logger.error(f"{self.market}: Failed to retrieve market data and recieved faulty data.")
|
||||
return {}
|
||||
|
||||
def _parse_data(self):
|
||||
# Fetch both to ensure they are at the same time
|
||||
if (self._status is not None) and (self._summary is not None):
|
||||
return
|
||||
|
||||
self._logger.debug(f"{self.market}: Parsing market data")
|
||||
|
||||
# Summary
|
||||
|
||||
summary_url = f"{_QUERY1_URL_}/v6/finance/quote/marketSummary"
|
||||
summary_fields = ["shortName", "regularMarketPrice", "regularMarketChange", "regularMarketChangePercent"]
|
||||
summary_params = {
|
||||
"fields": ",".join(summary_fields),
|
||||
"formatted": False,
|
||||
"lang": "en-US",
|
||||
"market": self.market
|
||||
}
|
||||
|
||||
status_url = f"{_QUERY1_URL_}/v6/finance/markettime"
|
||||
status_params = {
|
||||
"formatted": True,
|
||||
"key": "finance",
|
||||
"lang": "en-US",
|
||||
"market": self.market
|
||||
}
|
||||
|
||||
self._summary = self._fetch_json(summary_url, summary_params)
|
||||
self._status = self._fetch_json(status_url, status_params)
|
||||
|
||||
try:
|
||||
self._summary = self._summary['marketSummaryResponse']['result']
|
||||
self._summary = {x['exchange']:x for x in self._summary}
|
||||
except Exception as e:
|
||||
self._logger.error(f"{self.market}: Failed to parse market summary")
|
||||
self._logger.debug(f"{type(e)}: {e}")
|
||||
|
||||
|
||||
try:
|
||||
# Unpack
|
||||
self._status = self._status['finance']['marketTimes'][0]['marketTime'][0]
|
||||
self._status['timezone'] = self._status['timezone'][0]
|
||||
del self._status['time'] # redundant
|
||||
try:
|
||||
self._status.update({
|
||||
"open": dt.datetime.fromisoformat(self._status["open"]),
|
||||
"close": dt.datetime.fromisoformat(self._status["close"]),
|
||||
"tz": dt.timezone(dt.timedelta(hours=int(self._status["timezone"]["gmtoffset"]))/1000, self._status["timezone"]["short"])
|
||||
})
|
||||
except Exception as e:
|
||||
self._logger.error(f"{self.market}: Failed to update market status")
|
||||
self._logger.debug(f"{type(e)}: {e}")
|
||||
except Exception as e:
|
||||
self._logger.error(f"{self.market}: Failed to parse market status")
|
||||
self._logger.debug(f"{type(e)}: {e}")
|
||||
|
||||
|
||||
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
self._parse_data()
|
||||
return self._status
|
||||
|
||||
|
||||
@property
|
||||
def summary(self):
|
||||
self._parse_data()
|
||||
return self._summary
|
||||
@@ -1,5 +1,7 @@
|
||||
from __future__ import print_function
|
||||
from typing import Dict, Optional
|
||||
from ..utils import dynamic_docstring, generate_list_table_from_dict
|
||||
from ..const import SECTOR_INDUSTY_MAPPING
|
||||
|
||||
import pandas as _pd
|
||||
|
||||
@@ -7,48 +9,127 @@ from .domain import Domain, _QUERY_URL_
|
||||
from .. import utils
|
||||
|
||||
class Sector(Domain):
|
||||
"""
|
||||
Represents a financial market sector and allows retrieval of sector-related data
|
||||
such as top ETFs, top mutual funds, and industry data.
|
||||
"""
|
||||
|
||||
def __init__(self, key, session=None, proxy=None):
|
||||
"""
|
||||
Args:
|
||||
key (str): The key representing the sector.
|
||||
session (requests.Session, optional): A session for making requests. Defaults to None.
|
||||
proxy (dict, optional): A dictionary containing proxy settings for the request. Defaults to None.
|
||||
|
||||
.. seealso::
|
||||
|
||||
:attr:`Sector.industries <yfinance.Sector.industries>`
|
||||
Map of sector and industry
|
||||
"""
|
||||
super(Sector, self).__init__(key, session, proxy)
|
||||
self._query_url: str = f'{_QUERY_URL_}/sectors/{self._key}'
|
||||
|
||||
self._top_etfs: Optional[Dict] = None
|
||||
self._top_mutual_funds: Optional[Dict] = None
|
||||
self._industries: Optional[_pd.DataFrame] = None
|
||||
|
||||
def __repr__(self):
|
||||
"""
|
||||
Returns the string representation of the Sector object.
|
||||
|
||||
Returns:
|
||||
str: A string representation of the object.
|
||||
"""
|
||||
return f'yfinance.Sector object <{self._key}>'
|
||||
|
||||
@property
|
||||
def top_etfs(self) -> Dict[str, str]:
|
||||
"""
|
||||
Gets the top ETFs for the sector.
|
||||
|
||||
Returns:
|
||||
Dict[str, str]: A dictionary of ETF symbols and names.
|
||||
"""
|
||||
self._ensure_fetched(self._top_etfs)
|
||||
return self._top_etfs
|
||||
|
||||
@property
|
||||
def top_mutual_funds(self) -> Dict[str, str]:
|
||||
"""
|
||||
Gets the top mutual funds for the sector.
|
||||
|
||||
Returns:
|
||||
Dict[str, str]: A dictionary of mutual fund symbols and names.
|
||||
"""
|
||||
self._ensure_fetched(self._top_mutual_funds)
|
||||
return self._top_mutual_funds
|
||||
|
||||
@dynamic_docstring({"sector_industry": generate_list_table_from_dict(SECTOR_INDUSTY_MAPPING,bullets=True)})
|
||||
@property
|
||||
def industries(self) -> _pd.DataFrame:
|
||||
"""
|
||||
Gets the industries within the sector.
|
||||
|
||||
Returns:
|
||||
pandas.DataFrame: A DataFrame with industries' key, name, symbol, and market weight.
|
||||
|
||||
{sector_industry}
|
||||
"""
|
||||
self._ensure_fetched(self._industries)
|
||||
return self._industries
|
||||
|
||||
def _parse_top_etfs(self, top_etfs: Dict) -> Dict[str, str]:
|
||||
"""
|
||||
Parses top ETF data from the API response.
|
||||
|
||||
Args:
|
||||
top_etfs (Dict): The raw ETF data from the API response.
|
||||
|
||||
Returns:
|
||||
Dict[str, str]: A dictionary of ETF symbols and names.
|
||||
"""
|
||||
return {e.get('symbol'): e.get('name') for e in top_etfs}
|
||||
|
||||
def _parse_top_mutual_funds(self, top_mutual_funds: Dict) -> Dict[str, str]:
|
||||
"""
|
||||
Parses top mutual funds data from the API response.
|
||||
|
||||
Args:
|
||||
top_mutual_funds (Dict): The raw mutual fund data from the API response.
|
||||
|
||||
Returns:
|
||||
Dict[str, str]: A dictionary of mutual fund symbols and names.
|
||||
"""
|
||||
return {e.get('symbol'): e.get('name') for e in top_mutual_funds}
|
||||
|
||||
def _parse_industries(self, industries: Dict) -> _pd.DataFrame:
|
||||
"""
|
||||
Parses industry data from the API response into a DataFrame.
|
||||
|
||||
Args:
|
||||
industries (Dict): The raw industry data from the API response.
|
||||
|
||||
Returns:
|
||||
pandas.DataFrame: A DataFrame containing industry key, name, symbol, and market weight.
|
||||
"""
|
||||
industries_column = ['key','name','symbol','market weight']
|
||||
industries_values = [(i.get('key'),
|
||||
i.get('name'),
|
||||
i.get('symbol'),
|
||||
i.get('marketWeight',{}).get('raw', None)
|
||||
) for i in industries if i.get('name') != 'All Industries']
|
||||
return _pd.DataFrame(industries_values, columns = industries_column).set_index('key')
|
||||
return _pd.DataFrame(industries_values, columns=industries_column).set_index('key')
|
||||
|
||||
def _fetch_and_parse(self) -> None:
|
||||
"""
|
||||
Fetches and parses sector data from the API.
|
||||
|
||||
Fetches data for the sector and parses the top ETFs, top mutual funds,
|
||||
and industries within the sector. Stores the parsed data in the corresponding
|
||||
attributes `_top_etfs`, `_top_mutual_funds`, and `_industries`.
|
||||
|
||||
Raises:
|
||||
Exception: If fetching or parsing the sector data fails.
|
||||
"""
|
||||
result = None
|
||||
|
||||
try:
|
||||
|
||||
@@ -44,4 +44,10 @@ class YFInvalidPeriodError(YFException):
|
||||
self.ticker = ticker
|
||||
self.invalid_period = invalid_period
|
||||
self.valid_ranges = valid_ranges
|
||||
super().__init__(f"{self.ticker}: Period '{invalid_period}' is invalid, must be one of {valid_ranges}")
|
||||
super().__init__(f"{self.ticker}: Period '{invalid_period}' is invalid, "
|
||||
f"must be of the format {valid_ranges}, etc.")
|
||||
|
||||
|
||||
class YFRateLimitError(YFException):
|
||||
def __init__(self):
|
||||
super().__init__("Too Many Requests. Rate limited. Try after a while.")
|
||||
|
||||
@@ -24,6 +24,7 @@ from __future__ import print_function
|
||||
import logging
|
||||
import time as _time
|
||||
import traceback
|
||||
from typing import Union
|
||||
|
||||
import multitasking as _multitasking
|
||||
import pandas as _pd
|
||||
@@ -34,11 +35,13 @@ from . import shared
|
||||
|
||||
|
||||
@utils.log_indent_decorator
|
||||
def download(tickers, start=None, end=None, actions=False, threads=True, ignore_tz=None,
|
||||
group_by='column', auto_adjust=False, back_adjust=False, repair=False, keepna=False,
|
||||
progress=True, period="max", interval="1d", prepost=False,
|
||||
proxy=None, rounding=False, timeout=10, session=None):
|
||||
"""Download yahoo tickers
|
||||
def download(tickers, start=None, end=None, actions=False, threads=True,
|
||||
ignore_tz=None, group_by='column', auto_adjust=None, back_adjust=False,
|
||||
repair=False, keepna=False, progress=True, period="max", interval="1d",
|
||||
prepost=False, proxy=None, rounding=False, timeout=10, session=None,
|
||||
multi_level_index=True) -> Union[_pd.DataFrame, None]:
|
||||
"""
|
||||
Download yahoo tickers
|
||||
:Parameters:
|
||||
tickers : str, list
|
||||
List of tickers to download
|
||||
@@ -62,7 +65,7 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_
|
||||
Include Pre and Post market data in results?
|
||||
Default is False
|
||||
auto_adjust: bool
|
||||
Adjust all OHLC automatically? Default is False
|
||||
Adjust all OHLC automatically? Default is True
|
||||
repair: bool
|
||||
Detect currency unit 100x mixups and attempt repair
|
||||
Default is False
|
||||
@@ -85,9 +88,16 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_
|
||||
seconds. (Can also be a fraction of a second e.g. 0.01)
|
||||
session: None or Session
|
||||
Optional. Pass your own session object to be used for all requests
|
||||
multi_level_index: bool
|
||||
Optional. Always return a MultiIndex DataFrame? Default is True
|
||||
"""
|
||||
logger = utils.get_yf_logger()
|
||||
|
||||
if auto_adjust is None:
|
||||
# Warn users that default has changed to True
|
||||
utils.print_once("YF.download() has changed argument auto_adjust default to True")
|
||||
auto_adjust = True
|
||||
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
if threads:
|
||||
# With DEBUG, each thread generates a lot of log messages.
|
||||
@@ -101,7 +111,7 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_
|
||||
|
||||
if ignore_tz is None:
|
||||
# Set default value depending on interval
|
||||
if interval[1:] in ['m', 'h']:
|
||||
if interval[-1] in ['m', 'h']:
|
||||
# Intraday
|
||||
ignore_tz = False
|
||||
else:
|
||||
@@ -175,7 +185,7 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_
|
||||
errors = {}
|
||||
for ticker in shared._ERRORS:
|
||||
err = shared._ERRORS[ticker]
|
||||
err = err.replace(f'{ticker}', '%ticker%')
|
||||
err = err.replace(f'${ticker}: ', '')
|
||||
if err not in errors:
|
||||
errors[err] = [ticker]
|
||||
else:
|
||||
@@ -187,7 +197,7 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_
|
||||
tbs = {}
|
||||
for ticker in shared._TRACEBACKS:
|
||||
tb = shared._TRACEBACKS[ticker]
|
||||
tb = tb.replace(f'{ticker}', '%ticker%')
|
||||
tb = tb.replace(f'${ticker}: ', '')
|
||||
if tb not in tbs:
|
||||
tbs[tb] = [ticker]
|
||||
else:
|
||||
@@ -207,7 +217,7 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_
|
||||
_realign_dfs()
|
||||
data = _pd.concat(shared._DFS.values(), axis=1, sort=True,
|
||||
keys=shared._DFS.keys(), names=['Ticker', 'Price'])
|
||||
data.index = _pd.to_datetime(data.index, utc=True)
|
||||
data.index = _pd.to_datetime(data.index, utc=not ignore_tz)
|
||||
# switch names back to isins if applicable
|
||||
data.rename(columns=shared._ISINS, inplace=True)
|
||||
|
||||
@@ -215,7 +225,7 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_
|
||||
data.columns = data.columns.swaplevel(0, 1)
|
||||
data.sort_index(level=0, axis=1, inplace=True)
|
||||
|
||||
if len(tickers) == 1:
|
||||
if not multi_level_index and len(tickers) == 1:
|
||||
data = data.droplevel(0 if group_by == 'ticker' else 1, axis=1).rename_axis(None, axis=1)
|
||||
|
||||
return data
|
||||
|
||||
@@ -28,6 +28,50 @@ class Analysis:
|
||||
self._eps_revisions = None
|
||||
self._growth_estimates = None
|
||||
|
||||
def _get_periodic_df(self, key) -> pd.DataFrame:
|
||||
if self._earnings_trend is None:
|
||||
self._fetch_earnings_trend()
|
||||
|
||||
data = []
|
||||
for item in self._earnings_trend[:4]:
|
||||
row = {'period': item['period']}
|
||||
for k, v in item[key].items():
|
||||
if not isinstance(v, dict) or len(v) == 0:
|
||||
continue
|
||||
row[k] = v['raw']
|
||||
data.append(row)
|
||||
if len(data) == 0:
|
||||
return pd.DataFrame()
|
||||
return pd.DataFrame(data).set_index('period')
|
||||
|
||||
@property
|
||||
def earnings_estimate(self) -> pd.DataFrame:
|
||||
if self._earnings_estimate is not None:
|
||||
return self._earnings_estimate
|
||||
self._earnings_estimate = self._get_periodic_df('earningsEstimate')
|
||||
return self._earnings_estimate
|
||||
|
||||
@property
|
||||
def revenue_estimate(self) -> pd.DataFrame:
|
||||
if self._revenue_estimate is not None:
|
||||
return self._revenue_estimate
|
||||
self._revenue_estimate = self._get_periodic_df('revenueEstimate')
|
||||
return self._revenue_estimate
|
||||
|
||||
@property
|
||||
def eps_trend(self) -> pd.DataFrame:
|
||||
if self._eps_trend is not None:
|
||||
return self._eps_trend
|
||||
self._eps_trend = self._get_periodic_df('epsTrend')
|
||||
return self._eps_trend
|
||||
|
||||
@property
|
||||
def eps_revisions(self) -> pd.DataFrame:
|
||||
if self._eps_revisions is not None:
|
||||
return self._eps_revisions
|
||||
self._eps_revisions = self._get_periodic_df('epsRevisions')
|
||||
return self._eps_revisions
|
||||
|
||||
@property
|
||||
def analyst_price_targets(self) -> dict:
|
||||
if self._analyst_price_targets is not None:
|
||||
@@ -40,73 +84,17 @@ class Analysis:
|
||||
self._analyst_price_targets = {}
|
||||
return self._analyst_price_targets
|
||||
|
||||
keys = [
|
||||
('currentPrice', 'current'),
|
||||
('targetLowPrice', 'low'),
|
||||
('targetHighPrice', 'high'),
|
||||
('targetMeanPrice', 'mean'),
|
||||
('targetMedianPrice', 'median'),
|
||||
]
|
||||
result = {}
|
||||
for key, value in data.items():
|
||||
if key.startswith('target'):
|
||||
new_key = key.replace('target', '').lower().replace('price', '').strip()
|
||||
result[new_key] = value
|
||||
elif key == 'currentPrice':
|
||||
result['current'] = value
|
||||
|
||||
self._analyst_price_targets = {newKey: data.get(oldKey, None) for oldKey, newKey in keys}
|
||||
self._analyst_price_targets = result
|
||||
return self._analyst_price_targets
|
||||
|
||||
@property
|
||||
def earnings_estimate(self) -> pd.DataFrame:
|
||||
if self._earnings_estimate is not None:
|
||||
return self._earnings_estimate
|
||||
|
||||
if self._earnings_trend is None:
|
||||
self._fetch_earnings_trend()
|
||||
|
||||
data_dict = {
|
||||
'numberOfAnalysts': [],
|
||||
'avg': [],
|
||||
'low': [],
|
||||
'high': [],
|
||||
'yearAgoEps': [],
|
||||
'growth': []
|
||||
}
|
||||
periods = []
|
||||
|
||||
for item in self._earnings_trend[:4]:
|
||||
periods.append(item['period'])
|
||||
earnings_estimate = item.get('earningsEstimate', {})
|
||||
|
||||
for key in data_dict.keys():
|
||||
data_dict[key].append(earnings_estimate.get(key, {}).get('raw', None))
|
||||
|
||||
self._earnings_estimate = pd.DataFrame(data_dict, index=periods)
|
||||
return self._earnings_estimate
|
||||
|
||||
@property
|
||||
def revenue_estimate(self) -> pd.DataFrame:
|
||||
if self._revenue_estimate is not None:
|
||||
return self._revenue_estimate
|
||||
|
||||
if self._earnings_trend is None:
|
||||
self._fetch_earnings_trend()
|
||||
|
||||
data_dict = {
|
||||
'numberOfAnalysts': [],
|
||||
'avg': [],
|
||||
'low': [],
|
||||
'high': [],
|
||||
'yearAgoRevenue': [],
|
||||
'growth': []
|
||||
}
|
||||
periods = []
|
||||
|
||||
for item in self._earnings_trend[:4]:
|
||||
periods.append(item['period'])
|
||||
revenue_estimate = item.get('revenueEstimate', {})
|
||||
|
||||
for key in data_dict.keys():
|
||||
data_dict[key].append(revenue_estimate.get(key, {}).get('raw', None))
|
||||
|
||||
self._revenue_estimate = pd.DataFrame(data_dict, index=periods)
|
||||
return self._revenue_estimate
|
||||
|
||||
@property
|
||||
def earnings_history(self) -> pd.DataFrame:
|
||||
if self._earnings_history is not None:
|
||||
@@ -119,77 +107,27 @@ class Analysis:
|
||||
self._earnings_history = pd.DataFrame()
|
||||
return self._earnings_history
|
||||
|
||||
data_dict = {
|
||||
'epsEstimate': [],
|
||||
'epsActual': [],
|
||||
'epsDifference': [],
|
||||
'surprisePercent': []
|
||||
}
|
||||
quarters = []
|
||||
|
||||
rows = []
|
||||
for item in data:
|
||||
quarters.append(item.get('quarter', {}).get('fmt', None))
|
||||
row = {'quarter': item.get('quarter', {}).get('fmt', None)}
|
||||
for k, v in item.items():
|
||||
if k == 'quarter':
|
||||
continue
|
||||
if not isinstance(v, dict) or len(v) == 0:
|
||||
continue
|
||||
row[k] = v.get('raw', None)
|
||||
rows.append(row)
|
||||
if len(data) == 0:
|
||||
return pd.DataFrame()
|
||||
|
||||
for key in data_dict.keys():
|
||||
data_dict[key].append(item.get(key, {}).get('raw', None))
|
||||
|
||||
datetime_index = pd.to_datetime(quarters, format='%Y-%m-%d')
|
||||
self._earnings_history = pd.DataFrame(data_dict, index=datetime_index)
|
||||
df = pd.DataFrame(rows)
|
||||
if 'quarter' in df.columns:
|
||||
df['quarter'] = pd.to_datetime(df['quarter'], format='%Y-%m-%d')
|
||||
df.set_index('quarter', inplace=True)
|
||||
|
||||
self._earnings_history = df
|
||||
return self._earnings_history
|
||||
|
||||
@property
|
||||
def eps_trend(self) -> pd.DataFrame:
|
||||
if self._eps_trend is not None:
|
||||
return self._eps_trend
|
||||
|
||||
if self._earnings_trend is None:
|
||||
self._fetch_earnings_trend()
|
||||
|
||||
data_dict = {
|
||||
'current': [],
|
||||
'7daysAgo': [],
|
||||
'30daysAgo': [],
|
||||
'60daysAgo': [],
|
||||
'90daysAgo': []
|
||||
}
|
||||
periods = []
|
||||
|
||||
for item in self._earnings_trend[:4]:
|
||||
periods.append(item['period'])
|
||||
eps_trend = item.get('epsTrend', {})
|
||||
|
||||
for key in data_dict.keys():
|
||||
data_dict[key].append(eps_trend.get(key, {}).get('raw', None))
|
||||
|
||||
self._eps_trend = pd.DataFrame(data_dict, index=periods)
|
||||
return self._eps_trend
|
||||
|
||||
@property
|
||||
def eps_revisions(self) -> pd.DataFrame:
|
||||
if self._eps_revisions is not None:
|
||||
return self._eps_revisions
|
||||
|
||||
if self._earnings_trend is None:
|
||||
self._fetch_earnings_trend()
|
||||
|
||||
data_dict = {
|
||||
'upLast7days': [],
|
||||
'upLast30days': [],
|
||||
'downLast7days': [],
|
||||
'downLast30days': []
|
||||
}
|
||||
periods = []
|
||||
|
||||
for item in self._earnings_trend[:4]:
|
||||
periods.append(item['period'])
|
||||
eps_revisions = item.get('epsRevisions', {})
|
||||
|
||||
for key in data_dict.keys():
|
||||
data_dict[key].append(eps_revisions.get(key, {}).get('raw', None))
|
||||
|
||||
self._eps_revisions = pd.DataFrame(data_dict, index=periods)
|
||||
return self._eps_revisions
|
||||
|
||||
@property
|
||||
def growth_estimates(self) -> pd.DataFrame:
|
||||
if self._growth_estimates is not None:
|
||||
@@ -205,39 +143,26 @@ class Analysis:
|
||||
self._growth_estimates = pd.DataFrame()
|
||||
return self._growth_estimates
|
||||
|
||||
data_dict = {
|
||||
'0q': [],
|
||||
'+1q': [],
|
||||
'0y': [],
|
||||
'+1y': [],
|
||||
'+5y': [],
|
||||
'-5y': []
|
||||
}
|
||||
|
||||
# make sure no column is empty
|
||||
dummy_trend = [{'period': key, 'growth': None} for key in data_dict.keys()]
|
||||
industry_trend = trends['industryTrend']['estimates'] or dummy_trend
|
||||
sector_trend = trends['sectorTrend']['estimates'] or dummy_trend
|
||||
index_trend = trends['indexTrend']['estimates'] or dummy_trend
|
||||
|
||||
data = []
|
||||
for item in self._earnings_trend:
|
||||
period = item['period']
|
||||
data_dict[period].append(item.get('growth', {}).get('raw', None))
|
||||
row = {'period': period, 'stockTrend': item.get('growth', {}).get('raw', None)}
|
||||
data.append(row)
|
||||
|
||||
for item in industry_trend:
|
||||
period = item['period']
|
||||
data_dict[period].append(item.get('growth', None))
|
||||
for trend_name, trend_info in trends.items():
|
||||
if trend_info.get('estimates'):
|
||||
for estimate in trend_info['estimates']:
|
||||
period = estimate['period']
|
||||
existing_row = next((row for row in data if row['period'] == period), None)
|
||||
if existing_row:
|
||||
existing_row[trend_name] = estimate.get('growth')
|
||||
else:
|
||||
row = {'period': period, trend_name: estimate.get('growth')}
|
||||
data.append(row)
|
||||
if len(data) == 0:
|
||||
return pd.DataFrame()
|
||||
|
||||
for item in sector_trend:
|
||||
period = item['period']
|
||||
data_dict[period].append(item.get('growth', None))
|
||||
|
||||
for item in index_trend:
|
||||
period = item['period']
|
||||
data_dict[period].append(item.get('growth', None))
|
||||
|
||||
cols = ['stock', 'industry', 'sector', 'index']
|
||||
self._growth_estimates = pd.DataFrame(data_dict, index=cols).T
|
||||
self._growth_estimates = pd.DataFrame(data).set_index('period').dropna(how='all')
|
||||
return self._growth_estimates
|
||||
|
||||
# modified version from quote.py
|
||||
|
||||
@@ -9,15 +9,21 @@ from typing import Dict, Optional
|
||||
|
||||
_QUOTE_SUMMARY_URL_ = f"{_BASE_URL_}/v10/finance/quoteSummary/"
|
||||
|
||||
'''
|
||||
Supports ETF and Mutual Funds Data
|
||||
Queried Modules: quoteType, summaryProfile, fundProfile, topHoldings
|
||||
|
||||
Notes:
|
||||
- fundPerformance module is not implemented as better data is queryable using history
|
||||
'''
|
||||
class FundsData:
|
||||
"""
|
||||
ETF and Mutual Funds Data
|
||||
Queried Modules: quoteType, summaryProfile, fundProfile, topHoldings
|
||||
|
||||
Notes:
|
||||
- fundPerformance module is not implemented as better data is queryable using history
|
||||
"""
|
||||
def __init__(self, data: YfData, symbol: str, proxy=None):
|
||||
"""
|
||||
Args:
|
||||
data (YfData): The YfData object for fetching data.
|
||||
symbol (str): The symbol of the fund.
|
||||
proxy (optional): Proxy settings for fetching data.
|
||||
"""
|
||||
self._data = data
|
||||
self._symbol = symbol
|
||||
self.proxy = proxy
|
||||
@@ -41,71 +47,143 @@ class FundsData:
|
||||
self._sector_weightings = None
|
||||
|
||||
def quote_type(self) -> str:
|
||||
"""
|
||||
Returns the quote type of the fund.
|
||||
|
||||
Returns:
|
||||
str: The quote type.
|
||||
"""
|
||||
if self._quote_type is None:
|
||||
self._fetch_and_parse()
|
||||
return self._quote_type
|
||||
|
||||
@property
|
||||
def description(self) -> str:
|
||||
"""
|
||||
Returns the description of the fund.
|
||||
|
||||
Returns:
|
||||
str: The description.
|
||||
"""
|
||||
if self._description is None:
|
||||
self._fetch_and_parse()
|
||||
return self._description
|
||||
|
||||
@property
|
||||
def fund_overview(self) -> Dict[str, Optional[str]]:
|
||||
"""
|
||||
Returns the fund overview.
|
||||
|
||||
Returns:
|
||||
Dict[str, Optional[str]]: The fund overview.
|
||||
"""
|
||||
if self._fund_overview is None:
|
||||
self._fetch_and_parse()
|
||||
return self._fund_overview
|
||||
|
||||
@property
|
||||
def fund_operations(self) -> pd.DataFrame:
|
||||
"""
|
||||
Returns the fund operations.
|
||||
|
||||
Returns:
|
||||
pd.DataFrame: The fund operations.
|
||||
"""
|
||||
if self._fund_operations is None:
|
||||
self._fetch_and_parse()
|
||||
return self._fund_operations
|
||||
|
||||
@property
|
||||
def asset_classes(self) -> Dict[str, float]:
|
||||
"""
|
||||
Returns the asset classes of the fund.
|
||||
|
||||
Returns:
|
||||
Dict[str, float]: The asset classes.
|
||||
"""
|
||||
if self._asset_classes is None:
|
||||
self._fetch_and_parse()
|
||||
return self._asset_classes
|
||||
|
||||
@property
|
||||
def top_holdings(self) -> pd.DataFrame:
|
||||
"""
|
||||
Returns the top holdings of the fund.
|
||||
|
||||
Returns:
|
||||
pd.DataFrame: The top holdings.
|
||||
"""
|
||||
if self._top_holdings is None:
|
||||
self._fetch_and_parse()
|
||||
return self._top_holdings
|
||||
|
||||
@property
|
||||
def equity_holdings(self) -> pd.DataFrame:
|
||||
"""
|
||||
Returns the equity holdings of the fund.
|
||||
|
||||
Returns:
|
||||
pd.DataFrame: The equity holdings.
|
||||
"""
|
||||
if self._equity_holdings is None:
|
||||
self._fetch_and_parse()
|
||||
return self._equity_holdings
|
||||
|
||||
@property
|
||||
def bond_holdings(self) -> pd.DataFrame:
|
||||
"""
|
||||
Returns the bond holdings of the fund.
|
||||
|
||||
Returns:
|
||||
pd.DataFrame: The bond holdings.
|
||||
"""
|
||||
if self._bond_holdings is None:
|
||||
self._fetch_and_parse()
|
||||
return self._bond_holdings
|
||||
|
||||
@property
|
||||
def bond_ratings(self) -> Dict[str, float]:
|
||||
"""
|
||||
Returns the bond ratings of the fund.
|
||||
|
||||
Returns:
|
||||
Dict[str, float]: The bond ratings.
|
||||
"""
|
||||
if self._bond_ratings is None:
|
||||
self._fetch_and_parse()
|
||||
return self._bond_ratings
|
||||
|
||||
@property
|
||||
def sector_weightings(self) -> Dict[str,float]:
|
||||
"""
|
||||
Returns the sector weightings of the fund.
|
||||
|
||||
Returns:
|
||||
Dict[str, float]: The sector weightings.
|
||||
"""
|
||||
if self._sector_weightings is None:
|
||||
self._fetch_and_parse()
|
||||
return self._sector_weightings
|
||||
|
||||
def _fetch(self, proxy):
|
||||
"""
|
||||
Fetches the raw JSON data from the API.
|
||||
|
||||
Args:
|
||||
proxy: Proxy settings for fetching data.
|
||||
|
||||
Returns:
|
||||
dict: The raw JSON data.
|
||||
"""
|
||||
modules = ','.join(["quoteType", "summaryProfile", "topHoldings", "fundProfile"])
|
||||
params_dict = {"modules": modules, "corsDomain": "finance.yahoo.com", "symbol": self._symbol, "formatted": "false"}
|
||||
result = self._data.get_raw_json(_QUOTE_SUMMARY_URL_+self._symbol, user_agent_headers=self._data.user_agent_headers, params=params_dict, proxy=proxy)
|
||||
return result
|
||||
|
||||
def _fetch_and_parse(self) -> None:
|
||||
"""
|
||||
Fetches and parses the data from the API.
|
||||
"""
|
||||
result = self._fetch(self.proxy)
|
||||
try:
|
||||
data = result["quoteSummary"]["result"][0]
|
||||
@@ -128,15 +206,37 @@ class FundsData:
|
||||
|
||||
@staticmethod
|
||||
def _parse_raw_values(data, default=None):
|
||||
"""
|
||||
Parses raw values from the data.
|
||||
|
||||
Args:
|
||||
data: The data to parse.
|
||||
default: The default value if data is not a dictionary.
|
||||
|
||||
Returns:
|
||||
The parsed value or the default value.
|
||||
"""
|
||||
if not isinstance(data, dict):
|
||||
return data
|
||||
|
||||
return data.get("raw", default)
|
||||
|
||||
def _parse_description(self, data) -> None:
|
||||
"""
|
||||
Parses the description from the data.
|
||||
|
||||
Args:
|
||||
data: The data to parse.
|
||||
"""
|
||||
self._description = data.get("longBusinessSummary", "")
|
||||
|
||||
def _parse_top_holdings(self, data) -> None: # done
|
||||
def _parse_top_holdings(self, data) -> None:
|
||||
"""
|
||||
Parses the top holdings from the data.
|
||||
|
||||
Args:
|
||||
data: The data to parse.
|
||||
"""
|
||||
# asset classes
|
||||
self._asset_classes = {
|
||||
"cashPosition": self._parse_raw_values(data.get("cashPosition", None)),
|
||||
@@ -207,6 +307,12 @@ class FundsData:
|
||||
self._sector_weightings = dict((key, d[key]) for d in data.get("sectorWeightings", []) for key in d)
|
||||
|
||||
def _parse_fund_profile(self, data):
|
||||
"""
|
||||
Parses the fund profile from the data.
|
||||
|
||||
Args:
|
||||
data: The data to parse.
|
||||
"""
|
||||
self._fund_overview = {
|
||||
"categoryName": data.get("categoryName", None),
|
||||
"family": data.get("family", None),
|
||||
|
||||
@@ -9,7 +9,7 @@ import bisect
|
||||
|
||||
from yfinance import shared, utils
|
||||
from yfinance.const import _BASE_URL_, _PRICE_COLNAMES_
|
||||
from yfinance.exceptions import YFInvalidPeriodError, YFPricesMissingError, YFTzMissingError
|
||||
from yfinance.exceptions import YFInvalidPeriodError, YFPricesMissingError, YFTzMissingError, YFRateLimitError
|
||||
|
||||
class PriceHistory:
|
||||
def __init__(self, data, ticker, tz, session=None, proxy=None):
|
||||
@@ -78,7 +78,7 @@ class PriceHistory:
|
||||
|
||||
interval_user = interval
|
||||
period_user = period
|
||||
if repair and interval in ['5d', '1wk', '1mo', '3mo']:
|
||||
if repair and interval in ["5d", "1wk", "1mo", "3mo"]:
|
||||
# Yahoo's way of adjusting mutiday intervals is fundamentally broken.
|
||||
# Have to fetch 1d, adjust, then resample.
|
||||
if interval == '5d':
|
||||
@@ -184,6 +184,9 @@ class PriceHistory:
|
||||
"the issue. Thank you for your patience.")
|
||||
|
||||
data = data.json()
|
||||
# Special case for rate limits
|
||||
except YFRateLimitError:
|
||||
raise
|
||||
except Exception:
|
||||
if raise_errors:
|
||||
raise
|
||||
@@ -229,10 +232,9 @@ class PriceHistory:
|
||||
elif "chart" not in data or data["chart"]["result"] is None or not data["chart"]["result"] or not data["chart"]["result"][0]["indicators"]["quote"][0]:
|
||||
_exception = YFPricesMissingError(self.ticker, _price_data_debug)
|
||||
fail = True
|
||||
elif period is not None and period not in self._history_metadata["validRanges"]:
|
||||
# even if timestamp is in the data, the data doesn't encompass the period requested
|
||||
# User provided a bad period. The minimum should be '1d', but sometimes Yahoo accepts '1h'.
|
||||
_exception = YFInvalidPeriodError(self.ticker, period, self._history_metadata['validRanges'])
|
||||
elif period and period not in self._history_metadata['validRanges'] and not utils.is_valid_period_format(period):
|
||||
# User provided a bad period
|
||||
_exception = YFInvalidPeriodError(self.ticker, period, ", ".join(self._history_metadata['validRanges']))
|
||||
fail = True
|
||||
|
||||
if fail:
|
||||
@@ -247,6 +249,13 @@ class PriceHistory:
|
||||
self._reconstruct_start_interval = None
|
||||
return utils.empty_df()
|
||||
|
||||
# Process custom periods
|
||||
if period and period not in self._history_metadata.get("validRanges", []):
|
||||
end = int(_time.time())
|
||||
start = _datetime.date.fromtimestamp(end)
|
||||
start -= utils._interval_to_timedelta(period)
|
||||
start -= _datetime.timedelta(days=4)
|
||||
|
||||
# parse quotes
|
||||
quotes = utils.parse_quotes(data["chart"]["result"][0])
|
||||
# Yahoo bug fix - it often appends latest price even if after end date
|
||||
@@ -953,7 +962,7 @@ class PriceHistory:
|
||||
if prices_in_subunits:
|
||||
for c in _PRICE_COLNAMES_:
|
||||
df[c] *= m
|
||||
self._history_metadata["currency"] = currency
|
||||
self._history_metadata["currency"] = currency2
|
||||
|
||||
f_div = df['Dividends']!=0.0
|
||||
if f_div.any():
|
||||
@@ -1295,7 +1304,7 @@ class PriceHistory:
|
||||
|
||||
if df is None or df.empty:
|
||||
return df
|
||||
if interval != '1d':
|
||||
if interval in ['1wk', '1mo', '3mo', '1y']:
|
||||
return df
|
||||
|
||||
logger = utils.get_yf_logger()
|
||||
@@ -1426,7 +1435,7 @@ class PriceHistory:
|
||||
typical_volatility = np.nan
|
||||
else:
|
||||
diffs = df2['Close'].iloc[start:end-1].to_numpy() - df2['Low'].iloc[start+1:end].to_numpy()
|
||||
typical_volatility = np.median(np.abs(diffs))
|
||||
typical_volatility = np.mean(np.abs(diffs))
|
||||
|
||||
possibilities = []
|
||||
if (drops==0.0).all() and df2['Volume'].iloc[div_idx]==0:
|
||||
@@ -1605,9 +1614,9 @@ class PriceHistory:
|
||||
checks += ['adj_missing', 'adj_exceeds_div', 'div_exceeds_adj']
|
||||
|
||||
div_status_df['phantom'] = False
|
||||
phantom_proximity_threshold = _datetime.timedelta(days=7)
|
||||
phantom_proximity_threshold = _datetime.timedelta(days=17)
|
||||
f = div_status_df[['div_too_big', 'div_exceeds_adj']].any(axis=1)
|
||||
if f.any():
|
||||
if f.any() and len(div_status_df) > 1:
|
||||
# One/some of these may be phantom dividends. Clue is if another correct dividend is very close
|
||||
indices = np.where(f)[0]
|
||||
dts_to_check = div_status_df.index[f]
|
||||
@@ -1616,37 +1625,24 @@ class PriceHistory:
|
||||
div_dt = div.name
|
||||
phantom_dt = None
|
||||
if i > 0:
|
||||
prev_div = div_status_df.iloc[i-1]
|
||||
ratio1 = (div['div']/currency_divide) / prev_div['div']
|
||||
ratio2 = div['div'] / prev_div['div']
|
||||
divergence = min(abs(ratio1-1.0), abs(ratio2-1.0))
|
||||
if abs(div_dt-prev_div.name) <= phantom_proximity_threshold and not prev_div['phantom'] and divergence < 0.01:
|
||||
if prev_div.name in dts_to_check:
|
||||
# Both this and previous are anomalous, so mark smallest drop as phantom
|
||||
drop = div['drop']
|
||||
drop_prev = prev_div['drop']
|
||||
if drop > 1.5*drop_prev:
|
||||
phantom_dt = prev_div.name
|
||||
else:
|
||||
phantom_dt = div_dt
|
||||
else:
|
||||
phantom_dt = div_dt
|
||||
elif i < len(div_status_df)-1:
|
||||
next_div = div_status_df.iloc[i+1]
|
||||
ratio1 = (div['div']/currency_divide) / next_div['div']
|
||||
ratio2 = div['div'] / next_div['div']
|
||||
divergence = min(abs(ratio1-1.0), abs(ratio2-1.0))
|
||||
if abs(div_dt-next_div.name) <= phantom_proximity_threshold and divergence < 0.01:
|
||||
if next_div.name in dts_to_check:
|
||||
# Both this and previous are anomalous, so mark smallest drop as phantom
|
||||
drop = div['drop']
|
||||
drop_next = next_div['drop']
|
||||
if drop > 1.5*drop_next:
|
||||
phantom_dt = next_div.name
|
||||
else:
|
||||
phantom_dt = div_dt
|
||||
other_div = div_status_df.iloc[i-1]
|
||||
else:
|
||||
other_div = div_status_df.iloc[i+1]
|
||||
ratio1 = (div['div']/currency_divide) / other_div['div']
|
||||
ratio2 = div['div'] / other_div['div']
|
||||
divergence = min(abs(ratio1-1.0), abs(ratio2-1.0))
|
||||
if abs(div_dt-other_div.name) <= phantom_proximity_threshold and not other_div['phantom'] and divergence < 0.01:
|
||||
if other_div.name in dts_to_check:
|
||||
# Both this and previous are anomalous, so mark smallest drop as phantom
|
||||
drop = div['drop']
|
||||
drop_next = other_div['drop']
|
||||
if drop > 1.5*drop_next:
|
||||
phantom_dt = other_div.name
|
||||
else:
|
||||
phantom_dt = div_dt
|
||||
else:
|
||||
phantom_dt = div_dt
|
||||
|
||||
if phantom_dt:
|
||||
div_status_df.loc[phantom_dt, 'phantom'] = True
|
||||
for c in checks:
|
||||
@@ -1681,10 +1677,6 @@ class PriceHistory:
|
||||
div_status_df.loc[phantom_div_dt, c] = False
|
||||
checks.append('phantom')
|
||||
|
||||
if not div_status_df[checks].any().any():
|
||||
# Perfect
|
||||
return df
|
||||
|
||||
# Remove phantoms early
|
||||
if 'phantom' in div_status_df.columns:
|
||||
f_phantom = div_status_df['phantom']
|
||||
@@ -1709,6 +1701,29 @@ class PriceHistory:
|
||||
if 'phantom' in checks:
|
||||
checks.remove('phantom')
|
||||
|
||||
if not div_status_df[checks].any().any():
|
||||
# Maybe failed to detect a too-small div. If div is ~0.01x of previous and next, then
|
||||
# treat as a 0.01x error
|
||||
if len(div_status_df) > 1:
|
||||
for i in range(0, len(div_status_df)):
|
||||
r_pre, r_post = None, None
|
||||
if i > 0:
|
||||
r_pre = div_status_df['%'].iloc[i-1] / div_status_df['%'].iloc[i]
|
||||
if i < (len(div_status_df)-1):
|
||||
r_post = div_status_df['%'].iloc[i+1] / div_status_df['%'].iloc[i]
|
||||
r_pre = r_pre or r_post
|
||||
r_post = r_post or r_pre
|
||||
if abs(r_pre-currency_divide)<20 and abs(r_post-currency_divide)<20:
|
||||
div_dt = div_status_df.index[i]
|
||||
div_status_df.loc[div_dt, 'div_too_small'] = True
|
||||
|
||||
if not div_status_df[checks].any().any():
|
||||
# Perfect
|
||||
if df_modified:
|
||||
return df2
|
||||
else:
|
||||
return df
|
||||
|
||||
# Check if the present div-adjustment contradicts price action
|
||||
for i in range(len(div_status_df)):
|
||||
div_idx = div_status_df['idx'].iloc[i]
|
||||
@@ -1726,7 +1741,7 @@ class PriceHistory:
|
||||
lookahead_idx = bisect.bisect_left(df2.index, lookahead_date)
|
||||
lookahead_idx = min(lookahead_idx, len(df2)-1)
|
||||
# In rare cases, the price dropped 1 day before dividend (DVD.OL @ 2024-05-15)
|
||||
lookback_idx = div_idx-2 if div_idx > 1 else div_idx-1
|
||||
lookback_idx = max(0, div_idx-14)
|
||||
# Check for bad stock splits in the lookahead period -
|
||||
# if present, reduce lookahead to before.
|
||||
future_changes = df2['Close'].iloc[div_idx:lookahead_idx+1].pct_change()
|
||||
@@ -1748,8 +1763,6 @@ class PriceHistory:
|
||||
adjDeltas = x['Adj Low'].iloc[1:].to_numpy() - x['Adj Close'].iloc[:-1].to_numpy()
|
||||
adjDeltas = np.append([0.0], adjDeltas)
|
||||
x['adjDelta'] = adjDeltas
|
||||
for i in np.where(x['Dividends']>0)[0]:
|
||||
x.loc[x.index[i], 'adjDelta'] += x['Dividends'].iloc[i]*x['Adj'].iloc[i]
|
||||
deltas = x[['delta', 'adjDelta']]
|
||||
if div_pct > 0.05 and div_pct < 1.0:
|
||||
adjDiv = div * x['Adj'].iloc[0]
|
||||
@@ -1789,7 +1802,8 @@ class PriceHistory:
|
||||
elif adjDelta_drop > 0.39*adjDiv:
|
||||
# Still true that applied adjustment exceeds price action,
|
||||
# just not clear what solution is (if any).
|
||||
div_adj_exceeds_prices = True
|
||||
if (x['Adj']<1.0).any():
|
||||
div_adj_exceeds_prices = True
|
||||
break
|
||||
|
||||
# Can prune the space:
|
||||
@@ -1843,22 +1857,6 @@ class PriceHistory:
|
||||
|
||||
checks += ['adj_exceeds_prices', 'div_date_wrong']
|
||||
|
||||
if not div_status_df[checks].any().any():
|
||||
# Maybe failed to detect a too-small div. If div is ~0.01x of previous and next, then
|
||||
# treat as a 0.01x error
|
||||
if len(div_status_df) > 1:
|
||||
for i in range(0, len(div_status_df)):
|
||||
r_pre, r_post = None, None
|
||||
if i > 0:
|
||||
r_pre = div_status_df['%'].iloc[i-1] / div_status_df['%'].iloc[i]
|
||||
if i < (len(div_status_df)-1):
|
||||
r_post = div_status_df['%'].iloc[i+1] / div_status_df['%'].iloc[i]
|
||||
r_pre = r_pre or r_post
|
||||
r_post = r_post or r_pre
|
||||
if abs(r_pre-currency_divide)<20 and abs(r_post-currency_divide)<20:
|
||||
div_dt = div_status_df.index[i]
|
||||
div_status_df.loc[div_dt, 'div_too_small'] = True
|
||||
|
||||
for c in checks:
|
||||
if not div_status_df[c].any():
|
||||
div_status_df = div_status_df.drop(c, axis=1)
|
||||
@@ -1887,20 +1885,34 @@ class PriceHistory:
|
||||
div_pcts['avg yr yield'] = div_pcts['%'] / div_pcts['period']
|
||||
|
||||
for c in checks:
|
||||
if not cluster[c].to_numpy().any():
|
||||
cluster = cluster.drop(c, axis=1)
|
||||
cluster_checks = [c for c in checks if c in cluster.columns]
|
||||
|
||||
for c in cluster_checks:
|
||||
f_fail = cluster[c].to_numpy()
|
||||
n_fail = np.sum(f_fail)
|
||||
if n_fail in [0, n]:
|
||||
continue
|
||||
pct_fail = np.sum(f_fail) / n
|
||||
pct_fail = n_fail / n
|
||||
if c == 'div_too_big':
|
||||
true_threshold = 1.0
|
||||
fals_threshold = 0.2
|
||||
fals_threshold = 0.25
|
||||
|
||||
if 'div_date_wrong' in cluster.columns and (cluster[c] == cluster['div_date_wrong']).all():
|
||||
continue
|
||||
|
||||
if 'adj_exceeds_prices' in cluster.columns and (cluster[c] == (cluster[c] & cluster['adj_exceeds_prices'])).all():
|
||||
# More likely that true-positive. Maybe the div never happened
|
||||
# Treat div_too_big=False as false positives IFF adj_exceeds_prices=true AND
|
||||
# true ratio above (lowered) threshold.
|
||||
true_threshold = 0.5
|
||||
f_adj_exceeds_prices = cluster['adj_exceeds_prices'].to_numpy()
|
||||
n = np.sum(f_adj_exceeds_prices)
|
||||
n_fail = np.sum(f_fail[f_adj_exceeds_prices])
|
||||
pct_fail = n_fail / n
|
||||
if pct_fail > true_threshold:
|
||||
f = fc & div_status_df['adj_exceeds_prices'].to_numpy()
|
||||
div_status_df.loc[f, c] = True
|
||||
continue
|
||||
|
||||
if 'div_exceeds_adj' in cluster.columns and cluster['div_exceeds_adj'].all():
|
||||
@@ -1964,7 +1976,7 @@ class PriceHistory:
|
||||
if c == 'div_date_wrong':
|
||||
# Fine, these should be rare
|
||||
continue
|
||||
if c == 'div_pre_split':
|
||||
if c in ['div_pre_split', 'div_too_big_and_pre_split']:
|
||||
# Fine, these should be rare
|
||||
continue
|
||||
|
||||
@@ -2200,6 +2212,26 @@ class PriceHistory:
|
||||
df2_nan.loc[:enddt, 'Repaired?'] = True
|
||||
cluster.loc[dt, 'Fixed?'] = True
|
||||
|
||||
elif n_failed_checks == 3:
|
||||
if div_too_big and div_exceeds_adj and div_pre_split:
|
||||
k = 'too-big div & pre-split'
|
||||
correction = (1.0/currency_divide) * (1.0/df2['Stock Splits'].loc[dt])
|
||||
correct_div = row['div'] * correction
|
||||
df2.loc[dt, 'Dividends'] = correct_div
|
||||
|
||||
target_div_pct = row['%'] * correction
|
||||
target_adj = 1.0 - target_div_pct
|
||||
present_adj = row['present adj']
|
||||
# Also correct adjustment to match corrected dividend
|
||||
k += ' & div-adjust'
|
||||
adj_correction = target_adj / present_adj
|
||||
df2.loc[ :enddt, 'Adj Close'] *= adj_correction
|
||||
df2.loc[ :enddt, 'Repaired?'] = True
|
||||
df2_nan.loc[:enddt, 'Adj Close'] *= adj_correction
|
||||
df2_nan.loc[:enddt, 'Repaired?'] = True
|
||||
cluster.loc[dt, 'Fixed?'] = True
|
||||
div_repairs.setdefault(k, []).append(dt)
|
||||
|
||||
if cluster.empty:
|
||||
continue
|
||||
|
||||
@@ -2455,14 +2487,14 @@ class PriceHistory:
|
||||
|
||||
r = _1d_change_x / split_rcp
|
||||
f_down = _1d_change_x < 1.0 / threshold
|
||||
if f_down.any():
|
||||
# Discard where triggered by negative Adj Close after dividend
|
||||
f_neg = _1d_change_x < 0.0
|
||||
f_div = (df2['Dividends']>0).to_numpy()
|
||||
f_div_before = np.roll(f_div, 1)
|
||||
if f_down.ndim == 2:
|
||||
f_div_before = f_div_before[:, np.newaxis].repeat(f_down.shape[1], axis=1)
|
||||
f_down = f_down & ~(f_neg + f_div_before)
|
||||
# if f_down.any():
|
||||
# # Discard where triggered by negative Adj Close after dividend
|
||||
# f_neg = _1d_change_x < 0.0
|
||||
# f_div = (df2['Dividends']>0).to_numpy()
|
||||
# f_div_before = np.roll(f_div, 1)
|
||||
# if f_down.ndim == 2:
|
||||
# f_div_before = f_div_before[:, np.newaxis].repeat(f_down.shape[1], axis=1)
|
||||
# f_down = f_down & ~(f_neg + f_div_before)
|
||||
f_up = _1d_change_x > threshold
|
||||
f_up_ndims = len(f_up.shape)
|
||||
f_up_shifts = f_up if f_up_ndims==1 else f_up.any(axis=1)
|
||||
@@ -2485,7 +2517,7 @@ class PriceHistory:
|
||||
# assume false positive
|
||||
continue
|
||||
avg_vol_after = df2['Volume'].iloc[lookback:i-1].mean()
|
||||
if not np.isnan(avg_vol_after) and v/avg_vol_after < 2.0:
|
||||
if not np.isnan(avg_vol_after) and avg_vol_after > 0 and v/avg_vol_after < 2.0:
|
||||
# volume spike is actually a step-change, so
|
||||
# probably missing stock split
|
||||
continue
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# from io import StringIO
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
@@ -8,7 +6,7 @@ from yfinance.data import YfData
|
||||
from yfinance.const import _BASE_URL_
|
||||
from yfinance.exceptions import YFDataException
|
||||
|
||||
_QUOTE_SUMMARY_URL_ = f"{_BASE_URL_}/v10/finance/quoteSummary/"
|
||||
_QUOTE_SUMMARY_URL_ = f"{_BASE_URL_}/v10/finance/quoteSummary"
|
||||
|
||||
|
||||
class Holders:
|
||||
@@ -31,42 +29,36 @@ class Holders:
|
||||
@property
|
||||
def major(self) -> pd.DataFrame:
|
||||
if self._major is None:
|
||||
# self._scrape(self.proxy)
|
||||
self._fetch_and_parse()
|
||||
return self._major
|
||||
|
||||
@property
|
||||
def institutional(self) -> pd.DataFrame:
|
||||
if self._institutional is None:
|
||||
# self._scrape(self.proxy)
|
||||
self._fetch_and_parse()
|
||||
return self._institutional
|
||||
|
||||
@property
|
||||
def mutualfund(self) -> pd.DataFrame:
|
||||
if self._mutualfund is None:
|
||||
# self._scrape(self.proxy)
|
||||
self._fetch_and_parse()
|
||||
return self._mutualfund
|
||||
|
||||
@property
|
||||
def insider_transactions(self) -> pd.DataFrame:
|
||||
if self._insider_transactions is None:
|
||||
# self._scrape_insider_transactions(self.proxy)
|
||||
self._fetch_and_parse()
|
||||
return self._insider_transactions
|
||||
|
||||
@property
|
||||
def insider_purchases(self) -> pd.DataFrame:
|
||||
if self._insider_purchases is None:
|
||||
# self._scrape_insider_transactions(self.proxy)
|
||||
self._fetch_and_parse()
|
||||
return self._insider_purchases
|
||||
|
||||
@property
|
||||
def insider_roster(self) -> pd.DataFrame:
|
||||
if self._insider_roster is None:
|
||||
# self._scrape_insider_ros(self.proxy)
|
||||
self._fetch_and_parse()
|
||||
return self._insider_roster
|
||||
|
||||
@@ -187,8 +179,10 @@ class Holders:
|
||||
del owner["maxAge"]
|
||||
df = pd.DataFrame(holders)
|
||||
if not df.empty:
|
||||
df["positionDirectDate"] = pd.to_datetime(df["positionDirectDate"], unit="s")
|
||||
df["latestTransDate"] = pd.to_datetime(df["latestTransDate"], unit="s")
|
||||
if "positionDirectDate" in df:
|
||||
df["positionDirectDate"] = pd.to_datetime(df["positionDirectDate"], unit="s")
|
||||
if "latestTransDate" in df:
|
||||
df["latestTransDate"] = pd.to_datetime(df["latestTransDate"], unit="s")
|
||||
|
||||
df.rename(columns={
|
||||
"name": "Name",
|
||||
|
||||
@@ -7,7 +7,7 @@ import requests
|
||||
|
||||
from yfinance import utils
|
||||
from yfinance.data import YfData
|
||||
from yfinance.const import quote_summary_valid_modules, _BASE_URL_
|
||||
from yfinance.const import quote_summary_valid_modules, _BASE_URL_, _QUERY1_URL_
|
||||
from yfinance.exceptions import YFDataException, YFException
|
||||
|
||||
info_retired_keys_price = {"currentPrice", "dayHigh", "dayLow", "open", "previousClose", "volume", "volume24Hr"}
|
||||
@@ -590,33 +590,56 @@ class Quote:
|
||||
return None
|
||||
return result
|
||||
|
||||
def _fetch_additional_info(self, proxy):
|
||||
params_dict = {"symbols": self._symbol, "formatted": "false"}
|
||||
try:
|
||||
result = self._data.get_raw_json(f"{_QUERY1_URL_}/v7/finance/quote?",
|
||||
user_agent_headers=self._data.user_agent_headers,
|
||||
params=params_dict, proxy=proxy)
|
||||
except requests.exceptions.HTTPError as e:
|
||||
utils.get_yf_logger().error(str(e))
|
||||
return None
|
||||
return result
|
||||
|
||||
def _fetch_info(self, proxy):
|
||||
if self._already_fetched:
|
||||
return
|
||||
self._already_fetched = True
|
||||
modules = ['financialData', 'quoteType', 'defaultKeyStatistics', 'assetProfile', 'summaryDetail']
|
||||
result = self._fetch(proxy, modules=modules)
|
||||
result.update(self._fetch_additional_info(proxy))
|
||||
if result is None:
|
||||
self._info = {}
|
||||
return
|
||||
|
||||
result["quoteSummary"]["result"][0]["symbol"] = self._symbol
|
||||
query1_info = next(
|
||||
(info for info in result.get("quoteSummary", {}).get("result", []) if info["symbol"] == self._symbol),
|
||||
None,
|
||||
)
|
||||
# Most keys that appear in multiple dicts have same value. Except 'maxAge' because
|
||||
# Yahoo not consistent with days vs seconds. Fix it here:
|
||||
for k in query1_info:
|
||||
if "maxAge" in query1_info[k] and query1_info[k]["maxAge"] == 1:
|
||||
query1_info[k]["maxAge"] = 86400
|
||||
query1_info = {
|
||||
k1: v1
|
||||
for k, v in query1_info.items()
|
||||
if isinstance(v, dict)
|
||||
for k1, v1 in v.items()
|
||||
if v1
|
||||
}
|
||||
query1_info = {}
|
||||
for quote in ["quoteSummary", "quoteResponse"]:
|
||||
if quote in result:
|
||||
result[quote]["result"][0]["symbol"] = self._symbol
|
||||
query_info = next(
|
||||
(info for info in result.get(quote, {}).get("result", [])
|
||||
if info["symbol"] == self._symbol),
|
||||
None,
|
||||
)
|
||||
if query_info:
|
||||
query1_info.update(query_info)
|
||||
|
||||
# Normalize and flatten nested dictionaries while converting maxAge from days (1) to seconds (86400).
|
||||
# This handles Yahoo Finance API inconsistency where maxAge is sometimes expressed in days instead of seconds.
|
||||
processed_info = {}
|
||||
for k, v in query1_info.items():
|
||||
|
||||
# Handle nested dictionary
|
||||
if isinstance(v, dict):
|
||||
for k1, v1 in v.items():
|
||||
if v1 is not None:
|
||||
processed_info[k1] = 86400 if k1 == "maxAge" and v1 == 1 else v1
|
||||
|
||||
elif v is not None:
|
||||
processed_info[k] = v
|
||||
|
||||
query1_info = processed_info
|
||||
|
||||
# recursively format but only because of 'companyOfficers'
|
||||
|
||||
def _format(k, v):
|
||||
@@ -631,9 +654,8 @@ class Quote:
|
||||
else:
|
||||
v2 = v
|
||||
return v2
|
||||
for k, v in query1_info.items():
|
||||
query1_info[k] = _format(k, v)
|
||||
self._info = query1_info
|
||||
|
||||
self._info = {k: _format(k, v) for k, v in query1_info.items()}
|
||||
|
||||
def _fetch_complementary(self, proxy):
|
||||
if self._already_fetched_complementary:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .screener import Screener
|
||||
from .screener_query import EquityQuery
|
||||
from .query import EquityQuery
|
||||
from .screener import screen, PREDEFINED_SCREENER_QUERIES
|
||||
|
||||
__all__ = ['EquityQuery', 'Screener']
|
||||
__all__ = ['EquityQuery', 'FundQuery', 'screen', 'PREDEFINED_SCREENER_QUERIES']
|
||||
|
||||
218
yfinance/screener/query.py
Normal file
218
yfinance/screener/query.py
Normal file
@@ -0,0 +1,218 @@
|
||||
from abc import ABC, abstractmethod
|
||||
import numbers
|
||||
from typing import List, Union, Dict, TypeVar, Tuple
|
||||
|
||||
from yfinance.const import EQUITY_SCREENER_EQ_MAP, EQUITY_SCREENER_FIELDS
|
||||
from yfinance.const import FUND_SCREENER_EQ_MAP, FUND_SCREENER_FIELDS
|
||||
from yfinance.exceptions import YFNotImplementedError
|
||||
from ..utils import dynamic_docstring, generate_list_table_from_dict_universal
|
||||
|
||||
T = TypeVar('T', bound=Union[str, numbers.Real])
|
||||
|
||||
class QueryBase(ABC):
|
||||
def __init__(self, operator: str, operand: Union[ List['QueryBase'], Tuple[str, Tuple[Union[str, numbers.Real], ...]] ]):
|
||||
operator = operator.upper()
|
||||
|
||||
if not isinstance(operand, list):
|
||||
raise TypeError('Invalid operand type')
|
||||
if len(operand) <= 0:
|
||||
raise ValueError('Invalid field for EquityQuery')
|
||||
|
||||
if operator == 'IS-IN':
|
||||
self._validate_isin_operand(operand)
|
||||
elif operator in {'OR','AND'}:
|
||||
self._validate_or_and_operand(operand)
|
||||
elif operator == 'EQ':
|
||||
self._validate_eq_operand(operand)
|
||||
elif operator == 'BTWN':
|
||||
self._validate_btwn_operand(operand)
|
||||
elif operator in {'GT','LT','GTE','LTE'}:
|
||||
self._validate_gt_lt(operand)
|
||||
else:
|
||||
raise ValueError('Invalid Operator Value')
|
||||
|
||||
self.operator = operator
|
||||
self.operands = operand
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def valid_fields(self) -> List:
|
||||
raise YFNotImplementedError('valid_fields() needs to be implemented by child')
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def valid_values(self) -> Dict:
|
||||
raise YFNotImplementedError('valid_values() needs to be implemented by child')
|
||||
|
||||
def _validate_or_and_operand(self, operand: List['QueryBase']) -> None:
|
||||
if len(operand) <= 1:
|
||||
raise ValueError('Operand must be length longer than 1')
|
||||
if all(isinstance(e, QueryBase) for e in operand) is False:
|
||||
raise TypeError(f'Operand must be type {type(self)} for OR/AND')
|
||||
|
||||
def _validate_eq_operand(self, operand: List[Union[str, numbers.Real]]) -> None:
|
||||
if len(operand) != 2:
|
||||
raise ValueError('Operand must be length 2 for EQ')
|
||||
|
||||
if not any(operand[0] in fields_by_type for fields_by_type in self.valid_fields.values()):
|
||||
raise ValueError(f'Invalid field for {type(self)} "{operand[0]}"')
|
||||
if operand[0] in self.valid_values:
|
||||
vv = self.valid_values[operand[0]]
|
||||
if isinstance(vv, dict):
|
||||
# this data structure is slightly different to generate better docs,
|
||||
# need to unpack here.
|
||||
vv = set().union(*[e for e in vv.values()])
|
||||
if operand[1] not in vv:
|
||||
raise ValueError(f'Invalid EQ value "{operand[1]}"')
|
||||
|
||||
def _validate_btwn_operand(self, operand: List[Union[str, numbers.Real]]) -> None:
|
||||
if len(operand) != 3:
|
||||
raise ValueError('Operand must be length 3 for BTWN')
|
||||
if not any(operand[0] in fields_by_type for fields_by_type in self.valid_fields.values()):
|
||||
raise ValueError(f'Invalid field for {type(self)}')
|
||||
if isinstance(operand[1], numbers.Real) is False:
|
||||
raise TypeError('Invalid comparison type for BTWN')
|
||||
if isinstance(operand[2], numbers.Real) is False:
|
||||
raise TypeError('Invalid comparison type for BTWN')
|
||||
|
||||
def _validate_gt_lt(self, operand: List[Union[str, numbers.Real]]) -> None:
|
||||
if len(operand) != 2:
|
||||
raise ValueError('Operand must be length 2 for GT/LT')
|
||||
if not any(operand[0] in fields_by_type for fields_by_type in self.valid_fields.values()):
|
||||
raise ValueError(f'Invalid field for {type(self)} "{operand[0]}"')
|
||||
if isinstance(operand[1], numbers.Real) is False:
|
||||
raise TypeError('Invalid comparison type for GT/LT')
|
||||
|
||||
def _validate_isin_operand(self, operand: List['QueryBase']) -> None:
|
||||
if len(operand) < 2:
|
||||
raise ValueError('Operand must be length 2+ for IS-IN')
|
||||
|
||||
if not any(operand[0] in fields_by_type for fields_by_type in self.valid_fields.values()):
|
||||
raise ValueError(f'Invalid field for {type(self)} "{operand[0]}"')
|
||||
if operand[0] in self.valid_values:
|
||||
vv = self.valid_values[operand[0]]
|
||||
if isinstance(vv, dict):
|
||||
# this data structure is slightly different to generate better docs,
|
||||
# need to unpack here.
|
||||
vv = set().union(*[e for e in vv.values()])
|
||||
for i in range(1, len(operand)):
|
||||
if operand[i] not in vv:
|
||||
raise ValueError(f'Invalid EQ value "{operand[i]}"')
|
||||
|
||||
def to_dict(self) -> Dict:
|
||||
op = self.operator
|
||||
ops = self.operands
|
||||
if self.operator == 'IS-IN':
|
||||
# Expand to OR of EQ queries
|
||||
op = 'OR'
|
||||
ops = [type(self)('EQ', [self.operands[0], v]) for v in self.operands[1:]]
|
||||
return {
|
||||
"operator": op,
|
||||
"operands": [o.to_dict() if isinstance(o, QueryBase) else o for o in ops]
|
||||
}
|
||||
|
||||
def __repr__(self, indent=0) -> str:
|
||||
indent_str = " " * indent
|
||||
class_name = self.__class__.__name__
|
||||
|
||||
if isinstance(self.operands, list):
|
||||
# For list operands, check if they contain any QueryBase objects
|
||||
if any(isinstance(op, QueryBase) for op in self.operands):
|
||||
# If there are nested queries, format them with newlines
|
||||
operands_str = ",\n".join(
|
||||
f"{indent_str} {op.__repr__(indent + 1) if isinstance(op, QueryBase) else repr(op)}"
|
||||
for op in self.operands
|
||||
)
|
||||
return f"{class_name}({self.operator}, [\n{operands_str}\n{indent_str}])"
|
||||
else:
|
||||
# For lists of simple types, keep them on one line
|
||||
return f"{class_name}({self.operator}, {repr(self.operands)})"
|
||||
else:
|
||||
# Handle single operand
|
||||
return f"{class_name}({self.operator}, {repr(self.operands)})"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.__repr__()
|
||||
|
||||
|
||||
class EquityQuery(QueryBase):
|
||||
"""
|
||||
The `EquityQuery` class constructs filters for stocks based on specific criteria such as region, sector, exchange, and peer group.
|
||||
|
||||
Start with value operations: `EQ` (equals), `IS-IN` (is in), `BTWN` (between), `GT` (greater than), `LT` (less than), `GTE` (greater or equal), `LTE` (less or equal).
|
||||
|
||||
Combine them with logical operations: `AND`, `OR`.
|
||||
|
||||
Example:
|
||||
Predefined Yahoo query `aggressive_small_caps`:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from yfinance import EquityQuery
|
||||
|
||||
EquityQuery('and', [
|
||||
EquityQuery('is-in', ['exchange', 'NMS', 'NYQ']),
|
||||
EquityQuery('lt', ["epsgrowth.lasttwelvemonths", 15])
|
||||
])
|
||||
"""
|
||||
|
||||
@dynamic_docstring({"valid_operand_fields_table": generate_list_table_from_dict_universal(EQUITY_SCREENER_FIELDS)})
|
||||
@property
|
||||
def valid_fields(self) -> Dict:
|
||||
"""
|
||||
Valid operands, grouped by category.
|
||||
{valid_operand_fields_table}
|
||||
"""
|
||||
return EQUITY_SCREENER_FIELDS
|
||||
|
||||
@dynamic_docstring({"valid_values_table": generate_list_table_from_dict_universal(EQUITY_SCREENER_EQ_MAP, concat_keys=['exchange'])})
|
||||
@property
|
||||
def valid_values(self) -> Dict:
|
||||
"""
|
||||
Most operands take number values, but some have a restricted set of valid values.
|
||||
{valid_values_table}
|
||||
"""
|
||||
return EQUITY_SCREENER_EQ_MAP
|
||||
|
||||
|
||||
class FundQuery(QueryBase):
|
||||
"""
|
||||
The `FundQuery` class constructs filters for mutual funds based on specific criteria such as region, sector, exchange, and peer group.
|
||||
|
||||
Start with value operations: `EQ` (equals), `IS-IN` (is in), `BTWN` (between), `GT` (greater than), `LT` (less than), `GTE` (greater or equal), `LTE` (less or equal).
|
||||
|
||||
Combine them with logical operations: `AND`, `OR`.
|
||||
|
||||
Example:
|
||||
Predefined Yahoo query `solid_large_growth_funds`:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from yfinance import FundQuery
|
||||
|
||||
FundQuery('and', [
|
||||
FundQuery('eq', ['categoryname', 'Large Growth']),
|
||||
FundQuery('is-in', ['performanceratingoverall', 4, 5]),
|
||||
FundQuery('lt', ['initialinvestment', 100001]),
|
||||
FundQuery('lt', ['annualreturnnavy1categoryrank', 50]),
|
||||
FundQuery('eq', ['exchange', 'NAS'])
|
||||
])
|
||||
"""
|
||||
@dynamic_docstring({"valid_operand_fields_table": generate_list_table_from_dict_universal(FUND_SCREENER_FIELDS)})
|
||||
@property
|
||||
def valid_fields(self) -> Dict:
|
||||
"""
|
||||
Valid operands, grouped by category.
|
||||
{valid_operand_fields_table}
|
||||
"""
|
||||
return FUND_SCREENER_FIELDS
|
||||
|
||||
@dynamic_docstring({"valid_values_table": generate_list_table_from_dict_universal(FUND_SCREENER_EQ_MAP)})
|
||||
@property
|
||||
def valid_values(self) -> Dict:
|
||||
"""
|
||||
Most operands take number values, but some have a restricted set of valid values.
|
||||
{valid_values_table}
|
||||
"""
|
||||
return FUND_SCREENER_EQ_MAP
|
||||
|
||||
@@ -1,105 +1,180 @@
|
||||
from typing import Dict
|
||||
from .query import EquityQuery as EqyQy
|
||||
from .query import FundQuery as FndQy
|
||||
from .query import QueryBase, EquityQuery, FundQuery
|
||||
|
||||
from yfinance import utils
|
||||
from yfinance.const import _BASE_URL_
|
||||
from yfinance.data import YfData
|
||||
from yfinance.const import _BASE_URL_, PREDEFINED_SCREENER_BODY_MAP
|
||||
from .screener_query import Query
|
||||
|
||||
from ..utils import dynamic_docstring, generate_list_table_from_dict_universal
|
||||
|
||||
from typing import Union
|
||||
import requests
|
||||
|
||||
_SCREENER_URL_ = f"{_BASE_URL_}/v1/finance/screener"
|
||||
_PREDEFINED_URL_ = f"{_SCREENER_URL_}/predefined/saved"
|
||||
|
||||
class Screener:
|
||||
def __init__(self, session=None, proxy=None):
|
||||
self.proxy = proxy
|
||||
self.session = session
|
||||
PREDEFINED_SCREENER_BODY_DEFAULTS = {
|
||||
"offset":0, "size":25, "userId":"","userIdType":"guid"
|
||||
}
|
||||
|
||||
self._data: YfData = YfData(session=session)
|
||||
self._body: Dict = {}
|
||||
self._response: Dict = {}
|
||||
self._body_updated = False
|
||||
self._accepted_body_keys = {"offset","size","sortField","sortType","quoteType","query","userId","userIdType"}
|
||||
self._predefined_bodies = PREDEFINED_SCREENER_BODY_MAP.keys()
|
||||
PREDEFINED_SCREENER_QUERIES = {
|
||||
'aggressive_small_caps': {"sortField":"eodvolume", "sortType":"desc",
|
||||
"query": EqyQy('and', [EqyQy('is-in', ['exchange', 'NMS', 'NYQ']), EqyQy('lt', ["epsgrowth.lasttwelvemonths", 15])])},
|
||||
'day_gainers': {"sortField":"percentchange", "sortType":"DESC",
|
||||
"query": EqyQy('and', [EqyQy('gt', ['percentchange', 3]), EqyQy('eq', ['region', 'us']), EqyQy('gte', ['intradaymarketcap', 2000000000]), EqyQy('gte', ['intradayprice', 5]), EqyQy('gt', ['dayvolume', 15000])])},
|
||||
'day_losers': {"sortField":"percentchange", "sortType":"ASC",
|
||||
"query": EqyQy('and', [EqyQy('lt', ['percentchange', -2.5]), EqyQy('eq', ['region', 'us']), EqyQy('gte', ['intradaymarketcap', 2000000000]), EqyQy('gte', ['intradayprice', 5]), EqyQy('gt', ['dayvolume', 20000])])},
|
||||
'growth_technology_stocks': {"sortField":"eodvolume", "sortType":"desc",
|
||||
"query": EqyQy('and', [EqyQy('gte', ['quarterlyrevenuegrowth.quarterly', 25]), EqyQy('gte', ['epsgrowth.lasttwelvemonths', 25]), EqyQy('eq', ['sector', 'Technology']), EqyQy('is-in', ['exchange', 'NMS', 'NYQ'])])},
|
||||
'most_actives': {"sortField":"dayvolume", "sortType":"DESC",
|
||||
"query": EqyQy('and', [EqyQy('eq', ['region', 'us']), EqyQy('gte', ['intradaymarketcap', 2000000000]), EqyQy('gt', ['dayvolume', 5000000])])},
|
||||
'most_shorted_stocks': {"size":25, "offset":0, "sortField":"short_percentage_of_shares_outstanding.value", "sortType":"DESC",
|
||||
"query": EqyQy('and', [EqyQy('eq', ['region', 'us']), EqyQy('gt', ['intradayprice', 1]), EqyQy('gt', ['avgdailyvol3m', 200000])])},
|
||||
'small_cap_gainers': {"sortField":"eodvolume", "sortType":"desc",
|
||||
"query": EqyQy("and", [EqyQy("lt", ["intradaymarketcap",2000000000]), EqyQy("is-in", ["exchange", "NMS", "NYQ"])])},
|
||||
'undervalued_growth_stocks': {"sortType":"DESC", "sortField":"eodvolume",
|
||||
"query": EqyQy('and', [EqyQy('btwn', ['peratio.lasttwelvemonths', 0, 20]), EqyQy('lt', ['pegratio_5y', 1]), EqyQy('gte', ['epsgrowth.lasttwelvemonths', 25]), EqyQy('is-in', ['exchange', 'NMS', 'NYQ'])])},
|
||||
'undervalued_large_caps': {"sortField":"eodvolume", "sortType":"desc",
|
||||
"query": EqyQy('and', [EqyQy('btwn', ['peratio.lasttwelvemonths', 0, 20]), EqyQy('lt', ['pegratio_5y', 1]), EqyQy('btwn', ['intradaymarketcap', 10000000000, 100000000000]), EqyQy('is-in', ['exchange', 'NMS', 'NYQ'])])},
|
||||
'conservative_foreign_funds': {"sortType":"DESC", "sortField":"fundnetassets",
|
||||
"query": FndQy('and', [FndQy('is-in', ['categoryname', 'Foreign Large Value', 'Foreign Large Blend', 'Foreign Large Growth', 'Foreign Small/Mid Growth', 'Foreign Small/Mid Blend', 'Foreign Small/Mid Value']), FndQy('is-in', ['performanceratingoverall', 4, 5]), FndQy('lt', ['initialinvestment', 100001]), FndQy('lt', ['annualreturnnavy1categoryrank', 50]), FndQy('is-in', ['riskratingoverall', 1, 2, 3]), FndQy('eq', ['exchange', 'NAS'])])},
|
||||
'high_yield_bond': {"sortType":"DESC", "sortField":"fundnetassets",
|
||||
"query": FndQy('and', [FndQy('is-in', ['performanceratingoverall', 4, 5]), FndQy('lt', ['initialinvestment', 100001]), FndQy('lt', ['annualreturnnavy1categoryrank', 50]), FndQy('is-in', ['riskratingoverall', 1, 2, 3]), FndQy('eq', ['categoryname', 'High Yield Bond']), FndQy('eq', ['exchange', 'NAS'])])},
|
||||
'portfolio_anchors': {"sortType":"DESC", "sortField":"fundnetassets",
|
||||
"query": FndQy('and', [FndQy('eq', ['categoryname', 'Large Blend']), FndQy('is-in', ['performanceratingoverall', 4, 5]), FndQy('lt', ['initialinvestment', 100001]), FndQy('lt', ['annualreturnnavy1categoryrank', 50]), FndQy('eq', ['exchange', 'NAS'])])},
|
||||
'solid_large_growth_funds': {"sortType":"DESC", "sortField":"fundnetassets",
|
||||
"query": FndQy('and', [FndQy('eq', ['categoryname', 'Large Growth']), FndQy('is-in', ['performanceratingoverall', 4, 5]), FndQy('lt', ['initialinvestment', 100001]), FndQy('lt', ['annualreturnnavy1categoryrank', 50]), FndQy('eq', ['exchange', 'NAS'])])},
|
||||
'solid_midcap_growth_funds': {"sortType":"DESC", "sortField":"fundnetassets",
|
||||
"query": FndQy('and', [FndQy('eq', ['categoryname', 'Mid-Cap Growth']), FndQy('is-in', ['performanceratingoverall', 4, 5]), FndQy('lt', ['initialinvestment', 100001]), FndQy('lt', ['annualreturnnavy1categoryrank', 50]), FndQy('eq', ['exchange', 'NAS'])])},
|
||||
'top_mutual_funds': {"sortType":"DESC", "sortField":"percentchange",
|
||||
"query": FndQy('and', [FndQy('gt', ['intradayprice', 15]), FndQy('is-in', ['performanceratingoverall', 4, 5]), FndQy('gt', ['initialinvestment', 1000]), FndQy('eq', ['exchange', 'NAS'])])}
|
||||
}
|
||||
|
||||
@property
|
||||
def body(self) -> Dict:
|
||||
return self._body
|
||||
|
||||
@property
|
||||
def response(self) -> Dict:
|
||||
if self._body_updated or self._response is None:
|
||||
self._fetch_and_parse()
|
||||
|
||||
self._body_updated = False
|
||||
return self._response
|
||||
|
||||
@property
|
||||
def predefined_bodies(self) -> Dict:
|
||||
return self._predefined_bodies
|
||||
@dynamic_docstring({"predefined_screeners": generate_list_table_from_dict_universal(PREDEFINED_SCREENER_QUERIES, bullets=True, title='Predefined queries (Dec-2024)')})
|
||||
def screen(query: Union[str, EquityQuery, FundQuery],
|
||||
offset: int = None,
|
||||
size: int = None,
|
||||
sortField: str = None,
|
||||
sortAsc: bool = None,
|
||||
userId: str = None,
|
||||
userIdType: str = None,
|
||||
session = None, proxy = None):
|
||||
"""
|
||||
Run a screen: predefined query, or custom query.
|
||||
|
||||
def set_default_body(self, query: Query, offset: int = 0, size: int = 100, sortField: str = "ticker", sortType: str = "desc", quoteType: str = "equity", userId: str = "", userIdType: str = "guid") -> None:
|
||||
self._body_updated = True
|
||||
:Parameters:
|
||||
* Defaults only apply if query = EquityQuery or FundQuery
|
||||
query : str | Query:
|
||||
The query to execute, either name of predefined or custom query.
|
||||
For predefined list run yf.PREDEFINED_SCREENER_QUERIES.keys()
|
||||
offset : int
|
||||
The offset for the results. Default 0.
|
||||
size : int
|
||||
number of results to return. Default 100, maximum 250 (Yahoo)
|
||||
sortField : str
|
||||
field to sort by. Default "ticker"
|
||||
sortAsc : bool
|
||||
Sort ascending? Default False
|
||||
userId : str
|
||||
The user ID. Default empty.
|
||||
userIdType : str
|
||||
Type of user ID (e.g., "guid"). Default "guid".
|
||||
|
||||
self._body = {
|
||||
"offset": offset,
|
||||
"size": size,
|
||||
"sortField": sortField,
|
||||
"sortType": sortType,
|
||||
"quoteType": quoteType,
|
||||
"query": query.to_dict(),
|
||||
"userId": userId,
|
||||
"userIdType": userIdType
|
||||
}
|
||||
Example: predefined query
|
||||
.. code-block:: python
|
||||
|
||||
def set_predefined_body(self, k: str) -> None:
|
||||
body = PREDEFINED_SCREENER_BODY_MAP.get(k, None)
|
||||
if not body:
|
||||
raise ValueError(f'Invalid key {k} provided for predefined screener')
|
||||
|
||||
self._body_updated = True
|
||||
self._body = body
|
||||
import yfinance as yf
|
||||
response = yf.screen("aggressive_small_caps")
|
||||
|
||||
def set_body(self, body: Dict) -> None:
|
||||
missing_keys = [key for key in self._accepted_body_keys if key not in body]
|
||||
if missing_keys:
|
||||
raise ValueError(f"Missing required keys in body: {missing_keys}")
|
||||
Example: custom query
|
||||
.. code-block:: python
|
||||
|
||||
extra_keys = [key for key in body if key not in self._accepted_body_keys]
|
||||
if extra_keys:
|
||||
raise ValueError(f"Body contains extra keys: {extra_keys}")
|
||||
import yfinance as yf
|
||||
from yfinance import EquityQuery
|
||||
q = EquityQuery('and', [
|
||||
EquityQuery('gt', ['percentchange', 3]),
|
||||
EquityQuery('eq', ['region', 'us'])
|
||||
])
|
||||
response = yf.screen(q, sortField = 'percentchange', sortAsc = True)
|
||||
|
||||
self._body_updated = True
|
||||
self._body = body
|
||||
To access predefineds query code
|
||||
.. code-block:: python
|
||||
|
||||
import yfinance as yf
|
||||
query = yf.PREDEFINED_SCREENER_QUERIES['aggressive_small_caps']
|
||||
|
||||
def patch_body(self, values: Dict) -> None:
|
||||
extra_keys = [key for key in values if key not in self._accepted_body_keys]
|
||||
if extra_keys:
|
||||
raise ValueError(f"Body contains extra keys: {extra_keys}")
|
||||
|
||||
self._body_updated = True
|
||||
for k in values:
|
||||
self._body[k] = values[k]
|
||||
{predefined_screeners}
|
||||
"""
|
||||
|
||||
def _validate_body(self) -> None:
|
||||
if not all(k in self._body for k in self._accepted_body_keys):
|
||||
raise ValueError("Missing required keys in body")
|
||||
# Only use defaults when user NOT give a predefined, because
|
||||
# Yahoo's predefined endpoint auto-applies defaults. Also,
|
||||
# that endpoint might be ignoring these fields.
|
||||
defaults = {
|
||||
'offset': 0,
|
||||
'size': 25,
|
||||
'sortField': 'ticker',
|
||||
'sortAsc': False,
|
||||
'userId': "",
|
||||
'userIdType': "guid"
|
||||
}
|
||||
|
||||
def _fetch(self) -> Dict:
|
||||
params_dict = {"corsDomain": "finance.yahoo.com", "formatted": "false", "lang": "en-US", "region": "US"}
|
||||
response = self._data.post(_SCREENER_URL_, body=self.body, user_agent_headers=self._data.user_agent_headers, params=params_dict, proxy=self.proxy)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
def _fetch_and_parse(self) -> None:
|
||||
response = None
|
||||
self._validate_body()
|
||||
|
||||
if size is not None and size > 250:
|
||||
raise ValueError("Yahoo limits query size to 250, reduce size.")
|
||||
|
||||
fields = dict(locals())
|
||||
for k in ['query', 'session', 'proxy']:
|
||||
if k in fields:
|
||||
del fields[k]
|
||||
|
||||
params_dict = {"corsDomain": "finance.yahoo.com", "formatted": "false", "lang": "en-US", "region": "US"}
|
||||
|
||||
post_query = None
|
||||
if isinstance(query, str):
|
||||
# post_query = PREDEFINED_SCREENER_QUERIES[query]
|
||||
# Switch to Yahoo's predefined endpoint
|
||||
_data = YfData(session=session)
|
||||
params_dict['scrIds'] = query
|
||||
for k,v in fields.items():
|
||||
if v is not None:
|
||||
params_dict[k] = v
|
||||
resp = _data.get(url=_PREDEFINED_URL_, params=params_dict, proxy=proxy)
|
||||
try:
|
||||
response = self._fetch()
|
||||
self._response = response['finance']['result'][0]
|
||||
except Exception as e:
|
||||
logger = utils.get_yf_logger()
|
||||
logger.error(f"Failed to get screener data for '{self._body.get('query', 'query not set')}' reason: {e}")
|
||||
logger.debug("Got response: ")
|
||||
logger.debug("-------------")
|
||||
logger.debug(f" {response}")
|
||||
logger.debug("-------------")
|
||||
resp.raise_for_status()
|
||||
except requests.exceptions.HTTPError:
|
||||
if query not in PREDEFINED_SCREENER_QUERIES:
|
||||
print(f"yfinance.screen: '{query}' is probably not a predefined query.")
|
||||
raise
|
||||
return resp.json()["finance"]["result"][0]
|
||||
|
||||
elif isinstance(query, QueryBase):
|
||||
# Prepare other fields
|
||||
for k in defaults:
|
||||
if k not in fields or fields[k] is None:
|
||||
fields[k] = defaults[k]
|
||||
fields['sortType'] = 'ASC' if fields['sortAsc'] else 'DESC'
|
||||
del fields['sortAsc']
|
||||
|
||||
post_query = fields
|
||||
post_query['query'] = query
|
||||
|
||||
else:
|
||||
raise ValueError(f'Query must be type str or QueryBase, not "{type(query)}"')
|
||||
|
||||
if query is None:
|
||||
raise ValueError('No query provided')
|
||||
|
||||
if isinstance(post_query['query'], EqyQy):
|
||||
post_query['quoteType'] = 'EQUITY'
|
||||
elif isinstance(post_query['query'], FndQy):
|
||||
post_query['quoteType'] = 'MUTUALFUND'
|
||||
post_query['query'] = post_query['query'].to_dict()
|
||||
|
||||
# Fetch
|
||||
_data = YfData(session=session)
|
||||
response = _data.post(_SCREENER_URL_,
|
||||
body=post_query,
|
||||
user_agent_headers=_data.user_agent_headers,
|
||||
params=params_dict,
|
||||
proxy=proxy)
|
||||
response.raise_for_status()
|
||||
return response.json()['finance']['result'][0]
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
import numbers
|
||||
from typing import List, Union, Dict, Set
|
||||
|
||||
from yfinance.const import EQUITY_SCREENER_EQ_MAP, EQUITY_SCREENER_FIELDS
|
||||
from yfinance.exceptions import YFNotImplementedError
|
||||
|
||||
class Query:
|
||||
def __init__(self, operator: str, operand: Union[numbers.Real, str, List['Query']]):
|
||||
self.operator = operator
|
||||
self.operands = operand
|
||||
|
||||
def to_dict(self) -> Dict:
|
||||
raise YFNotImplementedError('to_dict() needs to be implemented by children classes')
|
||||
|
||||
class EquityQuery(Query):
|
||||
def __init__(self, operator: str, operand: Union[numbers.Real, str, List['EquityQuery']]):
|
||||
operator = operator.upper()
|
||||
|
||||
if not isinstance(operand, list):
|
||||
raise TypeError('Invalid operand type')
|
||||
if len(operand) <= 0:
|
||||
raise ValueError('Invalid field for Screener')
|
||||
|
||||
if operator in {'OR','AND'}:
|
||||
self._validate_or_and_operand(operand)
|
||||
elif operator == 'EQ':
|
||||
self._validate_eq_operand(operand)
|
||||
elif operator == 'BTWN':
|
||||
self._validate_btwn_operand(operand)
|
||||
elif operator in {'GT','LT'}:
|
||||
self._validate_gt_lt(operand)
|
||||
else:
|
||||
raise ValueError('Invalid Operator Value')
|
||||
|
||||
self.operator = operator
|
||||
self.operands = operand
|
||||
self._valid_eq_map = EQUITY_SCREENER_EQ_MAP
|
||||
self._valid_fields = EQUITY_SCREENER_FIELDS
|
||||
|
||||
@property
|
||||
def valid_eq_map(self) -> Dict:
|
||||
return self._valid_eq_map
|
||||
|
||||
@property
|
||||
def valid_fields(self) -> Set:
|
||||
return self._valid_fields
|
||||
|
||||
def _validate_or_and_operand(self, operand: List['EquityQuery']) -> None:
|
||||
if len(operand) <= 1:
|
||||
raise ValueError('Operand must be length longer than 1')
|
||||
if all(isinstance(e, EquityQuery) for e in operand) is False:
|
||||
raise TypeError('Operand must be type EquityQuery for OR/AND')
|
||||
|
||||
def _validate_eq_operand(self, operand: List[Union[str, numbers.Real]]) -> None:
|
||||
if len(operand) != 2:
|
||||
raise ValueError('Operand must be length 2 for EQ')
|
||||
if operand[0] not in EQUITY_SCREENER_FIELDS:
|
||||
raise ValueError('Invalid field for Screener')
|
||||
if operand[0] not in EQUITY_SCREENER_EQ_MAP:
|
||||
raise ValueError('Invalid EQ key')
|
||||
if operand[1] not in EQUITY_SCREENER_EQ_MAP[operand[0]]:
|
||||
raise ValueError('Invalid EQ value')
|
||||
|
||||
def _validate_btwn_operand(self, operand: List[Union[str, numbers.Real]]) -> None:
|
||||
if len(operand) != 3:
|
||||
raise ValueError('Operand must be length 3 for BTWN')
|
||||
if operand[0] not in EQUITY_SCREENER_FIELDS:
|
||||
raise ValueError('Invalid field for Screener')
|
||||
if isinstance(operand[1], numbers.Real) is False:
|
||||
raise TypeError('Invalid comparison type for BTWN')
|
||||
if isinstance(operand[2], numbers.Real) is False:
|
||||
raise TypeError('Invalid comparison type for BTWN')
|
||||
|
||||
def _validate_gt_lt(self, operand: List[Union[str, numbers.Real]]) -> None:
|
||||
if len(operand) != 2:
|
||||
raise ValueError('Operand must be length 2 for GT/LT')
|
||||
if operand[0] not in EQUITY_SCREENER_FIELDS:
|
||||
raise ValueError('Invalid field for Screener')
|
||||
if isinstance(operand[1], numbers.Real) is False:
|
||||
raise TypeError('Invalid comparison type for GT/LT')
|
||||
|
||||
def to_dict(self) -> Dict:
|
||||
return {
|
||||
"operator": self.operator,
|
||||
"operands": [operand.to_dict() if isinstance(operand, EquityQuery) else operand for operand in self.operands]
|
||||
}
|
||||
158
yfinance/search.py
Normal file
158
yfinance/search.py
Normal file
@@ -0,0 +1,158 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# yfinance - market data downloader
|
||||
# https://github.com/ranaroussi/yfinance
|
||||
#
|
||||
# Copyright 2017-2019 Ran Aroussi
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
import json as _json
|
||||
|
||||
from . import utils
|
||||
from .const import _BASE_URL_
|
||||
from .data import YfData
|
||||
|
||||
|
||||
class Search:
|
||||
def __init__(self, query, max_results=8, news_count=8, lists_count=8, include_cb=True, include_nav_links=False,
|
||||
include_research=False, include_cultural_assets=False, enable_fuzzy_query=False, recommended=8,
|
||||
session=None, proxy=None, timeout=30, raise_errors=True):
|
||||
"""
|
||||
Fetches and organizes search results from Yahoo Finance, including stock quotes and news articles.
|
||||
|
||||
Args:
|
||||
query: The search query (ticker symbol or company name).
|
||||
max_results: Maximum number of stock quotes to return (default 8).
|
||||
news_count: Number of news articles to include (default 8).
|
||||
lists_count: Number of lists to include (default 8).
|
||||
include_cb: Include the company breakdown (default True).
|
||||
include_nav_links: Include the navigation links (default False).
|
||||
include_research: Include the research reports (default False).
|
||||
include_cultural_assets: Include the cultural assets (default False).
|
||||
enable_fuzzy_query: Enable fuzzy search for typos (default False).
|
||||
recommended: Recommended number of results to return (default 8).
|
||||
session: Custom HTTP session for requests (default None).
|
||||
proxy: Proxy settings for requests (default None).
|
||||
timeout: Request timeout in seconds (default 30).
|
||||
raise_errors: Raise exceptions on error (default True).
|
||||
"""
|
||||
self.query = query
|
||||
self.max_results = max_results
|
||||
self.enable_fuzzy_query = enable_fuzzy_query
|
||||
self.news_count = news_count
|
||||
self.session = session
|
||||
self.proxy = proxy
|
||||
self.timeout = timeout
|
||||
self.raise_errors = raise_errors
|
||||
|
||||
self.lists_count = lists_count
|
||||
self.include_cb = include_cb
|
||||
self.nav_links = include_nav_links
|
||||
self.enable_research = include_research
|
||||
self.enable_cultural_assets = include_cultural_assets
|
||||
self.recommended = recommended
|
||||
|
||||
self._data = YfData(session=self.session)
|
||||
self._logger = utils.get_yf_logger()
|
||||
|
||||
self._response = {}
|
||||
self._all = {}
|
||||
self._quotes = []
|
||||
self._news = []
|
||||
self._lists = []
|
||||
self._research = []
|
||||
self._nav = []
|
||||
|
||||
self.search()
|
||||
|
||||
def search(self) -> 'Search':
|
||||
"""Search using the query parameters defined in the constructor."""
|
||||
url = f"{_BASE_URL_}/v1/finance/search"
|
||||
params = {
|
||||
"q": self.query,
|
||||
"quotesCount": self.max_results,
|
||||
"enableFuzzyQuery": self.enable_fuzzy_query,
|
||||
"newsCount": self.news_count,
|
||||
"quotesQueryId": "tss_match_phrase_query",
|
||||
"newsQueryId": "news_cie_vespa",
|
||||
"listsCount": self.lists_count,
|
||||
"enableCb": self.include_cb,
|
||||
"enableNavLinks": self.nav_links,
|
||||
"enableResearchReports": self.enable_research,
|
||||
"enableCulturalAssets": self.enable_cultural_assets,
|
||||
"recommendedCount": self.recommended
|
||||
}
|
||||
|
||||
self._logger.debug(f'{self.query}: Yahoo GET parameters: {str(dict(params))}')
|
||||
|
||||
data = self._data.cache_get(url=url, params=params, proxy=self.proxy, timeout=self.timeout)
|
||||
if data is None or "Will be right back" in data.text:
|
||||
raise RuntimeError("*** YAHOO! FINANCE IS CURRENTLY DOWN! ***\n"
|
||||
"Our engineers are working quickly to resolve "
|
||||
"the issue. Thank you for your patience.")
|
||||
try:
|
||||
data = data.json()
|
||||
except _json.JSONDecodeError:
|
||||
self._logger.error(f"{self.query}: Failed to retrieve search results and received faulty response instead.")
|
||||
data = {}
|
||||
|
||||
self._response = data
|
||||
# Filter quotes to only include symbols
|
||||
self._quotes = [quote for quote in data.get("quotes", []) if "symbol" in quote]
|
||||
self._news = data.get("news", [])
|
||||
self._lists = data.get("lists", [])
|
||||
self._research = data.get("researchReports", [])
|
||||
self._nav = data.get("nav", [])
|
||||
|
||||
self._all = {"quotes": self._quotes, "news": self._news, "lists": self._lists, "research": self._research,
|
||||
"nav": self._nav}
|
||||
|
||||
return self
|
||||
|
||||
@property
|
||||
def quotes(self) -> 'list':
|
||||
"""Get the quotes from the search results."""
|
||||
return self._quotes
|
||||
|
||||
@property
|
||||
def news(self) -> 'list':
|
||||
"""Get the news from the search results."""
|
||||
return self._news
|
||||
|
||||
@property
|
||||
def lists(self) -> 'list':
|
||||
"""Get the lists from the search results."""
|
||||
return self._lists
|
||||
|
||||
@property
|
||||
def research(self) -> 'list':
|
||||
"""Get the research reports from the search results."""
|
||||
return self._research
|
||||
|
||||
@property
|
||||
def nav(self) -> 'list':
|
||||
"""Get the navigation links from the search results."""
|
||||
return self._nav
|
||||
|
||||
@property
|
||||
def all(self) -> 'dict[str,list]':
|
||||
"""Get all the results from the search results: filtered down version of response."""
|
||||
return self._all
|
||||
|
||||
@property
|
||||
def response(self) -> 'dict':
|
||||
"""Get the raw response from the search results."""
|
||||
return self._response
|
||||
@@ -23,6 +23,7 @@ from __future__ import print_function
|
||||
|
||||
import datetime as _datetime
|
||||
import logging
|
||||
import re
|
||||
import re as _re
|
||||
import sys as _sys
|
||||
import threading
|
||||
@@ -39,7 +40,6 @@ from dateutil.relativedelta import relativedelta
|
||||
from pytz import UnknownTimeZoneError
|
||||
|
||||
from yfinance import const
|
||||
from .const import _BASE_URL_
|
||||
|
||||
user_agent_headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
|
||||
@@ -189,24 +189,27 @@ def is_isin(string):
|
||||
def get_all_by_isin(isin, proxy=None, session=None):
|
||||
if not (is_isin(isin)):
|
||||
raise ValueError("Invalid ISIN number")
|
||||
|
||||
# Deferred this to prevent circular imports
|
||||
from .search import Search
|
||||
|
||||
session = session or _requests
|
||||
url = f"{_BASE_URL_}/v1/finance/search?q={isin}"
|
||||
data = session.get(url=url, proxies=proxy, headers=user_agent_headers)
|
||||
try:
|
||||
data = data.json()
|
||||
ticker = data.get('quotes', [{}])[0]
|
||||
return {
|
||||
'ticker': {
|
||||
'symbol': ticker['symbol'],
|
||||
'shortname': ticker['shortname'],
|
||||
'longname': ticker['longname'],
|
||||
'type': ticker['quoteType'],
|
||||
'exchange': ticker['exchDisp'],
|
||||
},
|
||||
'news': data.get('news', [])
|
||||
}
|
||||
except Exception:
|
||||
return {}
|
||||
search = Search(query=isin, max_results=1, session=session, proxy=proxy)
|
||||
|
||||
# Extract the first quote and news
|
||||
ticker = search.quotes[0] if search.quotes else {}
|
||||
news = search.news
|
||||
|
||||
return {
|
||||
'ticker': {
|
||||
'symbol': ticker.get('symbol', ''),
|
||||
'shortname': ticker.get('shortname', ''),
|
||||
'longname': ticker.get('longname', ''),
|
||||
'type': ticker.get('quoteType', ''),
|
||||
'exchange': ticker.get('exchDisp', ''),
|
||||
},
|
||||
'news': news
|
||||
}
|
||||
|
||||
|
||||
def get_ticker_by_isin(isin, proxy=None, session=None):
|
||||
@@ -427,26 +430,28 @@ def _parse_user_dt(dt, exchange_tz):
|
||||
|
||||
|
||||
def _interval_to_timedelta(interval):
|
||||
if interval == "1mo":
|
||||
return relativedelta(months=1)
|
||||
elif interval == "3mo":
|
||||
return relativedelta(months=3)
|
||||
elif interval == "6mo":
|
||||
return relativedelta(months=6)
|
||||
elif interval == "1y":
|
||||
return relativedelta(years=1)
|
||||
elif interval == "2y":
|
||||
return relativedelta(years=2)
|
||||
elif interval == "5y":
|
||||
return relativedelta(years=5)
|
||||
elif interval == "10y":
|
||||
return relativedelta(years=10)
|
||||
elif interval == "1wk":
|
||||
return _pd.Timedelta(days=7)
|
||||
if interval[-1] == "d":
|
||||
return relativedelta(days=int(interval[:-1]))
|
||||
elif interval[-2:] == "wk":
|
||||
return relativedelta(weeks=int(interval[:-2]))
|
||||
elif interval[-2:] == "mo":
|
||||
return relativedelta(months=int(interval[:-2]))
|
||||
elif interval[-1] == "y":
|
||||
return relativedelta(years=int(interval[:-1]))
|
||||
else:
|
||||
return _pd.Timedelta(interval)
|
||||
|
||||
|
||||
def is_valid_period_format(period):
|
||||
"""Check if the provided period has a valid format."""
|
||||
if period is None:
|
||||
return False
|
||||
|
||||
# Regex pattern to match valid period formats like '1d', '2wk', '3mo', '1y'
|
||||
valid_pattern = r"^[1-9]\d*(d|wk|mo|y)$"
|
||||
return bool(re.match(valid_pattern, period))
|
||||
|
||||
|
||||
def auto_adjust(data):
|
||||
col_order = data.columns
|
||||
df = data.copy()
|
||||
@@ -613,7 +618,7 @@ def fix_Yahoo_returning_live_separate(quotes, interval, tz_exchange, repair=Fals
|
||||
# - exception is volume, *slightly* greater on final row (and matches website)
|
||||
if dt1.date() == dt2.date():
|
||||
# Last two rows are on same day. Drop second-to-last row
|
||||
quotes = quotes.drop(quotes.index[n - 2])
|
||||
quotes = _pd.concat([quotes.iloc[:-2], quotes.iloc[-1:]])
|
||||
else:
|
||||
if interval == "1wk":
|
||||
last_rows_same_interval = dt1.year == dt2.year and dt1.week == dt2.week
|
||||
@@ -932,3 +937,166 @@ class ProgressBar:
|
||||
def __str__(self):
|
||||
return str(self.prog_bar)
|
||||
|
||||
def dynamic_docstring(placeholders: dict):
|
||||
"""
|
||||
A decorator to dynamically update the docstring of a function or method.
|
||||
|
||||
Args:
|
||||
placeholders (dict): A dictionary where keys are placeholder names and values are the strings to insert.
|
||||
"""
|
||||
def decorator(func):
|
||||
if func.__doc__:
|
||||
docstring = func.__doc__
|
||||
# Replace each placeholder with its corresponding value
|
||||
for key, value in placeholders.items():
|
||||
docstring = docstring.replace(f"{{{key}}}", value)
|
||||
func.__doc__ = docstring
|
||||
return func
|
||||
return decorator
|
||||
|
||||
def _generate_table_configurations(title = None) -> str:
|
||||
import textwrap
|
||||
if title is None:
|
||||
title = "Permitted Keys/Values"
|
||||
table = textwrap.dedent(f"""
|
||||
.. list-table:: {title}
|
||||
:widths: 25 75
|
||||
:header-rows: 1
|
||||
|
||||
* - Key
|
||||
- Values
|
||||
""")
|
||||
|
||||
return table
|
||||
|
||||
def generate_list_table_from_dict(data: dict, bullets: bool=True, title: str=None) -> str:
|
||||
"""
|
||||
Generate a list-table for the docstring showing permitted keys/values.
|
||||
"""
|
||||
table = _generate_table_configurations(title)
|
||||
for k in sorted(data.keys()):
|
||||
values = data[k]
|
||||
table += ' '*3 + f"* - {k}\n"
|
||||
lengths = [len(str(v)) for v in values]
|
||||
if bullets and max(lengths) > 5:
|
||||
table += ' '*5 + "-\n"
|
||||
for value in sorted(values):
|
||||
table += ' '*7 + f"- {value}\n"
|
||||
else:
|
||||
value_str = ', '.join(sorted(values))
|
||||
table += ' '*5 + f"- {value_str}\n"
|
||||
return table
|
||||
|
||||
# def generate_list_table_from_dict_of_dict(data: dict, bullets: bool=True, title: str=None) -> str:
|
||||
# """
|
||||
# Generate a list-table for the docstring showing permitted keys/values.
|
||||
# """
|
||||
# table = _generate_table_configurations(title)
|
||||
# for k in sorted(data.keys()):
|
||||
# values = data[k]
|
||||
# table += ' '*3 + f"* - {k}\n"
|
||||
# if bullets:
|
||||
# table += ' '*5 + "-\n"
|
||||
# for value in sorted(values):
|
||||
# table += ' '*7 + f"- {value}\n"
|
||||
# else:
|
||||
# table += ' '*5 + f"- {values}\n"
|
||||
# return table
|
||||
|
||||
|
||||
def generate_list_table_from_dict_universal(data: dict, bullets: bool=True, title: str=None, concat_keys=[]) -> str:
|
||||
"""
|
||||
Generate a list-table for the docstring showing permitted keys/values.
|
||||
"""
|
||||
table = _generate_table_configurations(title)
|
||||
for k in data.keys():
|
||||
values = data[k]
|
||||
|
||||
table += ' '*3 + f"* - {k}\n"
|
||||
if isinstance(values, dict):
|
||||
table_add = ''
|
||||
|
||||
concat_short_lines = k in concat_keys
|
||||
|
||||
if bullets:
|
||||
k_keys = sorted(list(values.keys()))
|
||||
current_line = ''
|
||||
block_format = 'query' in k_keys
|
||||
for i in range(len(k_keys)):
|
||||
k2 = k_keys[i]
|
||||
k2_values = values[k2]
|
||||
k2_values_str = None
|
||||
if isinstance(k2_values, set):
|
||||
k2_values = list(k2_values)
|
||||
elif isinstance(k2_values, dict) and len(k2_values) == 0:
|
||||
k2_values = []
|
||||
if isinstance(k2_values, list):
|
||||
k2_values = sorted(k2_values)
|
||||
all_scalar = all(isinstance(k2v, (int, float, str)) for k2v in k2_values)
|
||||
if all_scalar:
|
||||
k2_values_str = _re.sub(r"[{}\[\]']", "", str(k2_values))
|
||||
|
||||
if k2_values_str is None:
|
||||
k2_values_str = str(k2_values)
|
||||
|
||||
if len(current_line) > 0 and (len(current_line) + len(k2_values_str) > 40):
|
||||
# new line
|
||||
table_add += current_line + '\n'
|
||||
current_line = ''
|
||||
|
||||
if concat_short_lines:
|
||||
if current_line == '':
|
||||
current_line += ' '*5
|
||||
if i == 0:
|
||||
# Only add dash to first
|
||||
current_line += "- "
|
||||
else:
|
||||
current_line += " "
|
||||
# Don't draw bullet points:
|
||||
current_line += '| '
|
||||
else:
|
||||
current_line += '. '
|
||||
current_line += f"{k2}: " + k2_values_str
|
||||
else:
|
||||
table_add += ' '*5
|
||||
if i == 0:
|
||||
# Only add dash to first
|
||||
table_add += "- "
|
||||
else:
|
||||
table_add += " "
|
||||
|
||||
if '\n' in k2_values_str:
|
||||
# Block format multiple lines
|
||||
table_add += '| ' + f"{k2}: " + "\n"
|
||||
k2_values_str_lines = k2_values_str.split('\n')
|
||||
for j in range(len(k2_values_str_lines)):
|
||||
line = k2_values_str_lines[j]
|
||||
table_add += ' '*7 + '|' + ' '*5 + line
|
||||
if j < len(k2_values_str_lines)-1:
|
||||
table_add += "\n"
|
||||
else:
|
||||
if block_format:
|
||||
table_add += '| '
|
||||
else:
|
||||
table_add += '* '
|
||||
table_add += f"{k2}: " + k2_values_str
|
||||
|
||||
table_add += "\n"
|
||||
if current_line != '':
|
||||
table_add += current_line + '\n'
|
||||
else:
|
||||
table_add += ' '*5 + f"- {values}\n"
|
||||
|
||||
table += table_add
|
||||
|
||||
else:
|
||||
lengths = [len(str(v)) for v in values]
|
||||
if bullets and max(lengths) > 5:
|
||||
table += ' '*5 + "-\n"
|
||||
for value in sorted(values):
|
||||
table += ' '*7 + f"- {value}\n"
|
||||
else:
|
||||
value_str = ', '.join(sorted(values))
|
||||
table += ' '*5 + f"- {value_str}\n"
|
||||
|
||||
return table
|
||||
|
||||
@@ -1 +1 @@
|
||||
version = "0.2.47"
|
||||
version = "0.2.53"
|
||||
|
||||
Reference in New Issue
Block a user