├── library ├── conbond │ ├── __init__.py │ ├── VERSION.txt │ ├── jisilu.py │ ├── strategy.py │ ├── joinquant.py │ └── ricequant.py ├── conbond.egg-info │ ├── not-zip-safe │ ├── dependency_links.txt │ ├── top_level.txt │ ├── requires.txt │ ├── SOURCES.txt │ └── PKG-INFO ├── requirements.txt └── setup.py ├── examples ├── .gitignore ├── results.png ├── trading_dates.xlsx ├── conbond_rqalpha_plus.py ├── low_price.json ├── high_ytm.json ├── low_premium.json ├── double_rank.json ├── double_low.json ├── triple_rank.json ├── server.py ├── diff │ ├── diff.py │ └── diff.log ├── rqalpha.diff ├── rqrisk.diff ├── main.py ├── backtest.py └── juejin-orders-example.csv ├── logs ├── 2021-09-30-09-00-03 │ ├── plot.png │ ├── result.pkl │ ├── report │ │ ├── summary.csv │ │ ├── stock_account.csv │ │ └── portfolio.csv │ └── debug.log ├── 2021-09-08-11-39-20 │ ├── screenshot.png │ ├── issues.txt │ └── ricequant.py ├── 2021-09-17 │ └── double_low-20210917.png └── 2021-09-18 │ ├── double_low-20210918.png │ └── low_price-20210918.png ├── utils ├── combine.py ├── to_juejin_order.py ├── add_convertibles.py └── crawl_rq.py └── README.md /library/conbond/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /library/conbond/VERSION.txt: -------------------------------------------------------------------------------- 1 | 0.1.0 2 | -------------------------------------------------------------------------------- /library/conbond.egg-info/not-zip-safe: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/requirements.txt: -------------------------------------------------------------------------------- 1 | rqalpha>=2.1.1 2 | -------------------------------------------------------------------------------- /library/conbond.egg-info/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/conbond.egg-info/top_level.txt: -------------------------------------------------------------------------------- 1 | conbond 2 | -------------------------------------------------------------------------------- /library/conbond.egg-info/requires.txt: -------------------------------------------------------------------------------- 1 | rqalpha>=2.1.1 2 | -------------------------------------------------------------------------------- /examples/.gitignore: -------------------------------------------------------------------------------- 1 | .auth.json 2 | .positions.json 3 | cache 4 | logs 5 | -------------------------------------------------------------------------------- /examples/results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/examples/results.png -------------------------------------------------------------------------------- /examples/trading_dates.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/examples/trading_dates.xlsx -------------------------------------------------------------------------------- /examples/conbond_rqalpha_plus.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/examples/conbond_rqalpha_plus.py -------------------------------------------------------------------------------- /logs/2021-09-30-09-00-03/plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/logs/2021-09-30-09-00-03/plot.png -------------------------------------------------------------------------------- /logs/2021-09-30-09-00-03/result.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/logs/2021-09-30-09-00-03/result.pkl -------------------------------------------------------------------------------- /logs/2021-09-08-11-39-20/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/logs/2021-09-08-11-39-20/screenshot.png -------------------------------------------------------------------------------- /logs/2021-09-17/double_low-20210917.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/logs/2021-09-17/double_low-20210917.png -------------------------------------------------------------------------------- /logs/2021-09-18/double_low-20210918.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/logs/2021-09-18/double_low-20210918.png -------------------------------------------------------------------------------- /logs/2021-09-18/low_price-20210918.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulhybryant/convertible_bond/HEAD/logs/2021-09-18/low_price-20210918.png -------------------------------------------------------------------------------- /examples/low_price.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "低价格", 3 | "scoring_fn": "multi_factors_weighted_linear", 4 | "config": { 5 | "factors": { 6 | "bond_price": 1 7 | }, 8 | "filters": { 9 | "停牌": "{suspended}", 10 | "已公告强赎": "'{info_date}' <= '{today}'", 11 | "成交额低": "{total_turnover} < 500000" 12 | }, 13 | "asc": true 14 | }, 15 | "force": false, 16 | "top": 20 17 | } 18 | -------------------------------------------------------------------------------- /library/conbond.egg-info/SOURCES.txt: -------------------------------------------------------------------------------- 1 | setup.py 2 | conbond/VERSION.txt 3 | conbond/__init__.py 4 | conbond/jisilu.js 5 | conbond/jisilu.py 6 | conbond/joinquant.py 7 | conbond/ricequant.py 8 | conbond/strategy.py 9 | conbond.egg-info/PKG-INFO 10 | conbond.egg-info/SOURCES.txt 11 | conbond.egg-info/dependency_links.txt 12 | conbond.egg-info/not-zip-safe 13 | conbond.egg-info/requires.txt 14 | conbond.egg-info/top_level.txt -------------------------------------------------------------------------------- /examples/high_ytm.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "高YTM", 3 | "scoring_fn": "multi_factors_weighted_linear", 4 | "config": { 5 | "factors": { 6 | "yield_to_maturity": 1 7 | }, 8 | "filters": { 9 | "停牌": "{suspended}", 10 | "已公告强赎": "'{info_date}' <= '{today}'", 11 | "成交额低": "{total_turnover} < 500000" 12 | }, 13 | "asc": false 14 | }, 15 | "force": false, 16 | "top": 20 17 | } 18 | -------------------------------------------------------------------------------- /examples/low_premium.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "低转股溢价率", 3 | "scoring_fn": "multi_factors_weighted_linear", 4 | "config": { 5 | "factors": { 6 | "conversion_premium": 1 7 | }, 8 | "filters": { 9 | "停牌": "{suspended}", 10 | "成交额低": "{total_turnover} < 500000", 11 | "已公告强赎": "'{info_date}' <= '{today}'", 12 | "临近到期日": "{days_to_maturity} <= 30" 13 | }, 14 | "asc": true 15 | }, 16 | "force": true, 17 | "top": 20 18 | } 19 | -------------------------------------------------------------------------------- /examples/double_rank.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "双低变种:双排序,按照制定的因子排序,求和", 3 | "scoring_fn": "multi_factors_rank", 4 | "config": { 5 | "factors": { 6 | "bond_price": 0.5, 7 | "conversion_premium": 0.5 8 | }, 9 | "filters": { 10 | "停牌": "{suspended}", 11 | "成交额低": "{total_turnover} < 500000", 12 | "已公告强赎": "'{info_date}' <= '{today}'", 13 | "临近到期日": "{days_to_maturity} <= 30" 14 | }, 15 | "asc": true 16 | }, 17 | "force": false, 18 | "top": 20 19 | } 20 | -------------------------------------------------------------------------------- /examples/double_low.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "传统双低:价格 + 100 * 转股溢价率", 3 | "scoring_fn": "multi_factors_weighted_linear", 4 | "config": { 5 | "factors": { 6 | "bond_price": 1, 7 | "conversion_premium": 100 8 | }, 9 | "filters": { 10 | "停牌": "{suspended}", 11 | "成交额低": "{total_turnover} < 500000", 12 | "已公告强赎": "'{info_date}' <= '{today}'", 13 | "临近到期日": "{days_to_maturity} <= 30" 14 | }, 15 | "asc": true 16 | }, 17 | "force": false, 18 | "top": 20 19 | } 20 | -------------------------------------------------------------------------------- /examples/triple_rank.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "三因子排序,按照制定的因子排序,求和", 3 | "scoring_fn": "multi_factors_rank", 4 | "config": { 5 | "factors": { 6 | "bond_price": 1, 7 | "conversion_premium": 1, 8 | "remaining_size": 1 9 | }, 10 | "filters": { 11 | "停牌": "{suspended}", 12 | "成交额低": "{total_turnover} < 500000", 13 | "已公告强赎": "'{info_date}' <= '{today}'", 14 | "临近到期日": "{days_to_maturity} <= 30" 15 | }, 16 | "asc": true 17 | }, 18 | "force": false, 19 | "top": 20 20 | } 21 | -------------------------------------------------------------------------------- /library/conbond.egg-info/PKG-INFO: -------------------------------------------------------------------------------- 1 | Metadata-Version: 2.1 2 | Name: conbond 3 | Version: 0.1.0 4 | Summary: Conbond backtest library 5 | Home-page: https://github.com/paulhybryant/convertible_bond 6 | Author: paulhybryant 7 | Author-email: paulhybryant@gmail.com 8 | License: Apache License v2 9 | Platform: UNKNOWN 10 | Classifier: Programming Language :: Python 11 | Classifier: Operating System :: Microsoft :: Windows 12 | Classifier: Operating System :: Unix 13 | Classifier: Programming Language :: Python :: 3.5 14 | Classifier: Programming Language :: Python :: 3.6 15 | 16 | UNKNOWN 17 | 18 | -------------------------------------------------------------------------------- /logs/2021-09-30-09-00-03/report/summary.csv: -------------------------------------------------------------------------------- 1 | STOCK,1000000.0 2 | alpha,0.278 3 | annualized_returns,0.3749 4 | benchmark_annualized_returns,0.053855 5 | benchmark_total_returns,0.208046 6 | beta,0.386 7 | cash,5073.7198 8 | downside_risk,0.098 9 | end_date,2021-09-24 10 | information_ratio,1.411 11 | max_drawdown,0.177 12 | run_type,BACKTEST 13 | sharpe,1.95 14 | sortino,2.97 15 | start_date,2018-01-02 16 | strategy_file,multi_factors.py 17 | strategy_name,multi_factors 18 | total_returns,2.149156 19 | total_value,3149155.5698 20 | tracking_error,0.181 21 | unit_net_value,3.1492 22 | units,1000000.0 23 | volatility,0.15 -------------------------------------------------------------------------------- /utils/combine.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import pathlib 4 | from absl import app, flags, logging 5 | import pandas as pd 6 | from datetime import date 7 | from tqdm import tqdm 8 | import time 9 | 10 | FLAGS = flags.FLAGS 11 | 12 | flags.DEFINE_string("cache_dir", None, "Cache directory") 13 | flags.mark_flag_as_required('cache_dir') 14 | 15 | 16 | def main(argv): 17 | data_set = [] 18 | cache_dir = pathlib.Path(FLAGS.cache_dir) 19 | dirs = list(cache_dir.glob('*')) 20 | for i in tqdm(range(0, len(dirs))): 21 | data_dir = dirs[i] 22 | p = pathlib.Path(data_dir) 23 | if p.is_dir(): 24 | data = pd.read_csv(p.joinpath('bond_price.csv')) 25 | data_set.append(data) 26 | pd.concat(data_set).to_csv(cache_dir.joinpath('combined.csv'), index=False) 27 | 28 | 29 | if __name__ == "__main__": 30 | app.run(main) 31 | -------------------------------------------------------------------------------- /examples/server.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from flask import Flask, request 4 | from flask_autoindex import AutoIndex 5 | import json 6 | from conbond import jisilu 7 | import pathlib 8 | from datetime import date 9 | import os 10 | 11 | app = Flask(__name__) 12 | AutoIndex(app, browse_root=os.path.curdir) 13 | AUTH=None 14 | 15 | @app.route("/jisilu") 16 | def jsl(): 17 | global AUTH 18 | if not AUTH: 19 | auth_file = pathlib.Path('.auth.json') 20 | AUTH = json.load(auth_file.open('r')) 21 | username = AUTH['jisilu']['username'] 22 | password = AUTH['jisilu']['password'] 23 | df = jisilu.fetch(date.today(), 'cache', username, password) 24 | top = int(request.args.get('top', '20')) 25 | df = df.nsmallest(top, 'double_low') 26 | return df.to_json() 27 | 28 | if __name__ == '__main__': 29 | app.run(host='localhost', port=18888) 30 | -------------------------------------------------------------------------------- /library/setup.py: -------------------------------------------------------------------------------- 1 | # pip >= 10 2 | from pip._internal.req import parse_requirements 3 | from setuptools import ( 4 | find_packages, 5 | setup, 6 | ) 7 | import pathlib 8 | 9 | with open( 10 | pathlib.Path(__file__).parent.joinpath('conbond', 11 | 'VERSION.txt'), 'rb') as f: 12 | version = f.read().decode('ascii').strip() 13 | """ 14 | 作为一个合格的mod,应该要有版本号哦。 15 | """ 16 | 17 | setup( 18 | name='conbond', #mod名 19 | version=version, 20 | description='Conbond backtest library', 21 | packages=find_packages(exclude=[]), 22 | author='paulhybryant', 23 | author_email='paulhybryant@gmail.com', 24 | license='Apache License v2', 25 | package_data={'': ['*.*']}, 26 | url='https://github.com/paulhybryant/convertible_bond', 27 | install_requires=[ 28 | str(ir.requirement) 29 | for ir in parse_requirements("requirements.txt", session=False) 30 | ], 31 | zip_safe=False, 32 | classifiers=[ 33 | 'Programming Language :: Python', 34 | 'Operating System :: Microsoft :: Windows', 35 | 'Operating System :: Unix', 36 | 'Programming Language :: Python :: 3.5', 37 | 'Programming Language :: Python :: 3.6', 38 | ], 39 | ) 40 | -------------------------------------------------------------------------------- /utils/to_juejin_order.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from absl import app, flags, logging 4 | import pandas as pd 5 | 6 | FLAGS = flags.FLAGS 7 | 8 | flags.DEFINE_string("infile", None, "Input csv file") 9 | flags.mark_flag_as_required('infile') 10 | flags.DEFINE_string("outfile", None, "Output csv file") 11 | flags.mark_flag_as_required('outfile') 12 | 13 | 14 | def main(argv): 15 | orders = pd.read_csv(FLAGS.infile) 16 | orders = orders[[ 17 | 'order_book_id', 'trading_datetime', 'side', 'position_effect', 18 | 'last_quantity', 'last_price' 19 | ]].rename( 20 | columns={ 21 | 'last_price': 'price', 22 | 'last_quantity': 'volume', 23 | 'trading_datetime': 'createdAt', 24 | 'side': 'Side' 25 | }) 26 | orders['symbol'] = orders['order_book_id'].apply( 27 | lambda obid: 'SZSE.%s' % obid[:6] 28 | if obid.endswith('XSHE') else 'SHSE.%s' % obid[:6]) 29 | orders['side'] = orders['Side'].apply(lambda side: 1 30 | if side == 'BUY' else 2) 31 | orders['positionEffect'] = orders['position_effect'].apply( 32 | lambda pe: 1 if pe == 'OPEN' else 2) 33 | orders = orders[[ 34 | 'symbol', 'side', 'positionEffect', 'price', 'volume', 'createdAt' 35 | ]] 36 | orders.to_csv(FLAGS.outfile, index=False) 37 | 38 | 39 | if __name__ == "__main__": 40 | app.run(main) 41 | -------------------------------------------------------------------------------- /utils/add_convertibles.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import json 4 | import pickle 5 | import pandas as pd 6 | import rqdatac 7 | import pathlib 8 | from absl import flags, app, logging 9 | 10 | FLAGS = flags.FLAGS 11 | 12 | flags.DEFINE_string('infile', None, 'instrument.pk') 13 | flags.DEFINE_string('outfile', None, 'instrument_with_convertible.pk') 14 | 15 | 16 | def main(argv): 17 | username = None 18 | password = None 19 | 20 | data_source = 'rqdata' 21 | auth_file = pathlib.Path('.auth.json') 22 | if not auth_file.exists(): 23 | logging.fatal('auth.json is missing, see README.md') 24 | auth = json.load(auth_file.open('r')) 25 | assert 'username' in auth[data_source] 26 | assert 'password' in auth[data_source] 27 | username = auth[data_source]['username'] 28 | password = auth[data_source]['password'] 29 | 30 | rqdatac.init(username, password) 31 | conbonds = rqdatac.convertible.all_instruments() 32 | # conbonds.to_excel('conbonds.xlsx', index=False) 33 | # conbonds = pd.read_excel('conbonds.xlsx') 34 | conbonds['type'] = 'CS' 35 | conbonds['round_lot'] = 10 36 | conbonds['board_type'] = 'MainBoard' 37 | with open(FLAGS.infile, 'rb') as f: 38 | instruments = pickle.load(f) 39 | instruments += conbonds.to_dict('records') 40 | with open(FLAGS.outfile, 'wb') as out: 41 | pickle.dump(instruments, out, protocol=2) 42 | 43 | 44 | if __name__ == '__main__': 45 | app.run(main) 46 | -------------------------------------------------------------------------------- /utils/crawl_rq.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import json 4 | import pathlib 5 | from absl import app, flags, logging 6 | from datetime import date 7 | from conbond import ricequant 8 | import pandas as pd 9 | from tqdm import tqdm 10 | import logging 11 | 12 | FLAGS = flags.FLAGS 13 | 14 | flags.DEFINE_string('cache_dir', None, 'Cache directory') 15 | flags.mark_flag_as_required('cache_dir') 16 | flags.DEFINE_string('start_date', 17 | date.today().strftime('%Y-%m-%d'), 'Date to start') 18 | flags.DEFINE_string('end_date', 19 | date.today().strftime('%Y-%m-%d'), 'Date to end') 20 | 21 | 22 | def main(argv): 23 | username = None 24 | password = None 25 | 26 | auth_file = pathlib.Path('.auth.json') 27 | auth = json.loads(auth_file.open('r').read()) 28 | username = auth['rqdata']['username'] 29 | password = auth['rqdata']['password'] 30 | 31 | df_trading_dates = pd.read_excel('trading_dates.xlsx') 32 | df_trading_dates = df_trading_dates[ 33 | df_trading_dates.trading_date.dt.date >= date.fromisoformat( 34 | FLAGS.start_date)] 35 | df_trading_dates = df_trading_dates[df_trading_dates.trading_date.dt.date 36 | <= date.fromisoformat(FLAGS.end_date)] 37 | 38 | ricequant.auth(username, password) 39 | dates = df_trading_dates.trading_date.to_list() 40 | for i in tqdm(range(0, len(dates))): 41 | ricequant.fetch(dates[i], FLAGS.cache_dir, logging) 42 | 43 | 44 | if __name__ == '__main__': 45 | app.run(main) 46 | -------------------------------------------------------------------------------- /examples/diff/diff.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import pathlib 4 | from absl import app, flags, logging 5 | from datetime import date 6 | import pandas as pd 7 | 8 | FLAGS = flags.FLAGS 9 | 10 | flags.DEFINE_string("mine", None, "Candidates of mine") 11 | flags.DEFINE_string("theirs", None, "Candidates of theirs") 12 | flags.DEFINE_string("filtered", None, "Filtered candidates") 13 | 14 | 15 | def main(argv): 16 | mine = pd.read_csv(FLAGS.mine) 17 | theirs = pd.read_csv(FLAGS.theirs) 18 | assert len(mine) == len(theirs) 19 | filtered = pd.read_csv(FLAGS.filtered) 20 | filtered['id'] = filtered.order_book_id.apply(lambda id: id[:-5]) 21 | filtered = filtered.set_index(['date', 'id']) 22 | merged = pd.concat([mine, theirs], axis=1) 23 | for d, indices in merged.groupby(['date']).groups.items(): 24 | df = merged.iloc[indices].copy() 25 | df['id'] = df.order_book_id.apply(lambda id: id[:-5]) 26 | mine = set(df.id.tolist()) 27 | theirs = set(df.tickerBond.astype(str).tolist()) 28 | df = df.set_index('id') 29 | for id in list(theirs - mine): 30 | try: 31 | bond = filtered.loc[(d, id)] 32 | except: 33 | logging.info(d) 34 | logging.error('%s not filtered by not selected by mine' % id) 35 | 36 | for id in list(mine - theirs): 37 | bond = df.loc[id] 38 | # If selected by mine and is in top 20, but not in theirs, see why 39 | if bond.at['rank'] < 20: 40 | logging.info(d) 41 | logging.error('%s in top 20 but not selected by theirs' % 42 | bond.at['order_book_id']) 43 | 44 | 45 | if __name__ == "__main__": 46 | app.run(main) 47 | -------------------------------------------------------------------------------- /examples/rqalpha.diff: -------------------------------------------------------------------------------- 1 | diff --git a/rqalpha/mod/rqalpha_mod_sys_analyser/mod.py b/rqalpha/mod/rqalpha_mod_sys_analyser/mod.py 2 | index 44430f28..dcc5a024 100644 3 | --- a/rqalpha/mod/rqalpha_mod_sys_analyser/mod.py 4 | +++ b/rqalpha/mod/rqalpha_mod_sys_analyser/mod.py 5 | @@ -285,6 +285,7 @@ class AnalyserMod(AbstractMod): 6 | 7 | summary = { 8 | 'strategy_name': strategy_name, 9 | + 'benchmark': self._env.config.base.benchmark, 10 | 'start_date': self._env.config.base.start_date.strftime('%Y-%m-%d'), 11 | 'end_date': self._env.config.base.end_date.strftime('%Y-%m-%d'), 12 | 'strategy_file': self._env.config.base.strategy_file, 13 | @@ -301,6 +302,7 @@ class AnalyserMod(AbstractMod): 14 | 'alpha': self._safe_convert(risk.alpha, 3), 15 | 'beta': self._safe_convert(risk.beta, 3), 16 | 'sharpe': self._safe_convert(risk.sharpe, 3), 17 | + 'benchmark_sharpe': self._safe_convert(risk.benchmark_sharpe, 3), 18 | 'excess_sharpe': self._safe_convert(risk.excess_sharpe, 3), 19 | 'information_ratio': self._safe_convert(risk.information_ratio, 3), 20 | 'downside_risk': self._safe_convert(risk.annual_downside_risk, 3), 21 | @@ -310,6 +312,7 @@ class AnalyserMod(AbstractMod): 22 | 'excess_volatility': self._safe_convert(risk.excess_volatility, 3), 23 | 'excess_annual_volatility': self._safe_convert(risk.excess_annual_volatility, 3), 24 | 'max_drawdown': self._safe_convert(risk.max_drawdown, 3), 25 | + 'benchmark_max_drawdown': self._safe_convert(risk.max_drawdown, 3), 26 | 'excess_max_drawdown': self._safe_convert(risk.excess_max_drawdown), 27 | 'excess_returns': self._safe_convert(risk.excess_return_rate, 6), 28 | 'excess_annual_returns': self._safe_convert(risk.excess_annual_return, 6) 29 | -------------------------------------------------------------------------------- /examples/diff/diff.log: -------------------------------------------------------------------------------- 1 | I0929 09:08:23.648886 140577637082944 diff.py:33] 2019-09-23 2 | E0929 09:08:23.649115 140577637082944 diff.py:34] 128056 not filtered by not selected by mine (误差) 3 | I0929 09:08:23.649556 140577637082944 diff.py:40] 2019-09-23 4 | E0929 09:08:23.649718 140577637082944 diff.py:41] 113534.XSHG in top 20 but not selected by theirs 5 | I0929 09:08:23.652136 140577637082944 diff.py:33] 2019-09-30 6 | E0929 09:08:23.652250 140577637082944 diff.py:34] 123018 not filtered by not selected by mine (误差) 7 | I0929 09:08:23.652632 140577637082944 diff.py:40] 2019-09-30 8 | E0929 09:08:23.652752 140577637082944 diff.py:41] 113534.XSHG in top 20 but not selected by theirs 9 | I0929 09:08:23.655057 140577637082944 diff.py:33] 2019-10-08 10 | E0929 09:08:23.655164 140577637082944 diff.py:34] 128038 not filtered by not selected by mine (误差) 11 | I0929 09:08:23.655602 140577637082944 diff.py:40] 2019-10-08 12 | E0929 09:08:23.655711 140577637082944 diff.py:41] 113534.XSHG in top 20 but not selected by theirs 13 | I0929 09:08:23.657963 140577637082944 diff.py:33] 2019-10-14 14 | E0929 09:08:23.658068 140577637082944 diff.py:34] 113514 not filtered by not selected by mine 15 | I0929 09:08:23.658439 140577637082944 diff.py:40] 2019-10-14 16 | E0929 09:08:23.658560 140577637082944 diff.py:41] 113534.XSHG in top 20 but not selected by theirs 17 | I0929 09:08:23.760420 140577637082944 diff.py:33] 2020-08-10 18 | E0929 09:08:23.760643 140577637082944 diff.py:34] 127007 not filtered by not selected by mine (误差) 19 | I0929 09:08:23.761274 140577637082944 diff.py:40] 2020-08-10 20 | E0929 09:08:23.761475 140577637082944 diff.py:41] 128012.XSHE in top 20 but not selected by theirs (2020-04-29之后再无成交量) 21 | I0929 09:08:23.810384 140577637082944 diff.py:40] 2020-10-19 22 | E0929 09:08:23.810599 140577637082944 diff.py:41] 128012.XSHE in top 20 but not selected by theirs 23 | I0929 09:08:23.813109 140577637082944 diff.py:40] 2020-10-26 24 | E0929 09:08:23.813281 140577637082944 diff.py:41] 128012.XSHE in top 20 but not selected by theirs 25 | I0929 09:08:23.842221 140577637082944 diff.py:33] 2021-01-18 26 | E0929 09:08:23.842388 140577637082944 diff.py:34] 128066 not filtered by not selected by mine 27 | I0929 09:08:23.842779 140577637082944 diff.py:40] 2021-01-18 28 | E0929 09:08:23.842940 140577637082944 diff.py:41] 113008.XSHG in top 20 but not selected by theirs (到期赎回,需要处理) 29 | -------------------------------------------------------------------------------- /examples/rqrisk.diff: -------------------------------------------------------------------------------- 1 | diff --git a/rqrisk/risk.py b/rqrisk/risk.py 2 | index a670392..d9884af 100644 3 | --- a/rqrisk/risk.py 4 | +++ b/rqrisk/risk.py 5 | @@ -59,13 +59,16 @@ class Risk(object): 6 | self._alpha = None 7 | self._beta = None 8 | self._avg_excess_return = np.mean(daily_returns) - self._daily_risk_free_rate 9 | + self._benchmark_avg_excess_return = np.mean(benchmark_daily_returns) - self._daily_risk_free_rate 10 | self._sharpe = None 11 | + self._benchmark_sharpe = None 12 | self._return = np.expm1(np.log1p(daily_returns).sum()) 13 | self._annual_return = (1 + self._return) ** (self._annual_factor / self._period_count) - 1 14 | self._benchmark_return = np.expm1(np.log1p(self._benchmark).sum()) 15 | self._benchmark_annual_return = (1+self._benchmark_return) ** \ 16 | (self._annual_factor / self._period_count) - 1 17 | self._max_drawdown = None 18 | + self._benchmark_max_drawdown = None 19 | self._volatility = None 20 | self._annual_volatility = None 21 | self._benchmark_volatility = None 22 | @@ -206,6 +209,17 @@ class Risk(object): 23 | self._max_drawdown = abs(((df_cum - max_return) / max_return).min()) 24 | return self._max_drawdown 25 | 26 | + @property 27 | + def benchmark_max_drawdown(self): 28 | + if self._benchmark_max_drawdown is not None: 29 | + return self._benchmark_max_drawdown 30 | + 31 | + benchmark = [1] + list(self._benchmark) 32 | + df_cum = np.exp(np.log1p(benchmark).cumsum()) 33 | + max_return = np.maximum.accumulate(df_cum) 34 | + self._benchmark_max_drawdown = abs(((df_cum - max_return) / max_return).min()) 35 | + return self._benchmark_max_drawdown 36 | + 37 | def _calc_tracking_error(self): 38 | if len(self._portfolio) < 2: 39 | self._tracking_error = 0. 40 | @@ -263,6 +277,17 @@ class Risk(object): 41 | self._sharpe = np.sqrt(self._annual_factor) * self._avg_excess_return / std_excess_return 42 | return self._sharpe 43 | 44 | + @property 45 | + def benchmark_sharpe(self): 46 | + if self._benchmark_sharpe is not None: 47 | + return self._benchmark_sharpe 48 | + 49 | + std_excess_return = np.sqrt((1 / (len(self._benchmark) - 1)) * np.sum( 50 | + (self._benchmark - self._daily_risk_free_rate - self._benchmark_avg_excess_return) ** 2 51 | + )) 52 | + self._benchmark_sharpe = np.sqrt(self._annual_factor) * self._benchmark_avg_excess_return / std_excess_return 53 | + return self._benchmark_sharpe 54 | + 55 | @property 56 | def excess_sharpe(self): 57 | if self._excess_sharpe is not None: 58 | -------------------------------------------------------------------------------- /library/conbond/jisilu.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import requests 3 | from datetime import datetime, date 4 | import json 5 | import pathlib 6 | import execjs 7 | import importlib.resources as resources 8 | 9 | HEADERS = { 10 | 'User-Agent': 11 | 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36' 12 | } 13 | 14 | 15 | def auth(username, password): 16 | key = '397151C04723421F' 17 | ctx = execjs.compile(resources.read_text(__package__, 'jisilu.js')) 18 | s = requests.Session() 19 | s.post('https://www.jisilu.cn/account/ajax/login_process/', 20 | data={ 21 | '_post_type': 'ajax', 22 | 'aes': 1, 23 | 'net_auto_login': '1', 24 | 'password': ctx.call('jslencode', password, key), 25 | 'return_url': 'https://www.jisilu.cn/', 26 | 'user_name': ctx.call('jslencode', username, key), 27 | }, 28 | headers=HEADERS) 29 | return s 30 | 31 | 32 | def fetch(txn_day, cache_dir=None, username=None, password=None): 33 | jisilu_data = None 34 | cache_path = None 35 | 36 | if cache_dir: 37 | cache_path = pathlib.Path(cache_dir).joinpath( 38 | 'jisilu', txn_day.strftime('%Y-%m-%d'), 'jisilu.json') 39 | cache_path.parent.mkdir(parents=True, exist_ok=True) 40 | 41 | if cache_path and cache_path.exists(): 42 | print('Using cached file: %s' % cache_path) 43 | jisilu_data = json.loads(cache_path.open('r').read()) 44 | else: 45 | jsl = auth(username, password) 46 | url = 'https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___t=%s' % int( 47 | datetime.fromordinal(date.today().toordinal()).timestamp() * 1000) 48 | payload = {'listed': 'Y'} 49 | response = jsl.post(url, data=payload, headers=HEADERS) 50 | jisilu_data = json.loads(response.content.decode('utf-8')) 51 | 52 | if cache_path: 53 | cache_path.open('w').write(json.dumps(jisilu_data)) 54 | 55 | jd = {} 56 | for row in jisilu_data['rows']: 57 | jd[row['id']] = row['cell'] 58 | df = pd.io.json.read_json(json.dumps(jd), orient='index') 59 | # 过滤可交换债,只保留可转债 60 | df = df[df.btype == 'C'] 61 | # 过滤仅机构可买 62 | df = df[df.qflag != 'Q'] 63 | # 过滤已公布强赎 64 | df = df[pd.isnull(df.force_redeem)] 65 | df = df.rename( 66 | columns={ 67 | 'bond_id': 'code', 68 | 'bond_nm': 'short_name', 69 | 'stock_id': 'company_code', 70 | 'price': 'bond_price', 71 | 'sprice': 'stock_price', 72 | 'premium_rt': 'convert_premium_rate', 73 | 'dblow': 'double_low' 74 | }).reset_index() 75 | df['code'] = df['code'].astype(str) 76 | df['code'] = df.reset_index().apply( 77 | lambda row: row['code'] + '.XSHE' 78 | if row.company_code.startswith('sz') else row['code'] + '.XSHG', 79 | axis=1) 80 | return df[[ 81 | 'code', 'short_name', 'company_code', 'bond_price', 'stock_price', 82 | 'convert_premium_rate', 'double_low' 83 | ]].set_index('code') 84 | -------------------------------------------------------------------------------- /logs/2021-09-08-11-39-20/issues.txt: -------------------------------------------------------------------------------- 1 | 2018-01-08 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-01-08 15:00:00 时停牌 2 | 2018-01-22 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-01-22 15:00:00 时停牌 3 | 2018-01-29 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-01-29 15:00:00 时停牌 4 | 2018-02-26 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-02-26 15:00:00 时停牌 5 | 2018-03-05 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-03-05 15:00:00 时停牌 6 | 2018-03-12 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-03-12 15:00:00 时停牌 7 | 2018-03-19 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-03-19 15:00:00 时停牌 8 | 2018-03-26 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-03-26 15:00:00 时停牌 9 | 2018-04-02 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-04-02 15:00:00 时停牌 10 | 2018-04-09 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-04-09 15:00:00 时停牌 11 | 2018-04-16 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-04-16 15:00:00 时停牌 12 | 2018-05-07 15:00:00 WARN 订单创建失败: 113502.XSHG 在 2018-05-07 15:00:00 时停牌 13 | 2018-05-28 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-05-28 15:00:00 时停牌 14 | 2018-06-04 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-06-04 15:00:00 时停牌 15 | 2018-06-04 15:00:00 WARN 订单创建失败: 128022.XSHE 在 2018-06-04 15:00:00 时停牌 16 | 2018-06-11 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-06-11 15:00:00 时停牌 17 | 2018-06-11 15:00:00 WARN 订单创建失败: 128022.XSHE 在 2018-06-11 15:00:00 时停牌 18 | 2018-06-19 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-06-19 15:00:00 时停牌 19 | 2018-06-25 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-06-25 15:00:00 时停牌 20 | 2018-07-02 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-07-02 15:00:00 时停牌 21 | 2018-07-09 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-07-09 15:00:00 时停牌 22 | 2018-07-16 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-07-16 15:00:00 时停牌 23 | 2018-07-23 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-07-23 15:00:00 时停牌 24 | 2018-07-30 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-07-30 15:00:00 时停牌 25 | 2018-08-06 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-08-06 15:00:00 时停牌 26 | 2018-08-13 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-08-13 15:00:00 时停牌 27 | 2018-08-20 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-08-20 15:00:00 时停牌 28 | 2018-08-27 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-08-27 15:00:00 时停牌 29 | 2018-09-03 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-09-03 15:00:00 时停牌 30 | 2018-09-10 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-09-10 15:00:00 时停牌 31 | 2018-09-17 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-09-17 15:00:00 时停牌 32 | 2018-09-25 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-09-25 15:00:00 时停牌 33 | 2018-10-08 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-10-08 15:00:00 时停牌 34 | 2018-10-15 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-10-15 15:00:00 时停牌 35 | 2018-10-22 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-10-22 15:00:00 时停牌 36 | 2018-10-29 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-10-29 15:00:00 时停牌 37 | 2018-11-05 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-11-05 15:00:00 时停牌 38 | 2018-11-12 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-11-12 15:00:00 时停牌 39 | 2018-11-19 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-11-19 15:00:00 时停牌 40 | 2018-11-26 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-11-26 15:00:00 时停牌 41 | 2018-12-03 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-12-03 15:00:00 时停牌 42 | 2018-12-10 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-12-10 15:00:00 时停牌 43 | 2018-12-17 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2018-12-17 15:00:00 时停牌 44 | 2019-04-15 15:00:00 WARN 订单创建失败: 128040.XSHE 在 2019-04-15 15:00:00 时停牌 45 | 2019-12-16 15:00:00 WARN 订单创建失败: 110030.XSHG 在 2019-12-16 15:00:00 时停牌 46 | 2019-12-23 15:00:00 WARN 订单创建失败: 110030.XSHG 在 2019-12-23 15:00:00 时停牌 47 | 2020-04-13 15:00:00 WARN 订单创建失败: 123004.XSHE 在 2020-04-13 15:00:00 时停牌 48 | 2020-07-13 15:00:00 WARN 订单创建失败: 123043.XSHE 在 2020-07-13 15:00:00 时停牌 49 | 2020-07-20 15:00:00 WARN 订单创建失败: 123043.XSHE 在 2020-07-20 15:00:00 时停牌 50 | 2020-11-09 15:00:00 WARN 订单创建失败: 113595.XSHG 在 2020-11-09 15:00:00 时停牌 51 | 2021-01-25 15:00:00 WARN 订单创建失败: 113008.XSHG 在 2021-01-25 15:00:00 时停牌 52 | 2021-02-01 15:00:00 WARN 订单创建失败: 113008.XSHG 在 2021-02-01 15:00:00 时停牌 53 | -------------------------------------------------------------------------------- /examples/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from absl import app, flags, logging 4 | from conbond import jisilu, strategy, ricequant 5 | from datetime import date, datetime 6 | import json 7 | import pandas as pd 8 | import pathlib 9 | 10 | FLAGS = flags.FLAGS 11 | 12 | flags.DEFINE_string('cache_dir', None, 'Cache directory') 13 | flags.DEFINE_integer('top', 20, 'Number of candidates') 14 | flags.DEFINE_string('data_source', 'jisilu', 'Data source: jisilu, rqdata') 15 | flags.DEFINE_string('positions', '.positions.json', 'File to store positions') 16 | flags.DEFINE_string('txn_day', 17 | date.today().strftime('%Y-%m-%d'), 18 | 'Date to generate the candidates') 19 | flags.DEFINE_string('strategy_cfg', None, 'Strategy config') 20 | 21 | 22 | def main(argv): 23 | df_date = datetime.fromordinal( 24 | date.fromisoformat(FLAGS.txn_day).toordinal()) 25 | df = None 26 | username = None 27 | password = None 28 | 29 | auth_file = pathlib.Path('.auth.json') 30 | if not auth_file.exists(): 31 | logging.fatal('auth.json is missing, see README.md') 32 | auth = json.load(auth_file.open('r')) 33 | assert FLAGS.data_source in auth 34 | assert 'username' in auth[FLAGS.data_source] 35 | assert 'password' in auth[FLAGS.data_source] 36 | username = auth[FLAGS.data_source]['username'] 37 | password = auth[FLAGS.data_source]['password'] 38 | 39 | if FLAGS.data_source == 'jisilu': 40 | df_trade_dates = pd.read_excel('trading_dates.xlsx') 41 | df_date = df_trade_dates.loc[df_trade_dates.index[ 42 | df_trade_dates.trading_date < df_date][-1]].trading_date 43 | df = jisilu.fetch(df_date, FLAGS.cache_dir, username, password) 44 | df = df.nsmallest(FLAGS.top, 'double_low') 45 | logging.info(df[[ 46 | 'short_name', 'bond_price', 'convert_premium_rate', 'double_low' 47 | ]]) 48 | elif FLAGS.data_source == 'rqdata': 49 | # ricequant.auth(username, password) 50 | df = ricequant.fetch(df_date, 51 | cache_dir=FLAGS.cache_dir, 52 | logger=logging) 53 | score_col = 'double_low' 54 | rank_col = 'rank' 55 | cfg = json.load(pathlib.Path(FLAGS.strategy_cfg).open()) 56 | logging.info(cfg['comment']) 57 | s = getattr(strategy, cfg['scoring_fn']) 58 | df = s(df, df_date, cfg['config'], score_col, rank_col) 59 | top = df[~df.filtered].iloc[FLAGS.top].at[rank_col] 60 | df = df.head(top) 61 | logging.info('\n%s' % df[[ 62 | 'symbol', 'bond_price', 'conversion_premium', score_col, rank_col, 63 | 'filtered', 'filtered_reason' 64 | ]]) 65 | 66 | positions_file = pathlib.Path(FLAGS.positions) 67 | if positions_file.exists(): 68 | positions = json.load(positions_file.open('r')) 69 | else: 70 | positions = json.loads( 71 | '{"current": "NONE", "NONE": {"positions": [], "orders": {}}}') 72 | 73 | candidates = set(df.index.values.tolist()) 74 | position_date = positions['current'] 75 | holdings = set(positions[position_date]['positions']) 76 | orders = {} 77 | orders['buy'] = list(candidates - holdings) 78 | orders['sell'] = list(holdings - candidates) 79 | orders['hold'] = list(holdings & candidates) 80 | for k, v in orders.items(): 81 | logging.info('%s: %s' % (k, v)) 82 | confirm = input('Update positions (y/n)? ') 83 | if confirm == 'y': 84 | logging.info('Updating positions') 85 | positions['current'] = FLAGS.txn_day 86 | positions[positions['current']] = {} 87 | positions[positions['current']]['positions'] = list(candidates) 88 | positions[positions['current']]['orders'] = orders 89 | positions_file.open('w').write(json.dumps(positions)) 90 | else: 91 | logging.info('Positions is not updated.') 92 | 93 | 94 | if __name__ == '__main__': 95 | app.run(main) 96 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # convertible_bond 2 | 3 | DEPRECATED! github访问不方便。感兴趣的可以移步https://gitee.com/paulhybryant/quant 4 | 5 | 可转债策略及量化回测 6 | 7 | 几个平台的粗略比较: 8 | 9 | * 聚宽 10 | * 转债数据行情从2018-09-13开始 11 | * 强赎信息好像没有 12 | * 用聚宽的数据,溢价率,双低什么的需要自己算 13 | * 可以试用半年,试用期数据量没有什么限制 14 | * 不支撑转债回测 15 | * 编程API友好,文档也不错 16 | * 米筐 17 | * 数据种类最全,强赎回售什么的都有 18 | * 只能试用一个月,而且每天只有50MB 19 | * 平台试用和sdk试用分开申请,在平台上跑好像流量限制不大 20 | * 编程API友好,和聚宽几乎一样,文档也不错 21 | * 有开源的rqalpha回测框架,rqalpha-plus也是基于rqalpha,可扩展,有代码可以hack 22 | * 掘金 23 | * 数据质量不足,缺少转债历史数据 24 | * 回测环境最友好,有本地IDE,编程方便,但是必须在windows下起客户端 25 | * 可转债数据不足,无法回测 26 | * 优矿 27 | * 数据比较全 28 | * 回测可转债的支持好像不太好,需要自己计算持仓,回撤等 29 | * 数据免费,质量也不错 30 | * 编程环境非常友好,方便上手和实验(基于jupyter notebook) 31 | * 集思录 32 | * 双低数据什么都算好了,但是没有历史转股价数据等 33 | * 每一个转债的历史数据有,需要爬 34 | * 适用于手动轮动,生成基于运行当日数据的标的和操作。 35 | 36 | 要使用聚宽/米筐的数据,需要申请使用,并将用户名密码放在'.auth.json'里。 37 | 要使用集思录的数据,需要将用户名和密码放在'.auth.json'里。否则集思录无法获得完整的转债数据。 38 | 集思录现在是直接用python的requests获取,比较麻烦。也可以考虑Selenium的方案。 39 | 40 | 付费的话,直接用米筐或者rqalpha-plus,交易用vnpy或者easytrader(都没试过) 41 | 免费的话,最好的组合是用米筐的数据(或者聚宽的可能也可以),用rqalpha + 自己扩展的数据源进行回测。至少对于可转债是可以work的。 42 | 43 | .auth.json的格式如下: 44 | { 45 | "rqdata": { 46 | "username": "license", 47 | "password": "xxxxxxxxxx" 48 | }, 49 | "jisilu": { 50 | "username": "foo", 51 | "password": "bar" 52 | }, 53 | "jqdata": { 54 | "username": "foo", 55 | "password": "bar" 56 | }, 57 | } 58 | 59 | 持仓信息默认放在'.positions.json'里面 60 | 可以自己些计算策略的函数,也可以用library/里的现成的。 61 | 要安装library/中的库,在library/目录下运行 62 | pip install -e . 63 | 64 | ## Usage 65 | 66 | ./main.py --cache_dir=/tmp/cache --data_soruce=rqdata --txn_day=2021-08-01 --strategy_cfg=double_low.json 67 | 68 | ./main.py --cache_dir=/tmp/cache --data_source=jisilu 69 | 70 | ./main.py --help 71 | 72 | ./backtest.py --start_date='2018-01-01' --end_date='2021-08-31' --cache_dir="/tmp/cache" --strategy_cfg='[dlh]*.json' 73 | 74 | ## Example 75 | 76 | ![Results of multiple strategies](/examples/results.png) 77 | 78 | ## TODO 79 | 80 | * 增加更多的策略作比较 81 | * 盛唐风物的偏离策略 82 | * 强赎博弈 83 | * 回售博弈 84 | * ... 85 | * 优化现有策略,考虑其他的因子,比如规模,评级等 86 | * 在图上增加最大回撤日期等 87 | 88 | ## Change Log 89 | 90 | ### Old 91 | * 过滤已经公布强赎的转债: 案例:2019-09-23 127010.XSHE (Done) 92 | * 过滤可交换债(Done) 93 | * Handle call_info not available on some dates (Done) 94 | * 输出Order细节到csv,转换成掘金的格式(Done) 95 | 96 | ### 2021-09-23 97 | 98 | * 过滤停牌转债: 2021-09-08-11-39-20/issues.txt(Done) 99 | * 过滤Q债(只有机构或者合格投资者可以购买)(Done, 目前Q债都是EB债) 100 | 101 | ### 2021-09-26 102 | 103 | * 将rqalpha的输出转换成掘金的格式 104 | * 用run_rq.py来运行,方便传递参数 105 | * ./run_rq.py --file=multi_factors.py --start_date='2021-09-01' --end_date='2021-09-23' --cache_dir='cache' 106 | * 给回测传递参数,选择不同策略(Make conbond library strategy a mod) (Done) 107 | * 看能否利用起rqalpha的incremental mod (Done) 108 | 109 | ### 2021-09-27 110 | 111 | * 过滤低规模转债: 案例:128060(中装转债),2020-02-08公告,规模低于3000万,02-13开始停止交易 (Done) 112 | 113 | ### 2021-09-28 114 | 115 | * 用其他类似的量化平台结果添加测试 116 | * 是否过滤停牌转债导致的不同, 例如2018-01-08 113502 117 | * 是否过滤已公告强赎转债导致的不同, 例如2018-06-19 110039 118 | * 是否过滤规模小于一个亿的转债(避免停止交易), 例如2019-04-29 123013 119 | 120 | ### 2021-09-29 121 | 122 | * 用其他类似的量化平台结果添加测试(自动化比对流程) 123 | * 2019-09-23 113534: 数据源问题,2019-09-23时候的转股溢价率是6%,实际上应该是44+(集思录),2019-09-24转股价下修到底溢价率才下来了 124 | * 2020-08-10 128012: 2020-04-29之后再无成交,价格不变但是溢价率一直降低 125 | * 2021-01-18 113008: 临近到期赎回,需要过滤 126 | 127 | ### 2021-09-30 128 | 129 | * 用其他类似的量化平台结果添加测试(自动化比对流程) 130 | * 2020-08-10 128012: 4月29开始停牌,7月27开始回售后数据源变为不停牌(https://new.qq.com/omn/20210629/20210629A0D0BW00.html)。使用成交量进行过滤。 131 | * 有的标的有的日成交量很低,下单数量超过当日Bar的25%只会部分成交 132 | * 2018-11-26 128033, 9.51万成交额,这种就放着吧,总体影响不大,之后还会被继续平仓 133 | * 根据2021-09-29 diff结果修正 134 | * 2019-09-23 113534: 数据源问题,不需要修正 135 | * 2020-08-10 128012: 2020-04-29之后再无成交,价格不变但是溢价率一直降低,用成交过滤 136 | * 2021-01-18 113008: 临近到期赎回,过滤(30days) 137 | 138 | ### 2021-10-29 139 | 140 | * 多策略回测 141 | * 回测配置放置在json中,可定义过滤条件 142 | * 增加几个回测策略 143 | * 过滤接近强赎触发的转债,强赎公告发布会马上导致溢价的收敛。 144 | -------------------------------------------------------------------------------- /library/conbond/strategy.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | from datetime import date 4 | import logging 5 | 6 | 7 | def multi_factors_rank(df, txn_day, config, score_col, rank_col): 8 | factors = config['factors'].keys() 9 | weights = config['factors'].values() 10 | df = df.reset_index() 11 | score_cols = [] 12 | for factor in factors: 13 | col = '%s_rank' % factor 14 | score_cols.append(col) 15 | df = df.sort_values(factor).reset_index(drop=True) 16 | df[col] = df.index.to_series() 17 | df.reset_index(drop=True, inplace=True) 18 | df[score_col] = (df[score_cols] * weights).sum(axis=1) 19 | return post_scoring(df, txn_day, config, score_col, rank_col) 20 | 21 | 22 | def multi_factors_weighted_linear(df, txn_day, config, score_col, rank_col): 23 | factors = config['factors'].keys() 24 | weights = config['factors'].values() 25 | df[score_col] = (df[factors] * weights).sum(axis=1) 26 | return post_scoring(df, txn_day, config, score_col, rank_col) 27 | 28 | 29 | def post_scoring(df, txn_day, config, score_col, rank_col): 30 | def filter_conbond(bond, filters=config['filters'], today=txn_day): 31 | values = bond.to_dict() 32 | values['today'] = str(today) 33 | for reason, cond in filters.items(): 34 | try: 35 | if eval(cond.format(**values)): 36 | return True, reason 37 | except Exception as e: 38 | print(cond.format(**values)) 39 | raise e 40 | return False, '' 41 | df[['filtered', 'filtered_reason']] = df.apply(filter_conbond, 42 | axis=1, 43 | result_type='expand') 44 | df = df.sort_values(score_col, ascending=config['asc']).reset_index() 45 | df[rank_col] = df.index.to_series() 46 | return df.set_index('order_book_id') 47 | 48 | 49 | def plot_results(backtest_time, results, savefile=None): 50 | from matplotlib import rcParams, gridspec, ticker, image as mpimg, pyplot as plt 51 | from matplotlib.font_manager import findfont, FontProperties 52 | import numpy as np 53 | 54 | rcParams['font.family'] = 'sans-serif' 55 | rcParams['font.sans-serif'] = [ 56 | u'Microsoft Yahei', 57 | u'Heiti SC', 58 | u'Heiti TC', 59 | u'STHeiti', 60 | u'WenQuanYi Zen Hei', 61 | u'WenQuanYi Micro Hei', 62 | u'文泉驿微米黑', 63 | u'SimHei', 64 | ] + rcParams['font.sans-serif'] 65 | rcParams['axes.unicode_minus'] = False 66 | 67 | use_chinese_fonts = True 68 | font = findfont(FontProperties(family=['sans-serif'])) 69 | if '/matplotlib/' in font: 70 | use_chinese_fonts = False 71 | logging.warn('Missing Chinese fonts. Fallback to English.') 72 | 73 | title = 'Conbond Strateties Comparison' 74 | table_size = 2 if len(results) <= 6 else 3 75 | benchmark_portfolio = None 76 | start_date = None 77 | end_date = None 78 | plt.style.use('ggplot') 79 | img_width = 16 80 | img_height = 10 81 | fig = plt.figure(title, figsize=(img_width, img_height)) 82 | gs = gridspec.GridSpec(img_height, img_width) 83 | ax = plt.subplot(gs[table_size:img_height, :]) 84 | ax.get_xaxis().set_minor_locator(ticker.AutoMinorLocator()) 85 | ax.get_yaxis().set_minor_locator(ticker.AutoMinorLocator()) 86 | ax.grid(b=True, which='minor', linewidth=.2) 87 | ax.grid(b=True, which='major', linewidth=1) 88 | table_data = {} 89 | table_columns = [ 90 | 'sharpe', 'max_drawdown', 'total_returns', 'annualized_returns' 91 | ] 92 | for strategy, result_dict in results.items(): 93 | summary = result_dict['summary'] 94 | 95 | if benchmark_portfolio is None: 96 | benchmark = summary['benchmark'] 97 | benchmark_portfolio = result_dict.get('benchmark_portfolio') 98 | start_date = result_dict.get('summary')['start_date'] 99 | end_date = result_dict.get('summary')['end_date'] 100 | index = benchmark_portfolio.index 101 | portfolio_value = benchmark_portfolio.unit_net_value 102 | xs = portfolio_value.values 103 | rt = benchmark_portfolio.unit_net_value.values 104 | ax.plot(benchmark_portfolio['unit_net_value'] - 1.0, 105 | label=benchmark, 106 | alpha=1, 107 | linewidth=2) 108 | table_data[benchmark] = [ 109 | summary['benchmark_sharpe'], summary['benchmark_max_drawdown'], 110 | summary['benchmark_total_returns'], 111 | summary['benchmark_annualized_returns'] 112 | ] 113 | table_data[strategy] = [summary[col] for col in table_columns] 114 | 115 | portfolio = result_dict['portfolio'] 116 | ax.plot(portfolio['unit_net_value'] - 1.0, 117 | label=strategy, 118 | alpha=1, 119 | linewidth=2) 120 | 121 | # place legend 122 | leg = plt.legend(loc='best') 123 | leg.get_frame().set_alpha(0.5) 124 | 125 | # manipulate axis 126 | vals = ax.get_yticks() 127 | ax.set_yticklabels(['{:3.2f}%'.format(x * 100) for x in vals]) 128 | 129 | df = pd.DataFrame.from_dict(table_data, 130 | orient='index', 131 | columns=table_columns).reset_index().rename( 132 | columns={'index': 'strategy'}) 133 | df[['max_drawdown', 'total_returns', 'annualized_returns' 134 | ]] = df[['max_drawdown', 'total_returns', 135 | 'annualized_returns']].applymap('{0:.2%}'.format) 136 | ax2 = plt.subplot(gs[0:table_size, :]) 137 | ax2.set_title(title) 138 | ax2.text(0, 2, 'Start Date: %s, End Date: %s, Backtest Time: %s' % (start_date, end_date, backtest_time)) 139 | ax2.table(cellText=df.values, colLabels=df.columns, loc='center') 140 | ax2.axis('off') 141 | 142 | if savefile: 143 | plt.savefig(savefile, bbox_inches='tight') 144 | -------------------------------------------------------------------------------- /library/conbond/joinquant.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from datetime import datetime, date 3 | import pathlib 4 | import jqdatasdk as jqdata 5 | 6 | 7 | def auth(username, password): 8 | jqdata.auth(username, password) 9 | 10 | 11 | def fetch(txn_day, cache_dir=None): 12 | df_basic_info = None 13 | df_convert_price_adjust = None 14 | df_latest_bond_price = None 15 | df_latest_stock_price = None 16 | cache_path = None 17 | 18 | if cache_dir: 19 | cache_path = pathlib.Path(cache_dir).joinpath( 20 | 'jqdata', txn_day.strftime('%Y-%m-%d')) 21 | 22 | if cache_path and cache_path.exists(): 23 | print('Using cached file: %s' % cache_path) 24 | df_basic_info = pd.read_excel( 25 | cache_path.parent.joinpath('conbond_basic_info.xlsx')) 26 | df_convert_price_adjust = pd.read_excel( 27 | cache_path.parent.joinpath('conbond_convert_price_adjust.xlsx')) 28 | df_latest_bond_price = pd.read_excel( 29 | cache_path.joinpath('conbond_daily_price.xlsx')) 30 | df_latest_stock_price = pd.read_excel( 31 | cache_path.joinpath('conbond_stock_daily_price.xlsx')) 32 | else: 33 | df_basic_info, df_convert_price_adjust, df_latest_bond_price, df_latest_stock_price = read_data( 34 | txn_day) 35 | print('Using data from: %s' % txn_day) 36 | if cache_path: 37 | cache_path.mkdir(parents=True, exist_ok=True) 38 | df_basic_info.to_excel( 39 | cache_path.parent.joinpath('conbond_basic_info.xlsx')) 40 | df_convert_price_adjust.to_excel( 41 | cache_path.parent.joinpath( 42 | 'conbond_convert_price_adjust.xlsx')) 43 | df_latest_bond_price.to_excel( 44 | cache_path.joinpath('conbond_daily_price.xlsx')) 45 | df_latest_stock_price.to_excel( 46 | cache_path.joinpath('conbond_stock_daily_price.xlsx')) 47 | 48 | return process(txn_day, df_basic_info, df_convert_price_adjust, 49 | df_latest_bond_price, df_latest_stock_price) 50 | 51 | 52 | def read_data(txn_day): 53 | df_basic_info = jqdata.bond.run_query( 54 | jqdata.query(jqdata.bond.CONBOND_BASIC_INFO)) 55 | # For some reason some company_code is nan 56 | df_basic_info = df_basic_info[pd.notnull(df_basic_info['company_code'])] 57 | df_latest_bond_price = jqdata.bond.run_query( 58 | jqdata.query(jqdata.bond.CONBOND_DAILY_PRICE).filter( 59 | jqdata.bond.CONBOND_DAILY_PRICE.date == txn_day)) 60 | df_latest_stock_price = jqdata.get_price( 61 | df_basic_info.company_code.tolist(), 62 | start_date=txn_day, 63 | end_date=txn_day, 64 | frequency='daily', 65 | panel=False) 66 | df_convert_price_adjust = jqdata.bond.run_query( 67 | jqdata.query(jqdata.bond.CONBOND_CONVERT_PRICE_ADJUST)) 68 | assert (len(df_convert_price_adjust) < 5000) 69 | return df_basic_info, df_convert_price_adjust, df_latest_bond_price, df_latest_stock_price 70 | 71 | 72 | def process(txn_day, df_basic_info, df_convert_price_adjust, 73 | df_latest_bond_price, df_latest_stock_price): 74 | # Convert code, company_code to string for joining 75 | df_basic_info['code'] = df_basic_info.code.astype(str) 76 | df_basic_info['company_code'] = df_basic_info.company_code.astype(str) 77 | df_convert_price_adjust['code'] = df_convert_price_adjust.code.astype(str) 78 | df_latest_bond_price['code'] = df_latest_bond_price.code.astype(str) 79 | df_latest_stock_price['code'] = df_latest_stock_price.code.astype(str) 80 | 81 | # Keep only bonds that are listed and also can be traded 82 | # Some bonds are still listed, but is not traded (e.g. 2021-08-26, 123029) 83 | df_latest_bond_price = df_latest_bond_price[df_latest_bond_price.close > 0] 84 | df_latest_bond_price = df_latest_bond_price[[ 85 | 'code', 'exchange_code', 'close' 86 | ]].rename(columns={'close': 'bond_price'}) 87 | 88 | df_basic_info = df_basic_info[[ 89 | 'code', 90 | 'short_name', 91 | 'company_code', 92 | ]] 93 | 94 | # Schema: code, short_name, company_code, bond_price, exchange_code 95 | df = df_latest_bond_price.set_index('code').join( 96 | df_basic_info.set_index('code')).reset_index() 97 | 98 | # Filter price adjust so that the convert price is the correct one at that day 99 | # Using the latest one is wrong as it can be sometime newer than txn_day 100 | df_convert_price_adjust['adjust_date'] = pd.to_datetime( 101 | df_convert_price_adjust['adjust_date']) 102 | df_convert_price_adjust = df_convert_price_adjust[ 103 | df_convert_price_adjust['adjust_date'].dt.date <= txn_day] 104 | df_convert_price_adjust = df_convert_price_adjust[[ 105 | 'code', 'new_convert_price' 106 | ]].groupby('code').min() 107 | df_convert_price_adjust = df_convert_price_adjust.rename( 108 | columns={'new_convert_price': 'convert_price'}) 109 | 110 | # Join with convert_price_adjust to get latest convert price 111 | # Schema: code, short_name, company_code, bond_price, convert_price, exchange_code 112 | df = df.set_index('code').join(df_convert_price_adjust) 113 | 114 | df_latest_stock_price = df_latest_stock_price[[ 115 | 'code', 'close' 116 | ]].rename(columns={'close': 'stock_price'}) 117 | # Join with latest_stock_price to get latest stock price 118 | # Schema: code, short_name, company_code, bond_price, convert_price, stock_price, exchange_code 119 | df = df.reset_index().set_index('company_code').join( 120 | df_latest_stock_price.set_index('code')) 121 | 122 | # Calculate convert_premium_rate 123 | # Schema: code, short_name, company_code, bond_price, convert_price, stock_price, convert_premium_rate, exchange_code 124 | df['convert_premium_rate'] = df.bond_price / (100 / df.convert_price * 125 | df.stock_price) - 1 126 | 127 | df['code'] = df[['code', 'exchange_code']].agg('.'.join, axis=1) 128 | df = df.drop(columns=['exchange_code']).set_index('code') 129 | return df 130 | -------------------------------------------------------------------------------- /logs/2021-09-08-11-39-20/ricequant.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from datetime import date 3 | import rqdatac 4 | import pandas as pd 5 | 6 | 7 | def read_data(today): 8 | txn_day = rqdatac.get_previous_trading_date(today) 9 | df_all_instruments = rqdatac.convertible.all_instruments( 10 | txn_day).reset_index() 11 | df_latest_bond_price = rqdatac.get_price( 12 | df_all_instruments.order_book_id.tolist(), 13 | start_date=txn_day, 14 | end_date=txn_day, 15 | frequency='1d').reset_index() 16 | df_latest_stock_price = rqdatac.get_price( 17 | df_all_instruments.stock_code.tolist(), 18 | start_date=txn_day, 19 | end_date=txn_day, 20 | frequency='1d').reset_index() 21 | df_conversion_price = rqdatac.convertible.get_conversion_price( 22 | df_all_instruments.order_book_id.tolist(), 23 | end_date=txn_day).reset_index() 24 | df_call_info = rqdatac.convertible.get_call_info( 25 | df_all_instruments.order_book_id.tolist(), end_date=txn_day) 26 | if df_call_info is not None: 27 | df_call_info = df_call_info.reset_index() 28 | df_indicators = rqdatac.convertible.get_indicators( 29 | df_all_instruments.order_book_id.tolist(), 30 | start_date=txn_day, 31 | end_date=txn_day).reset_index() 32 | return txn_day, df_all_instruments, df_conversion_price, df_latest_bond_price, df_latest_stock_price, df_call_info, df_indicators 33 | 34 | 35 | def process(txn_day, df_all_instruments, df_conversion_price, 36 | df_latest_bond_price, df_latest_stock_price, df_call_info, 37 | df_indicators): 38 | # Data cleaning 39 | # Filter non-conbond, e.g. exchange bond 40 | df_all_instruments = df_all_instruments[df_all_instruments.bond_type == 41 | 'cb'] 42 | # Filter bonds that stopped trading by txn_day 43 | df_all_instruments[ 44 | 'stopped_trading'] = df_all_instruments.stop_trading_date.dt.date <= txn_day 45 | df_all_instruments = df_all_instruments[df_all_instruments.stopped_trading 46 | == False] 47 | 48 | df_all_instruments = df_all_instruments[[ 49 | 'order_book_id', 50 | 'symbol', 51 | 'stock_code', 52 | ]] 53 | 54 | df_latest_stock_price = df_latest_stock_price[[ 55 | 'order_book_id', 'close' 56 | ]].rename(columns={ 57 | 'close': 'stock_price' 58 | }).set_index('order_book_id') 59 | # stock_price 60 | df = df_all_instruments.set_index('stock_code').join( 61 | df_latest_stock_price).reset_index().set_index('order_book_id') 62 | 63 | df_latest_bond_price = df_latest_bond_price[[ 64 | 'order_book_id', 'close' 65 | ]].rename(columns={ 66 | 'close': 'bond_price' 67 | }).set_index('order_book_id') 68 | # bond_price 69 | df = df.join(df_latest_bond_price) 70 | if df_call_info is not None and 'info_date' in df_call_info.columns: 71 | # info_date 72 | df_call_info = df_call_info[pd.notnull(df_call_info.info_date)] 73 | if not df_call_info.empty: 74 | df = df.join(df_call_info[['order_book_id', 'info_date' 75 | ]].set_index('order_book_id')) 76 | if df.info_date.dt.date.dtype == date: 77 | df['force_redeem'] = df.info_date.dt.date < txn_day 78 | df = df[df.force_redeem == False] 79 | 80 | df_conversion_price = df_conversion_price[[ 81 | 'order_book_id', 'conversion_price' 82 | ]].groupby('order_book_id').min() 83 | # conversion_price 84 | df = df.join(df_conversion_price) 85 | 86 | df['convert_premium_rate'] = df.bond_price / (100 / df.conversion_price * 87 | df.stock_price) - 1 88 | return df 89 | 90 | 91 | # config: Expect to have two keys: weight_bond_price and weight_convert_premium_rate 92 | # df: Expect to have a column named 'double_low', or two columns named 'bond_price' and 'convert_premium_rate' 93 | # index of df is the id for the bond to place order 94 | def double_low(df, config): 95 | assert 'top' in config 96 | top = config['top'] 97 | 98 | if 'double_low' not in df.columns: 99 | assert 'weight_bond_price' in config 100 | assert 'weight_convert_premium_rate' in config 101 | weight_bond_price = config['weight_bond_price'] 102 | weight_convert_premium_rate = config['weight_convert_premium_rate'] 103 | assert 'bond_price' in df.columns 104 | assert 'convert_premium_rate' in df.columns 105 | df['double_low'] = df.bond_price * weight_bond_price + df.convert_premium_rate * 100 * weight_convert_premium_rate 106 | dl = df.nsmallest(top, 'double_low') 107 | print(dl) 108 | return set(df.nsmallest(top, 'double_low').index.values.tolist()) 109 | 110 | 111 | def generate_orders(df, strategy, strategy_config, holdings): 112 | candidates = strategy(df, strategy_config) 113 | orders = {} 114 | orders['buy'] = list(candidates - holdings) 115 | orders['sell'] = list(holdings - candidates) 116 | orders['hold'] = list(holdings & candidates) 117 | return orders 118 | 119 | 120 | def init(context): 121 | context.top = 20 122 | scheduler.run_weekly(rebalance, 123 | tradingday=1, 124 | time_rule=market_open(minute=10)) 125 | 126 | 127 | def rebalance(context, bar_dict): 128 | txn_day, df_all_instruments, df_conversion_price, df_latest_bond_price, df_latest_stock_price, df_call_info, df_indicators = read_data( 129 | context.now) 130 | df = process(txn_day, df_all_instruments, df_conversion_price, 131 | df_latest_bond_price, df_latest_stock_price, df_call_info, 132 | df_indicators) 133 | positions = set() 134 | for p in context.portfolio.get_positions(): 135 | positions.add(p.order_book_id) 136 | orders = generate_orders( 137 | df, double_low, { 138 | 'weight_bond_price': 0.5, 139 | 'weight_convert_premium_rate': 0.5, 140 | 'top': context.top, 141 | }, positions) 142 | logger.info("今日操作:%s" % orders) 143 | for code in orders['sell']: 144 | order_target_percent(code, 0) 145 | for op in ['hold', 'buy']: 146 | for code in orders[op]: 147 | order_target_percent(code, 1 / context.top) 148 | -------------------------------------------------------------------------------- /examples/backtest.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | from absl import app, flags 4 | from attrdict import AttrDict 5 | from conbond import ricequant, strategy 6 | from datetime import datetime 7 | from rqalpha import run_func 8 | from rqalpha.api import logger 9 | import glob 10 | import json 11 | import pandas as pd 12 | import pathlib 13 | from rqalpha.utils.logger import user_log 14 | from logbook import Logger, FileHandler 15 | 16 | FLAGS = flags.FLAGS 17 | 18 | flags.DEFINE_string('strategy_cfg', None, 'Strategy config file') 19 | flags.mark_flag_as_required('strategy_cfg') 20 | flags.DEFINE_string('cache_dir', None, 'Cache directory') 21 | flags.mark_flag_as_required('cache_dir') 22 | flags.DEFINE_string('start_date', None, 'Backtest start date') 23 | flags.mark_flag_as_required('start_date') 24 | flags.DEFINE_string('end_date', None, 'Backtest end date') 25 | flags.mark_flag_as_required('end_date') 26 | flags.DEFINE_string('results', 'results.png', 'results plot file') 27 | flags.DEFINE_string('run_dir', None, 'Run directory') 28 | 29 | 30 | # A few note for this to work: 31 | # convertible bond is not supported by rqalpha by default 32 | # for the backtest to work, we are making the convertible bond as common stock 33 | # The instruments.pk file will need to be updated to include all the bonds' order_book_id 34 | def init(context): 35 | scheduler.run_weekly(rebalance, tradingday=1) 36 | # scheduler.run_daily(rebalance) 37 | 38 | 39 | def rebalance(context, bar_dict): 40 | logger.info('Rebalance date: %s' % context.now) 41 | df = ricequant.fetch(context.now, 42 | cache_dir=context.cache_dir, 43 | logger=logger) 44 | score_col = 'weighted_score' 45 | rank_col = 'rank' 46 | s = getattr(strategy, context.strategy_config['scoring_fn']) 47 | df = s(df, context.now, 48 | context.strategy_config['config'].convert_to_dict(), score_col, 49 | rank_col) 50 | df['date'] = context.now.date() 51 | 52 | positions = set() 53 | suspended = set() 54 | for p in context.portfolio.get_positions(): 55 | inst = df.loc[p.order_book_id] 56 | if inst.at['suspended']: 57 | suspended.add(p.order_book_id) 58 | context.logf.info('持仓停牌: %s' % p.order_book_id) 59 | else: 60 | positions.add(p.order_book_id) 61 | 62 | top = context.strategy_config['top'] 63 | head = df[~df.filtered].iloc[top - len(suspended)].at[rank_col] 64 | df = df.head(head) 65 | if hasattr(context, 'candidatesf'): 66 | df[[ 67 | 'date', 'symbol', 'bond_price', 'conversion_premium', score_col, 68 | rank_col, 'filtered', 'filtered_reason' 69 | ]].to_csv(context.candidatesf, mode='a', header=False, index=True) 70 | else: 71 | context.candidatesf = pathlib.Path(context.run_dir).joinpath( 72 | '%s.csv' % context.strategy_name) 73 | df[[ 74 | 'date', 'symbol', 'bond_price', 'conversion_premium', score_col, 75 | rank_col, 'filtered', 'filtered_reason' 76 | ]].to_csv(context.candidatesf, mode='w', header=True, index=True) 77 | 78 | candidates = set(df[~df.filtered].index.values.tolist()) 79 | # 平仓 80 | for order_book_id in (positions - candidates): 81 | order = order_target_percent(order_book_id, 0) 82 | if order is not None and order.status != ORDER_STATUS.FILLED: 83 | context.logf.info('Order error: %s' % order) 84 | # 调仓 85 | for order_book_id in (positions & candidates): 86 | order = order_target_percent(order_book_id, 1 / top) 87 | if order is not None and order.status != ORDER_STATUS.FILLED: 88 | context.logf.info('Order error: %s' % order) 89 | # 开仓 90 | for order_book_id in (candidates - positions): 91 | order = order_target_percent(order_book_id, 1 / top) 92 | if order is not None and order.status != ORDER_STATUS.FILLED: 93 | context.logf.info('Order error: %s' % order) 94 | 95 | 96 | def backtest(cfg, run_dir, cache_dir, logger): 97 | config = { 98 | 'base': { 99 | 'start_date': FLAGS.start_date, 100 | 'end_date': FLAGS.end_date, 101 | 'accounts': { 102 | 'stock': 1000000 103 | }, 104 | 'frequency': '1d', 105 | 'benchmark': '000300.XSHG', 106 | }, 107 | 'extra': { 108 | 'context_vars': { 109 | 'run_dir': run_dir, 110 | 'cache_dir': cache_dir, 111 | 'strategy_config': cfg, 112 | 'strategy_name': cfg['name'], 113 | 'logf': logger, 114 | }, 115 | 'log_level': 'error', 116 | }, 117 | 'mod': { 118 | 'sys_analyser': { 119 | 'enabled': True, 120 | 'output_file': '%s/%s.pkl' % (run_dir, cfg['name']), 121 | 'plot': False, 122 | 'plot_save_file': '%s/%s.png' % (run_dir, cfg['name']), 123 | }, 124 | 'sys_simulation': { 125 | 'enabled': True, 126 | # 'matching_type': 'last' 127 | }, 128 | 'sys_accounts': { 129 | 'enabled': True, 130 | # conbond is T0 131 | 'stock_t1': False, 132 | }, 133 | 'sys_scheduler': { 134 | 'enabled': True, 135 | }, 136 | 'sys_progress': { 137 | 'enabled': True, 138 | 'show': True, 139 | }, 140 | 'sys_transaction_cost': { 141 | 'enabled': True, 142 | }, 143 | 'incremental': { 144 | 'enabled': False, 145 | 'strategy_id': 'low_cpr', 146 | # 是否启用 csv 保存 feeds 功能,可以设置为 MongodbRecorder 147 | 'recorder': 'CsvRecorder', 148 | # 持久化数据输出文件夹 149 | 'persist_folder': 'cache', 150 | }, 151 | 'local_source': { 152 | 'enabled': 153 | True, 154 | 'lib': 155 | 'rqalpha_mod_local_source', 156 | # 其他配置参数 157 | 'data_path': 158 | pathlib.Path(__file__).parent.joinpath(cache_dir, 'rqdata', 159 | 'combined.csv'), 160 | } 161 | } 162 | } 163 | return run_func(init=init, config=config) 164 | 165 | 166 | def main(argv): 167 | backtest_time = datetime.now() 168 | if FLAGS.run_dir: 169 | run_dir = pathlib.Path(FLAGS.run_dir).resolve() 170 | else: 171 | run_dir = pathlib.Path('logs').joinpath( 172 | backtest_time.strftime('%Y-%m-%d-%H-%M-%S')).resolve() 173 | run_dir.mkdir(parents=True, exist_ok=False) 174 | print('Run dir: {0}'.format(run_dir)) 175 | logf = Logger('backtest') 176 | fh = FileHandler('%s/debug.log' % run_dir, level='DEBUG', bubble=True) 177 | fh.push_application() 178 | results = {} 179 | for sc in glob.glob(FLAGS.strategy_cfg): 180 | p = pathlib.Path(sc) 181 | cfg = json.load(p.open()) 182 | cfg['name'] = p.stem 183 | r = run_dir.joinpath('%s.pkl' % p.stem) 184 | if r.exists() and not cfg['force']: 185 | print('Result for %s exists, skipping' % sc) 186 | results[cfg['name']] = pd.read_pickle(r) 187 | else: 188 | print('Strategy name: %s' % cfg['name']) 189 | r = backtest(cfg, run_dir, FLAGS.cache_dir, logf) 190 | results[cfg['name']] = r['sys_analyser'] 191 | print('Run dir: {0}'.format(run_dir)) 192 | strategy.plot_results(backtest_time, results, savefile=FLAGS.results) 193 | 194 | 195 | if __name__ == '__main__': 196 | app.run(main) 197 | -------------------------------------------------------------------------------- /library/conbond/ricequant.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from datetime import date 3 | import rqdatac 4 | import pandas as pd 5 | import pathlib 6 | 7 | 8 | def read_or_none(cache_path, f, logger, columns=[]): 9 | p = cache_path.joinpath(f) 10 | if p.exists(): 11 | try: 12 | return pd.read_csv(p) 13 | except pd.errors.EmptyDataError: 14 | return pd.DataFrame(columns=columns) 15 | else: 16 | if logger: 17 | logger.info('Read %s with rqdatac' % f[:-4]) 18 | return None 19 | 20 | 21 | def fetch(txn_day, cache_dir=None, logger=None): 22 | df_all_instruments = None 23 | df_conversion_price = None 24 | df_conversion_info = None 25 | df_call_info = None 26 | df_put_info = None 27 | df_rating = None 28 | df_suspended = None 29 | df_indicators = None 30 | df_latest_bond_price = None 31 | df_latest_stock_price = None 32 | cache_path = None 33 | 34 | if logger: 35 | logger.info('Use data from: %s' % txn_day.strftime('%Y-%m-%d')) 36 | 37 | if cache_dir: 38 | cache_path = pathlib.Path(cache_dir).joinpath( 39 | 'rqdata', txn_day.strftime('%Y-%m-%d')) 40 | cache_path.mkdir(parents=True, exist_ok=True) 41 | df_all_instruments = read_or_none(cache_path, 'all_instruments.csv', 42 | logger) 43 | df_conversion_price = read_or_none(cache_path, 'conversion_price.csv', 44 | logger) 45 | df_conversion_info = read_or_none( 46 | pathlib.Path(cache_dir).joinpath('rqdata'), 'conversion_info.csv', 47 | logger) 48 | df_call_info = read_or_none(cache_path, 49 | 'call_info.csv', 50 | logger, 51 | columns=['order_book_id', 'info_date']) 52 | df_put_info = read_or_none(cache_path, 'put_info.csv', logger) 53 | df_rating = read_or_none(cache_path, 'rating.csv', logger) 54 | df_suspended = read_or_none(cache_path, 'suspended.csv', logger) 55 | df_indicators = read_or_none(cache_path, 'indicators.csv', logger) 56 | df_latest_bond_price = read_or_none(cache_path, 'bond_price.csv', 57 | logger) 58 | df_latest_stock_price = read_or_none(cache_path, 'stock_price.csv', 59 | logger) 60 | 61 | if df_all_instruments is None: 62 | df_all_instruments = rqdatac.convertible.all_instruments( 63 | txn_day).reset_index() 64 | if cache_path: 65 | df_all_instruments.to_csv( 66 | cache_path.joinpath('all_instruments.csv'), index=False) 67 | 68 | if df_latest_bond_price is None: 69 | df_latest_bond_price = rqdatac.get_price( 70 | df_all_instruments.order_book_id.tolist(), 71 | start_date=txn_day, 72 | end_date=txn_day, 73 | frequency='1d').reset_index() 74 | if cache_path: 75 | df_latest_bond_price.to_csv(cache_path.joinpath('bond_price.csv'), 76 | index=False) 77 | 78 | if df_latest_stock_price is None: 79 | df_latest_stock_price = rqdatac.get_price( 80 | df_all_instruments.stock_code.tolist(), 81 | start_date=txn_day, 82 | end_date=txn_day, 83 | frequency='1d').reset_index() 84 | if cache_path: 85 | df_latest_stock_price.to_csv( 86 | cache_path.joinpath('stock_price.csv'), index=False) 87 | 88 | if df_conversion_price is None: 89 | df_conversion_price = rqdatac.convertible.get_conversion_price( 90 | df_all_instruments.order_book_id.tolist(), 91 | end_date=txn_day).reset_index() 92 | if cache_path: 93 | df_conversion_price.to_csv( 94 | cache_path.joinpath('conversion_price.csv'), index=False) 95 | 96 | if df_conversion_info is None: 97 | df_conversion_info = rqdatac.convertible.get_conversion_info( 98 | df_all_instruments.order_book_id.tolist(), 99 | start_date='2017-01-01', 100 | end_date=date.today()).reset_index() 101 | if cache_path: 102 | df_conversion_info.to_csv(pathlib.Path(cache_dir).joinpath( 103 | 'rqdata', 'conversion_info.csv'), 104 | index=False) 105 | 106 | if df_call_info is None: 107 | df_call_info = rqdatac.convertible.get_call_info( 108 | df_all_instruments.order_book_id.tolist(), end_date=txn_day) 109 | if df_call_info is None: 110 | df_call_info = pd.DataFrame(columns=['order_book_id', 'info_date']) 111 | else: 112 | df_call_info = df_call_info.reset_index() 113 | if cache_path: 114 | df_call_info.to_csv(cache_path.joinpath('call_info.csv'), 115 | index=False) 116 | 117 | if df_put_info is None: 118 | df_put_info = rqdatac.convertible.get_put_info( 119 | df_all_instruments.order_book_id.tolist(), end_date=txn_day) 120 | if df_put_info is None: 121 | df_put_info = pd.DataFrame() 122 | else: 123 | df_put_info = df_put_info.reset_index() 124 | if cache_path: 125 | df_put_info.to_csv(cache_path.joinpath('put_info.csv'), 126 | index=False) 127 | 128 | if df_indicators is None: 129 | df_indicators = rqdatac.convertible.get_indicators( 130 | df_all_instruments.order_book_id.tolist(), 131 | start_date=txn_day, 132 | end_date=txn_day).reset_index() 133 | if cache_path: 134 | df_indicators.to_csv(cache_path.joinpath('indicators.csv'), 135 | index=False) 136 | 137 | if df_suspended is None: 138 | df_suspended = rqdatac.convertible.is_suspended( 139 | df_all_instruments.order_book_id.tolist(), 140 | start_date=txn_day, 141 | end_date=txn_day) 142 | if cache_path: 143 | df_suspended.to_csv(cache_path.joinpath('suspended.csv'), 144 | index=False) 145 | 146 | df_suspended = df_suspended.transpose().rename(index=str, 147 | columns={0: 'suspended'}) 148 | 149 | df = populate_metrics(df_all_instruments, df_conversion_price, 150 | df_latest_bond_price, df_latest_stock_price, 151 | df_call_info, df_indicators, df_suspended, txn_day) 152 | # 只返回可转债 153 | return df[df.bond_type == 'cb'] 154 | 155 | 156 | def populate_metrics(all_instruments, conversion_price, bond_price, 157 | stock_price, call_info, indicators, suspended, txn_day): 158 | # Add stock_price column 159 | stock_price = stock_price[['order_book_id', 160 | 'close']].rename(columns={ 161 | 'close': 'stock_price' 162 | }).set_index('order_book_id') 163 | df = all_instruments.set_index('stock_code').join( 164 | stock_price).reset_index().set_index('order_book_id') 165 | 166 | # Add bond_price column 167 | bond_price = bond_price[[ 168 | 'order_book_id', 'volume', 'total_turnover', 'close' 169 | ]].rename(columns={ 170 | 'close': 'bond_price' 171 | }).set_index('order_book_id') 172 | 173 | df = df.join(bond_price).fillna({ 174 | 'bond_price': 0, 175 | 'volume': 0, 176 | 'total_turnover': 0 177 | }) 178 | 179 | # Add conversion_price column 180 | conversion_price = conversion_price[['order_book_id', 'conversion_price' 181 | ]].groupby('order_book_id').min() 182 | df = df.join(conversion_price) 183 | 184 | # Add info_date column 185 | df = df.join(call_info.set_index('order_book_id')[['info_date']]).fillna( 186 | {'info_date': '2030-01-01'}) 187 | 188 | # Add columns from indicators 189 | df = df.join(indicators.set_index('order_book_id')) 190 | 191 | # Add suspended column 192 | df = df.join(suspended) 193 | 194 | # Add days_to_maturity column 195 | df['maturity_date'] = pd.to_datetime(df.maturity_date) 196 | df['days_to_maturity'] = (df.maturity_date.dt.date - 197 | txn_day.date()).dt.days 198 | 199 | return df 200 | 201 | 202 | def auth(username, password): 203 | rqdatac.init(username, password) 204 | -------------------------------------------------------------------------------- /logs/2021-09-30-09-00-03/debug.log: -------------------------------------------------------------------------------- 1 | INFO:root:Use data from: 2018-01-02 2 | INFO:root:Use data from: 2018-01-08 3 | INFO:root:持仓停牌: 113502.XSHG 4 | INFO:root:持仓停牌: 113502.XSHG 5 | INFO:root:Use data from: 2018-01-15 6 | INFO:root:持仓停牌: 113502.XSHG 7 | INFO:root:持仓停牌: 113502.XSHG 8 | INFO:root:Use data from: 2018-01-22 9 | INFO:root:持仓停牌: 113502.XSHG 10 | INFO:root:持仓停牌: 113502.XSHG 11 | INFO:root:Use data from: 2018-01-29 12 | INFO:root:持仓停牌: 113502.XSHG 13 | INFO:root:持仓停牌: 113502.XSHG 14 | INFO:root:Use data from: 2018-02-05 15 | INFO:root:持仓停牌: 113502.XSHG 16 | INFO:root:持仓停牌: 113502.XSHG 17 | INFO:root:Use data from: 2018-02-12 18 | INFO:root:持仓停牌: 113502.XSHG 19 | INFO:root:持仓停牌: 113502.XSHG 20 | INFO:root:Use data from: 2018-02-22 21 | INFO:root:持仓停牌: 113502.XSHG 22 | INFO:root:持仓停牌: 113502.XSHG 23 | INFO:root:Use data from: 2018-02-26 24 | INFO:root:持仓停牌: 113502.XSHG 25 | INFO:root:持仓停牌: 113502.XSHG 26 | INFO:root:Use data from: 2018-03-05 27 | INFO:root:持仓停牌: 113502.XSHG 28 | INFO:root:持仓停牌: 113502.XSHG 29 | INFO:root:持仓停牌: 123007.XSHE 30 | INFO:root:持仓停牌: 123007.XSHE 31 | INFO:root:Use data from: 2018-03-12 32 | INFO:root:持仓停牌: 113502.XSHG 33 | INFO:root:持仓停牌: 113502.XSHG 34 | INFO:root:持仓停牌: 123007.XSHE 35 | INFO:root:持仓停牌: 123007.XSHE 36 | INFO:root:Use data from: 2018-03-19 37 | INFO:root:持仓停牌: 113502.XSHG 38 | INFO:root:持仓停牌: 113502.XSHG 39 | INFO:root:持仓停牌: 123007.XSHE 40 | INFO:root:持仓停牌: 123007.XSHE 41 | INFO:root:Use data from: 2018-03-26 42 | INFO:root:持仓停牌: 113502.XSHG 43 | INFO:root:持仓停牌: 113502.XSHG 44 | INFO:root:持仓停牌: 123007.XSHE 45 | INFO:root:持仓停牌: 123007.XSHE 46 | INFO:root:Use data from: 2018-04-02 47 | INFO:root:持仓停牌: 113502.XSHG 48 | INFO:root:持仓停牌: 113502.XSHG 49 | INFO:root:持仓停牌: 123007.XSHE 50 | INFO:root:持仓停牌: 123007.XSHE 51 | INFO:root:Use data from: 2018-04-09 52 | INFO:root:持仓停牌: 113502.XSHG 53 | INFO:root:持仓停牌: 113502.XSHG 54 | INFO:root:持仓停牌: 123007.XSHE 55 | INFO:root:持仓停牌: 123007.XSHE 56 | INFO:root:持仓停牌: 113016.XSHG 57 | INFO:root:持仓停牌: 113016.XSHG 58 | INFO:root:Use data from: 2018-04-16 59 | INFO:root:持仓停牌: 113502.XSHG 60 | INFO:root:持仓停牌: 113502.XSHG 61 | INFO:root:持仓停牌: 123007.XSHE 62 | INFO:root:持仓停牌: 123007.XSHE 63 | INFO:root:Use data from: 2018-04-23 64 | INFO:root:持仓停牌: 113502.XSHG 65 | INFO:root:持仓停牌: 113502.XSHG 66 | INFO:root:持仓停牌: 123007.XSHE 67 | INFO:root:持仓停牌: 123007.XSHE 68 | INFO:root:Use data from: 2018-05-02 69 | INFO:root:持仓停牌: 113502.XSHG 70 | INFO:root:持仓停牌: 113502.XSHG 71 | INFO:root:持仓停牌: 123007.XSHE 72 | INFO:root:持仓停牌: 123007.XSHE 73 | INFO:root:Use data from: 2018-05-07 74 | INFO:root:持仓停牌: 113502.XSHG 75 | INFO:root:持仓停牌: 113502.XSHG 76 | INFO:root:持仓停牌: 123007.XSHE 77 | INFO:root:持仓停牌: 123007.XSHE 78 | INFO:root:Use data from: 2018-05-14 79 | INFO:root:持仓停牌: 123007.XSHE 80 | INFO:root:持仓停牌: 123007.XSHE 81 | INFO:root:Use data from: 2018-05-21 82 | INFO:root:持仓停牌: 128036.XSHE 83 | INFO:root:持仓停牌: 128036.XSHE 84 | INFO:root:Use data from: 2018-05-28 85 | INFO:root:持仓停牌: 128036.XSHE 86 | INFO:root:持仓停牌: 128036.XSHE 87 | INFO:root:Use data from: 2018-06-04 88 | INFO:root:Use data from: 2018-06-11 89 | INFO:root:Use data from: 2018-06-19 90 | INFO:root:Use data from: 2018-06-25 91 | INFO:root:Use data from: 2018-07-02 92 | INFO:root:Use data from: 2018-07-09 93 | INFO:root:Use data from: 2018-07-16 94 | INFO:root:Use data from: 2018-07-23 95 | INFO:root:Use data from: 2018-07-30 96 | INFO:root:Order error: Order({'order_id': 16329636030542, 'secondary_order_id': None, 'trading_datetime': datetime.datetime(2018, 7, 30, 15, 0), 'datetime': datetime.datetime(2018, 7, 30, 15, 0), 'quantity': 500, 'unfilled_quantity': 450, 'order_book_id': '113012.XSHG', 'side': SIDE.SELL, 'position_effect': POSITION_EFFECT.CLOSE, 'position_direction': POSITION_DIRECTION.LONG, 'message': '113012.XSHG 下单量 500 超过当前 Bar 成交量的 25.0%,实际成交 50', 'filled_quantity': 50, 'status': ORDER_STATUS.CANCELLED, 'price': 0, 'type': ORDER_TYPE.MARKET, 'avg_price': 99.29, 'transaction_cost': 9.964500000000001, 'frozen_price': 99.29, 'init_frozen_cash': 89.361, 'kwargs': {}}) 97 | INFO:root:Use data from: 2018-08-06 98 | INFO:root:Order error: Order({'order_id': 16329636030561, 'secondary_order_id': None, 'trading_datetime': datetime.datetime(2018, 8, 6, 15, 0), 'datetime': datetime.datetime(2018, 8, 6, 15, 0), 'quantity': 450, 'unfilled_quantity': 260, 'order_book_id': '113012.XSHG', 'side': SIDE.SELL, 'position_effect': POSITION_EFFECT.CLOSE, 'position_direction': POSITION_DIRECTION.LONG, 'message': '113012.XSHG 下单量 450 超过当前 Bar 成交量的 25.0%,实际成交 190', 'filled_quantity': 190, 'status': ORDER_STATUS.CANCELLED, 'price': 0, 'type': ORDER_TYPE.MARKET, 'avg_price': 97.32, 'transaction_cost': 33.28344, 'frozen_price': 97.32, 'init_frozen_cash': 78.82920000000001, 'kwargs': {}}) 99 | INFO:root:Use data from: 2018-08-13 100 | INFO:root:Use data from: 2018-08-20 101 | INFO:root:Use data from: 2018-08-27 102 | INFO:root:Use data from: 2018-09-03 103 | INFO:root:Use data from: 2018-09-10 104 | INFO:root:Use data from: 2018-09-17 105 | INFO:root:Use data from: 2018-09-25 106 | INFO:root:Use data from: 2018-10-08 107 | INFO:root:Use data from: 2018-10-15 108 | INFO:root:Use data from: 2018-10-22 109 | INFO:root:Use data from: 2018-10-29 110 | INFO:root:Use data from: 2018-11-05 111 | INFO:root:Use data from: 2018-11-12 112 | INFO:root:Use data from: 2018-11-19 113 | INFO:root:Use data from: 2018-11-26 114 | INFO:root:Order error: Order({'order_id': 16329636030820, 'secondary_order_id': None, 'trading_datetime': datetime.datetime(2018, 11, 26, 15, 0), 'datetime': datetime.datetime(2018, 11, 26, 15, 0), 'quantity': 510, 'unfilled_quantity': 270, 'order_book_id': '128033.XSHE', 'side': SIDE.SELL, 'position_effect': POSITION_EFFECT.CLOSE, 'position_direction': POSITION_DIRECTION.LONG, 'message': '128033.XSHE 下单量 510 超过当前 Bar 成交量的 25.0%,实际成交 240', 'filled_quantity': 240, 'status': ORDER_STATUS.CANCELLED, 'price': 0, 'type': ORDER_TYPE.MARKET, 'avg_price': 97.7, 'transaction_cost': 42.2064, 'frozen_price': 97.7, 'init_frozen_cash': 89.68860000000001, 'kwargs': {}}) 115 | INFO:root:Use data from: 2018-12-03 116 | INFO:root:Use data from: 2018-12-10 117 | INFO:root:Use data from: 2018-12-17 118 | INFO:root:Use data from: 2018-12-24 119 | INFO:root:Use data from: 2019-01-02 120 | INFO:root:Use data from: 2019-01-07 121 | INFO:root:Use data from: 2019-01-14 122 | INFO:root:Use data from: 2019-01-21 123 | INFO:root:Use data from: 2019-01-28 124 | INFO:root:Use data from: 2019-02-11 125 | INFO:root:Use data from: 2019-02-18 126 | INFO:root:Use data from: 2019-02-25 127 | INFO:root:Use data from: 2019-03-04 128 | INFO:root:Use data from: 2019-03-11 129 | INFO:root:Use data from: 2019-03-18 130 | INFO:root:Use data from: 2019-03-25 131 | INFO:root:Use data from: 2019-04-01 132 | INFO:root:Use data from: 2019-04-08 133 | INFO:root:持仓停牌: 128040.XSHE 134 | INFO:root:持仓停牌: 128040.XSHE 135 | INFO:root:Use data from: 2019-04-15 136 | INFO:root:持仓停牌: 128043.XSHE 137 | INFO:root:持仓停牌: 128043.XSHE 138 | INFO:root:持仓停牌: 128040.XSHE 139 | INFO:root:持仓停牌: 128040.XSHE 140 | INFO:root:Use data from: 2019-04-22 141 | INFO:root:持仓停牌: 128043.XSHE 142 | INFO:root:持仓停牌: 128043.XSHE 143 | INFO:root:Use data from: 2019-04-29 144 | INFO:root:Use data from: 2019-05-06 145 | INFO:root:Use data from: 2019-05-13 146 | INFO:root:Use data from: 2019-05-20 147 | INFO:root:Use data from: 2019-05-27 148 | INFO:root:Use data from: 2019-06-03 149 | INFO:root:Use data from: 2019-06-10 150 | INFO:root:Order error: Order({'order_id': 16329636031554, 'secondary_order_id': None, 'trading_datetime': datetime.datetime(2019, 6, 10, 15, 0), 'datetime': datetime.datetime(2019, 6, 10, 15, 0), 'quantity': 640, 'unfilled_quantity': 90, 'order_book_id': '123014.XSHE', 'side': SIDE.SELL, 'position_effect': POSITION_EFFECT.CLOSE, 'position_direction': POSITION_DIRECTION.LONG, 'message': '123014.XSHE 下单量 640 超过当前 Bar 成交量的 25.0%,实际成交 550', 'filled_quantity': 550, 'status': ORDER_STATUS.CANCELLED, 'price': 0, 'type': ORDER_TYPE.MARKET, 'avg_price': 100.45, 'transaction_cost': 99.44550000000001, 'frozen_price': 100.45, 'init_frozen_cash': 115.7184, 'kwargs': {}}) 151 | INFO:root:Use data from: 2019-06-17 152 | INFO:root:Order error: Order({'order_id': 16329636031585, 'secondary_order_id': None, 'trading_datetime': datetime.datetime(2019, 6, 17, 15, 0), 'datetime': datetime.datetime(2019, 6, 17, 15, 0), 'quantity': 600, 'unfilled_quantity': 180, 'order_book_id': '113526.XSHG', 'side': SIDE.SELL, 'position_effect': POSITION_EFFECT.CLOSE, 'position_direction': POSITION_DIRECTION.LONG, 'message': '113526.XSHG 下单量 600 超过当前 Bar 成交量的 25.0%,实际成交 420', 'filled_quantity': 420, 'status': ORDER_STATUS.CANCELLED, 'price': 0, 'type': ORDER_TYPE.MARKET, 'avg_price': 110.51, 'transaction_cost': 83.54556000000002, 'frozen_price': 110.51, 'init_frozen_cash': 119.35079999999999, 'kwargs': {}}) 153 | INFO:root:Use data from: 2019-06-24 154 | INFO:root:Use data from: 2019-07-01 155 | INFO:root:Use data from: 2019-07-08 156 | INFO:root:Use data from: 2019-07-15 157 | INFO:root:Use data from: 2019-07-22 158 | INFO:root:Use data from: 2019-07-29 159 | INFO:root:Use data from: 2019-08-05 160 | INFO:root:Use data from: 2019-08-12 161 | INFO:root:Use data from: 2019-08-19 162 | INFO:root:Use data from: 2019-08-26 163 | INFO:root:Use data from: 2019-09-02 164 | INFO:root:Use data from: 2019-09-09 165 | INFO:root:Use data from: 2019-09-16 166 | INFO:root:Use data from: 2019-09-23 167 | INFO:root:Use data from: 2019-09-30 168 | INFO:root:Use data from: 2019-10-08 169 | INFO:root:Use data from: 2019-10-14 170 | INFO:root:Use data from: 2019-10-21 171 | INFO:root:Use data from: 2019-10-28 172 | INFO:root:Use data from: 2019-11-04 173 | INFO:root:Use data from: 2019-11-11 174 | INFO:root:Use data from: 2019-11-18 175 | INFO:root:Use data from: 2019-11-25 176 | INFO:root:Use data from: 2019-12-02 177 | INFO:root:Use data from: 2019-12-09 178 | INFO:root:Use data from: 2019-12-16 179 | INFO:root:Use data from: 2019-12-23 180 | INFO:root:Use data from: 2019-12-30 181 | INFO:root:Use data from: 2020-01-06 182 | INFO:root:Use data from: 2020-01-13 183 | INFO:root:Use data from: 2020-01-20 184 | INFO:root:Use data from: 2020-02-03 185 | INFO:root:Use data from: 2020-02-10 186 | INFO:root:Use data from: 2020-02-17 187 | INFO:root:Use data from: 2020-02-24 188 | INFO:root:Use data from: 2020-03-02 189 | INFO:root:Use data from: 2020-03-09 190 | INFO:root:Use data from: 2020-03-16 191 | INFO:root:Use data from: 2020-03-23 192 | INFO:root:Use data from: 2020-03-30 193 | INFO:root:Use data from: 2020-04-07 194 | INFO:root:Use data from: 2020-04-13 195 | INFO:root:Use data from: 2020-04-20 196 | INFO:root:Use data from: 2020-04-27 197 | INFO:root:Use data from: 2020-05-06 198 | INFO:root:Use data from: 2020-05-11 199 | INFO:root:Use data from: 2020-05-18 200 | INFO:root:Use data from: 2020-05-25 201 | INFO:root:Use data from: 2020-06-01 202 | INFO:root:Use data from: 2020-06-08 203 | INFO:root:Use data from: 2020-06-15 204 | INFO:root:Use data from: 2020-06-22 205 | INFO:root:Use data from: 2020-06-29 206 | INFO:root:Use data from: 2020-07-06 207 | INFO:root:Use data from: 2020-07-13 208 | INFO:root:持仓停牌: 123043.XSHE 209 | INFO:root:持仓停牌: 123043.XSHE 210 | INFO:root:Use data from: 2020-07-20 211 | INFO:root:持仓停牌: 123043.XSHE 212 | INFO:root:持仓停牌: 123043.XSHE 213 | INFO:root:Use data from: 2020-07-27 214 | INFO:root:Use data from: 2020-08-03 215 | INFO:root:Use data from: 2020-08-10 216 | INFO:root:Use data from: 2020-08-17 217 | INFO:root:Use data from: 2020-08-24 218 | INFO:root:Use data from: 2020-08-31 219 | INFO:root:Use data from: 2020-09-07 220 | INFO:root:Use data from: 2020-09-14 221 | INFO:root:Use data from: 2020-09-21 222 | INFO:root:Use data from: 2020-09-28 223 | INFO:root:Use data from: 2020-10-09 224 | INFO:root:Use data from: 2020-10-12 225 | INFO:root:Use data from: 2020-10-19 226 | INFO:root:Use data from: 2020-10-26 227 | INFO:root:Use data from: 2020-11-02 228 | INFO:root:Use data from: 2020-11-09 229 | INFO:root:持仓停牌: 113595.XSHG 230 | INFO:root:持仓停牌: 113595.XSHG 231 | INFO:root:Use data from: 2020-11-16 232 | INFO:root:Use data from: 2020-11-23 233 | INFO:root:Use data from: 2020-11-30 234 | INFO:root:Use data from: 2020-12-07 235 | INFO:root:Use data from: 2020-12-14 236 | INFO:root:Use data from: 2020-12-21 237 | INFO:root:Use data from: 2020-12-28 238 | INFO:root:Use data from: 2021-01-04 239 | INFO:root:Use data from: 2021-01-11 240 | INFO:root:Use data from: 2021-01-18 241 | INFO:root:Use data from: 2021-01-25 242 | INFO:root:Use data from: 2021-02-01 243 | INFO:root:Use data from: 2021-02-08 244 | INFO:root:Use data from: 2021-02-18 245 | INFO:root:Use data from: 2021-02-22 246 | INFO:root:Use data from: 2021-03-01 247 | INFO:root:Use data from: 2021-03-08 248 | INFO:root:Use data from: 2021-03-15 249 | INFO:root:Use data from: 2021-03-22 250 | INFO:root:Use data from: 2021-03-29 251 | INFO:root:Use data from: 2021-04-06 252 | INFO:root:Use data from: 2021-04-12 253 | INFO:root:Use data from: 2021-04-19 254 | INFO:root:Use data from: 2021-04-26 255 | INFO:root:Use data from: 2021-05-06 256 | INFO:root:Use data from: 2021-05-10 257 | INFO:root:Use data from: 2021-05-17 258 | INFO:root:Use data from: 2021-05-24 259 | INFO:root:Use data from: 2021-05-31 260 | INFO:root:Use data from: 2021-06-07 261 | INFO:root:Use data from: 2021-06-15 262 | INFO:root:Use data from: 2021-06-21 263 | INFO:root:Use data from: 2021-06-28 264 | INFO:root:Use data from: 2021-07-05 265 | INFO:root:Use data from: 2021-07-12 266 | INFO:root:Use data from: 2021-07-19 267 | INFO:root:Use data from: 2021-07-26 268 | INFO:root:Use data from: 2021-08-02 269 | INFO:root:Use data from: 2021-08-09 270 | INFO:root:Use data from: 2021-08-16 271 | INFO:root:Use data from: 2021-08-23 272 | INFO:root:Use data from: 2021-08-30 273 | INFO:root:Use data from: 2021-09-06 274 | INFO:root:Use data from: 2021-09-13 275 | INFO:root:Use data from: 2021-09-22 276 | -------------------------------------------------------------------------------- /examples/juejin-orders-example.csv: -------------------------------------------------------------------------------- 1 | symbol,side,positionEffect,price,volume,createdAt 2 | SHSE.600547,1,1,38.65999985,400,2016-12-01T01:40:00.000Z 3 | SHSE.600074,1,1,15.35999966,10800,2016-12-01T01:40:00.000Z 4 | SZSE.000002,1,1,26.70999908,6200,2016-12-01T01:40:00.000Z 5 | SHSE.600276,1,1,46.97000122,3500,2016-12-01T01:40:00.000Z 6 | SZSE.300017,1,1,59.75999832,2700,2016-12-01T01:40:00.000Z 7 | SZSE.300015,1,1,33.34999847,4900,2016-12-01T01:40:00.000Z 8 | SZSE.002027,1,1,17.60000038,9400,2016-12-01T01:40:00.000Z 9 | SHSE.600519,1,1,321,500,2016-12-01T01:40:00.000Z 10 | SZSE.002294,1,1,29.31999969,5600,2016-12-01T01:40:00.000Z 11 | SHSE.600816,1,1,24.03000069,6900,2016-12-01T01:40:00.000Z 12 | SHSE.600276,2,2,46.13999939,3500,2017-01-03T01:40:00.000Z 13 | SHSE.600816,2,2,23.85000038,6900,2017-01-03T01:40:00.000Z 14 | SZSE.002294,2,2,29.84000015,5600,2017-01-03T01:40:00.000Z 15 | SZSE.300017,2,2,53.84999847,2700,2017-01-03T01:40:00.000Z 16 | SHSE.600074,2,2,13.30000019,10800,2017-01-03T01:40:00.000Z 17 | SZSE.000002,2,2,20.73999977,6200,2017-01-03T01:40:00.000Z 18 | SHSE.600519,2,2,334.6199951,500,2017-01-03T01:40:00.000Z 19 | SZSE.002027,2,2,14.22999954,9400,2017-01-03T01:40:00.000Z 20 | SHSE.600547,2,2,36.81000137,4200,2017-01-03T01:40:00.000Z 21 | SZSE.300015,2,2,30.26000023,4900,2017-01-03T01:40:00.000Z 22 | SHSE.601398,1,1,4.420000076,34900,2017-01-03T01:40:00.000Z 23 | SHSE.601988,1,1,3.460000038,44600,2017-01-03T01:40:00.000Z 24 | SHSE.601288,1,1,3.119999886,49500,2017-01-03T01:40:00.000Z 25 | SHSE.601328,1,1,5.800000191,26600,2017-01-03T01:40:00.000Z 26 | SHSE.601818,1,1,3.940000057,39200,2017-01-03T01:40:00.000Z 27 | SHSE.600028,1,1,5.480000019,28100,2017-01-03T01:40:00.000Z 28 | SZSE.000001,1,1,9.149999619,16800,2017-01-03T01:40:00.000Z 29 | SHSE.600015,1,1,11.14999962,13800,2017-01-03T01:40:00.000Z 30 | SHSE.601857,1,1,7.960000038,19400,2017-01-03T01:40:00.000Z 31 | SHSE.601166,1,1,16.23999977,9500,2017-01-03T01:40:00.000Z 32 | SHSE.601328,2,2,5.980000019,26600,2017-02-03T01:40:00.000Z 33 | SHSE.601398,2,2,4.570000172,34900,2017-02-03T01:40:00.000Z 34 | SZSE.000001,2,2,9.260000229,16800,2017-02-03T01:40:00.000Z 35 | SHSE.601988,2,2,3.549999952,44600,2017-02-03T01:40:00.000Z 36 | SHSE.601288,2,2,3.190000057,49500,2017-02-03T01:40:00.000Z 37 | SHSE.600028,2,2,5.949999809,28100,2017-02-03T01:40:00.000Z 38 | SHSE.601818,2,2,4.050000191,39200,2017-02-03T01:40:00.000Z 39 | SHSE.600015,2,2,11.47999954,13800,2017-02-03T01:40:00.000Z 40 | SHSE.601166,2,2,16.79999924,9500,2017-02-03T01:40:00.000Z 41 | SHSE.601857,2,2,8.579999924,19400,2017-02-03T01:40:00.000Z 42 | SHSE.600871,1,1,3.839999914,41500,2017-02-03T01:40:00.000Z 43 | SZSE.002568,1,1,19.80999947,8000,2017-02-03T01:40:00.000Z 44 | SZSE.000503,1,1,42.90000153,3700,2017-02-03T01:40:00.000Z 45 | SZSE.000839,1,1,8.409999847,18900,2017-02-03T01:40:00.000Z 46 | SZSE.300104,1,1,36.61999893,4300,2017-02-03T01:40:00.000Z 47 | SHSE.600038,1,1,52,3000,2017-02-03T01:40:00.000Z 48 | SZSE.300085,1,1,19.20999908,8300,2017-02-03T01:40:00.000Z 49 | SZSE.000768,1,1,23.5,6700,2017-02-03T01:40:00.000Z 50 | SHSE.600685,1,1,32.70000076,4800,2017-02-03T01:40:00.000Z 51 | SHSE.600570,1,1,43.90999985,3600,2017-02-03T01:40:00.000Z 52 | SZSE.000839,2,2,11.38000011,18900,2017-03-01T01:40:00.000Z 53 | SZSE.000768,2,2,23.86000061,6700,2017-03-01T01:40:00.000Z 54 | SHSE.600570,2,2,47.02000046,3600,2017-03-01T01:40:00.000Z 55 | SHSE.600038,2,2,51.02000046,3000,2017-03-01T01:40:00.000Z 56 | SZSE.002568,2,2,21.68000031,8000,2017-03-01T01:40:00.000Z 57 | SZSE.300104,2,2,35.00999832,4300,2017-03-01T01:40:00.000Z 58 | SZSE.000503,2,2,42.61000061,3700,2017-03-01T01:40:00.000Z 59 | SHSE.600871,2,2,3.930000067,41500,2017-03-01T01:40:00.000Z 60 | SZSE.300085,2,2,20.71999931,8300,2017-03-01T01:40:00.000Z 61 | SHSE.600685,2,2,34.97000122,4800,2017-03-01T01:40:00.000Z 62 | SHSE.600482,1,1,31.95999908,5200,2017-03-01T01:40:00.000Z 63 | SHSE.600816,1,1,27.13999939,6200,2017-03-01T01:40:00.000Z 64 | SHSE.601857,1,1,8.239999771,20400,2017-03-01T01:40:00.000Z 65 | SHSE.601398,1,1,4.679999828,35900,2017-03-01T01:40:00.000Z 66 | SHSE.601288,1,1,3.25999999,51600,2017-03-01T01:40:00.000Z 67 | SZSE.300033,1,1,68.58000183,2400,2017-03-01T01:40:00.000Z 68 | SHSE.601988,1,1,3.680000067,45700,2017-03-01T01:40:00.000Z 69 | SHSE.600519,1,1,356.7099915,400,2017-03-01T01:40:00.000Z 70 | SHSE.601628,1,1,25.54000092,6500,2017-03-01T01:40:00.000Z 71 | SHSE.600019,1,1,7.079999924,23700,2017-03-01T01:40:00.000Z 72 | SHSE.601398,2,2,4.849999905,35900,2017-04-05T01:40:00.000Z 73 | SHSE.601628,2,2,25.20999908,6500,2017-04-05T01:40:00.000Z 74 | SZSE.300033,2,2,64.56999969,2400,2017-04-05T01:40:00.000Z 75 | SHSE.601988,2,2,3.670000076,45700,2017-04-05T01:40:00.000Z 76 | SHSE.601288,2,2,3.349999905,51600,2017-04-05T01:40:00.000Z 77 | SHSE.600019,2,2,6.75,23700,2017-04-05T01:40:00.000Z 78 | SHSE.601857,2,2,7.940000057,20400,2017-04-05T01:40:00.000Z 79 | SHSE.600482,2,2,35.79999924,5200,2017-04-05T01:40:00.000Z 80 | SZSE.002027,1,1,12.09000015,13300,2017-04-05T01:40:00.000Z 81 | SZSE.002304,1,1,86.98999786,1800,2017-04-05T01:40:00.000Z 82 | SZSE.000858,1,1,43.22999954,3700,2017-04-05T01:40:00.000Z 83 | SZSE.000568,1,1,42.08000183,3800,2017-04-05T01:40:00.000Z 84 | SHSE.600688,1,1,6.5,24700,2017-04-05T01:40:00.000Z 85 | SZSE.000423,1,1,65.5,2400,2017-04-05T01:40:00.000Z 86 | SZSE.300146,1,1,11.23999977,14300,2017-04-05T01:40:00.000Z 87 | SHSE.600276,1,1,54.79999924,2900,2017-04-05T01:40:00.000Z 88 | SHSE.600816,1,1,11.52000046,7700,2017-04-05T01:40:00.000Z 89 | SHSE.600276,2,2,53.18999863,2900,2017-05-02T01:40:00.000Z 90 | SHSE.600688,2,2,6.480000019,24700,2017-05-02T01:40:00.000Z 91 | SHSE.600816,2,2,11.35000038,13900,2017-05-02T01:40:00.000Z 92 | SHSE.600519,2,2,411,400,2017-05-02T01:40:00.000Z 93 | SZSE.002027,2,2,13,13300,2017-05-02T01:40:00.000Z 94 | SZSE.000423,1,1,63.97000122,100,2017-05-02T01:40:00.000Z 95 | SZSE.000568,2,2,45.40999985,200,2017-05-02T01:40:00.000Z 96 | SZSE.002304,1,1,78.98999786,200,2017-05-02T01:40:00.000Z 97 | SHSE.600221,1,1,3.309999943,48700,2017-05-02T01:40:00.000Z 98 | SZSE.300146,1,1,10.78999996,600,2017-05-02T01:40:00.000Z 99 | SHSE.600959,1,1,10.22999954,15700,2017-05-02T01:40:00.000Z 100 | SHSE.601988,1,1,3.549999952,45400,2017-05-02T01:40:00.000Z 101 | SHSE.601288,1,1,3.329999924,48400,2017-05-02T01:40:00.000Z 102 | SHSE.601328,1,1,5.929999828,27200,2017-05-02T01:40:00.000Z 103 | SHSE.601328,2,2,6.230000019,27200,2017-06-01T01:40:00.000Z 104 | SHSE.600959,2,2,10.89999962,15700,2017-06-01T01:40:00.000Z 105 | SZSE.000423,2,2,67.36000061,2500,2017-06-01T01:40:00.000Z 106 | SZSE.000568,2,2,48.02000046,3600,2017-06-01T01:40:00.000Z 107 | SHSE.600221,2,2,3.25,48700,2017-06-01T01:40:00.000Z 108 | SZSE.300146,2,2,11.61999989,14900,2017-06-01T01:40:00.000Z 109 | SZSE.000858,2,2,48.15999985,3700,2017-06-01T01:40:00.000Z 110 | SHSE.601398,1,1,5.309999943,32000,2017-06-01T01:40:00.000Z 111 | SHSE.601288,2,2,3.579999924,900,2017-06-01T01:40:00.000Z 112 | SZSE.002027,1,1,13.53999996,12500,2017-06-01T01:40:00.000Z 113 | SHSE.601857,1,1,7.829999924,21600,2017-06-01T01:40:00.000Z 114 | SHSE.600519,1,1,450,300,2017-06-01T01:40:00.000Z 115 | SHSE.600276,1,1,50.40000153,3300,2017-06-01T01:40:00.000Z 116 | SHSE.600028,1,1,6.300000191,26900,2017-06-01T01:40:00.000Z 117 | SHSE.600816,1,1,10.85000038,15600,2017-06-01T01:40:00.000Z 118 | SHSE.600276,2,2,49.90000153,3300,2017-07-03T01:40:00.000Z 119 | SHSE.600816,2,2,13.52999973,15600,2017-07-03T01:40:00.000Z 120 | SHSE.600028,2,2,5.940000057,26900,2017-07-03T01:40:00.000Z 121 | SHSE.600519,2,2,458.9599915,300,2017-07-03T01:40:00.000Z 122 | SZSE.002304,2,2,84.63999939,2000,2017-07-03T01:40:00.000Z 123 | SZSE.002027,2,2,13.72999954,12500,2017-07-03T01:40:00.000Z 124 | SHSE.600871,1,1,3.329999924,51500,2017-07-03T01:40:00.000Z 125 | SHSE.601398,1,1,5.239999771,700,2017-07-03T01:40:00.000Z 126 | SHSE.601988,1,1,3.680000067,1200,2017-07-03T01:40:00.000Z 127 | SHSE.601328,1,1,6.190000057,27700,2017-07-03T01:40:00.000Z 128 | SHSE.601288,1,1,3.519999981,1200,2017-07-03T01:40:00.000Z 129 | SHSE.601818,1,1,4.03000021,42600,2017-07-03T01:40:00.000Z 130 | SHSE.600015,1,1,9.170000076,18700,2017-07-03T01:40:00.000Z 131 | SHSE.601857,1,1,7.739999771,500,2017-07-03T01:40:00.000Z 132 | SHSE.600016,1,1,8.239999771,20800,2017-07-03T01:40:00.000Z 133 | SHSE.601166,1,1,16.87000084,10100,2017-07-03T01:40:00.000Z 134 | SHSE.601328,2,2,6.440000057,27700,2017-08-01T01:40:00.000Z 135 | SHSE.601398,2,2,5.559999943,32700,2017-08-01T01:40:00.000Z 136 | SHSE.601988,2,2,3.960000038,46600,2017-08-01T01:40:00.000Z 137 | SHSE.600871,2,2,3.190000057,51500,2017-08-01T01:40:00.000Z 138 | SHSE.601818,2,2,4.269999981,42600,2017-08-01T01:40:00.000Z 139 | SHSE.601288,2,2,3.74000001,48700,2017-08-01T01:40:00.000Z 140 | SHSE.600015,2,2,10.14999962,18700,2017-08-01T01:40:00.000Z 141 | SHSE.601166,2,2,18.09000015,10100,2017-08-01T01:40:00.000Z 142 | SHSE.601857,2,2,8.18999958,22100,2017-08-01T01:40:00.000Z 143 | SHSE.600016,2,2,8.699999809,20800,2017-08-01T01:40:00.000Z 144 | SHSE.603160,1,1,92.20999908,1900,2017-08-01T01:40:00.000Z 145 | SZSE.002027,1,1,8.779999733,20400,2017-08-01T01:40:00.000Z 146 | SHSE.600570,1,1,42.34999847,4200,2017-08-01T01:40:00.000Z 147 | SZSE.002236,1,1,23.79999924,7500,2017-08-01T01:40:00.000Z 148 | SZSE.002841,1,1,68.27999878,2600,2017-08-01T01:40:00.000Z 149 | SZSE.300033,1,1,49.90000153,3600,2017-08-01T01:40:00.000Z 150 | SZSE.002555,1,1,24.29999924,7400,2017-08-01T01:40:00.000Z 151 | SZSE.002008,1,1,35.45999908,5000,2017-08-01T01:40:00.000Z 152 | SZSE.002466,1,1,68.5,2600,2017-08-01T01:40:00.000Z 153 | SZSE.002174,1,1,30.45000076,5800,2017-08-01T01:40:00.000Z 154 | SZSE.002466,2,2,70.91999817,2600,2017-09-01T01:40:00.000Z 155 | SHSE.600570,2,2,55,4200,2017-09-01T01:40:00.000Z 156 | SZSE.002555,2,2,22.29999924,7400,2017-09-01T01:40:00.000Z 157 | SHSE.603160,2,2,92.80000305,1900,2017-09-01T01:40:00.000Z 158 | SZSE.002236,2,2,25.10000038,7500,2017-09-01T01:40:00.000Z 159 | SZSE.002841,2,2,73.12000275,2600,2017-09-01T01:40:00.000Z 160 | SZSE.002008,2,2,39,5000,2017-09-01T01:40:00.000Z 161 | SZSE.002027,2,2,9.460000038,20400,2017-09-01T01:40:00.000Z 162 | SZSE.300033,2,2,61.63999939,3600,2017-09-01T01:40:00.000Z 163 | SZSE.002174,2,2,25.79999924,5800,2017-09-01T01:40:00.000Z 164 | SHSE.601818,1,1,4.150000095,45700,2017-09-01T01:40:00.000Z 165 | SHSE.600015,1,1,9.489999771,20000,2017-09-01T01:40:00.000Z 166 | SHSE.601328,1,1,6.440000057,29500,2017-09-01T01:40:00.000Z 167 | SHSE.601998,1,1,6.449999809,29400,2017-09-01T01:40:00.000Z 168 | SHSE.600016,1,1,8.340000153,22800,2017-09-01T01:40:00.000Z 169 | SZSE.000157,1,1,4.590000153,41400,2017-09-01T01:40:00.000Z 170 | SHSE.600649,1,1,10.27999973,18500,2017-09-01T01:40:00.000Z 171 | SHSE.601939,1,1,6.840000153,27800,2017-09-01T01:40:00.000Z 172 | SHSE.600000,1,1,12.77999973,14800,2017-09-01T01:40:00.000Z 173 | SHSE.601169,1,1,7.619999886,24900,2017-09-01T01:40:00.000Z 174 | SHSE.601998,2,2,6.369999886,29400,2017-10-09T01:40:00.000Z 175 | SHSE.600000,2,2,13.05000019,14800,2017-10-09T01:40:00.000Z 176 | SHSE.601328,2,2,6.329999924,29500,2017-10-09T01:40:00.000Z 177 | SHSE.601169,2,2,7.510000229,24900,2017-10-09T01:40:00.000Z 178 | SZSE.000157,2,2,4.619999886,41400,2017-10-09T01:40:00.000Z 179 | SHSE.601818,2,2,4.090000153,45700,2017-10-09T01:40:00.000Z 180 | SHSE.600649,2,2,9.899999619,18500,2017-10-09T01:40:00.000Z 181 | SHSE.600015,2,2,9.409999847,20000,2017-10-09T01:40:00.000Z 182 | SHSE.600016,2,2,8.119999886,22800,2017-10-09T01:40:00.000Z 183 | SHSE.601939,2,2,7,27800,2017-10-09T01:40:00.000Z 184 | SHSE.600100,1,1,12.38000011,15200,2017-10-09T01:40:00.000Z 185 | SZSE.002027,1,1,10.31000042,18200,2017-10-09T01:40:00.000Z 186 | SHSE.600436,1,1,58.5,3200,2017-10-09T01:40:00.000Z 187 | SHSE.600009,1,1,38.61000061,4800,2017-10-09T01:40:00.000Z 188 | SZSE.000002,1,1,26.39999962,7100,2017-10-09T01:40:00.000Z 189 | SZSE.002352,1,1,55.18000031,3400,2017-10-09T01:40:00.000Z 190 | SHSE.600522,1,1,14.14999962,13300,2017-10-09T01:40:00.000Z 191 | SHSE.600703,1,1,23.20000076,8100,2017-10-09T01:40:00.000Z 192 | SZSE.000671,1,1,7.349999905,25600,2017-10-09T01:40:00.000Z 193 | SZSE.300072,1,1,31.85000038,5900,2017-10-09T01:40:00.000Z 194 | SHSE.600703,2,2,25.60000038,8100,2017-11-01T01:40:00.000Z 195 | SZSE.002352,2,2,61.09999847,3400,2017-11-01T01:40:00.000Z 196 | SHSE.600009,2,2,42.33000183,4800,2017-11-01T01:40:00.000Z 197 | SHSE.600100,2,2,10.89999962,15200,2017-11-01T01:40:00.000Z 198 | SHSE.600436,2,2,66.98999786,3200,2017-11-01T01:40:00.000Z 199 | SZSE.000002,2,2,29.29999924,7100,2017-11-01T01:40:00.000Z 200 | SHSE.600522,2,2,12.63000011,13300,2017-11-01T01:40:00.000Z 201 | SZSE.300072,2,2,35.40000153,5900,2017-11-01T01:40:00.000Z 202 | SZSE.002027,2,2,11.80000019,18200,2017-11-01T01:40:00.000Z 203 | SZSE.000671,1,1,7.170000076,1900,2017-11-01T01:40:00.000Z 204 | SZSE.000977,1,1,18.10000038,10900,2017-11-01T01:40:00.000Z 205 | SZSE.000415,1,1,6.389999866,30900,2017-11-01T01:40:00.000Z 206 | SZSE.300059,1,1,12.10000038,16300,2017-11-01T01:40:00.000Z 207 | SHSE.600376,1,1,10.77999973,18300,2017-11-01T01:40:00.000Z 208 | SHSE.600547,1,1,29.62999916,6600,2017-11-01T01:40:00.000Z 209 | SHSE.600221,1,1,3.25999999,60600,2017-11-01T01:40:00.000Z 210 | SHSE.601155,1,1,21.61000061,9100,2017-11-01T01:40:00.000Z 211 | SHSE.600153,1,1,11.85000038,16600,2017-11-01T01:40:00.000Z 212 | SZSE.000069,1,1,8.869999886,22200,2017-11-01T01:40:00.000Z 213 | SZSE.000671,2,2,6.760000229,27500,2017-12-01T01:40:00.000Z 214 | SHSE.601155,2,2,25.10000038,9100,2017-12-01T01:40:00.000Z 215 | SZSE.000069,2,2,8.729999542,22200,2017-12-01T01:40:00.000Z 216 | SHSE.600153,2,2,11.47999954,16600,2017-12-01T01:40:00.000Z 217 | SZSE.300059,2,2,14.03999996,16300,2017-12-01T01:40:00.000Z 218 | SHSE.600547,2,2,29.85000038,6600,2017-12-01T01:40:00.000Z 219 | SZSE.000977,2,2,19.20000076,10900,2017-12-01T01:40:00.000Z 220 | SHSE.600221,1,1,3.180000067,2200,2017-12-01T01:40:00.000Z 221 | SHSE.601328,1,1,6.309999943,31600,2017-12-01T01:40:00.000Z 222 | SHSE.601988,1,1,3.920000076,51000,2017-12-01T01:40:00.000Z 223 | SHSE.600015,1,1,9.289999962,21500,2017-12-01T01:40:00.000Z 224 | SHSE.601288,1,1,3.730000019,53600,2017-12-01T01:40:00.000Z 225 | SHSE.600376,1,1,10.23999977,1200,2017-12-01T01:40:00.000Z 226 | SHSE.601818,1,1,4.170000076,47900,2017-12-01T01:40:00.000Z 227 | SZSE.000415,1,1,5.940000057,2700,2017-12-01T01:40:00.000Z 228 | SHSE.601398,1,1,5.869999886,34000,2017-12-01T01:40:00.000Z 229 | SHSE.601169,1,1,7.349999905,27200,2017-12-01T01:40:00.000Z 230 | SHSE.601328,2,2,6.269999981,31600,2018-01-02T01:40:00.000Z 231 | SZSE.000415,2,2,5.940000057,33600,2018-01-02T01:40:00.000Z 232 | SHSE.601169,2,2,7.190000057,27200,2018-01-02T01:40:00.000Z 233 | SHSE.601818,2,2,4.079999924,47900,2018-01-02T01:40:00.000Z 234 | SHSE.601988,2,2,3.970000029,51000,2018-01-02T01:40:00.000Z 235 | SHSE.600221,2,2,3.180000067,62800,2018-01-02T01:40:00.000Z 236 | SHSE.600376,2,2,9.539999962,19500,2018-01-02T01:40:00.000Z 237 | SHSE.601288,2,2,3.829999924,53600,2018-01-02T01:40:00.000Z 238 | SHSE.600015,2,2,9.100000381,21500,2018-01-02T01:40:00.000Z 239 | SHSE.600390,1,1,11.89999962,16700,2018-01-02T01:40:00.000Z 240 | SHSE.600519,1,1,701.5,200,2018-01-02T01:40:00.000Z 241 | SHSE.601398,2,2,6.179999828,1800,2018-01-02T01:40:00.000Z 242 | SHSE.601318,1,1,73.40000153,2700,2018-01-02T01:40:00.000Z 243 | SZSE.000333,1,1,56.56000137,3500,2018-01-02T01:40:00.000Z 244 | SHSE.601012,1,1,35.31999969,5600,2018-01-02T01:40:00.000Z 245 | SZSE.002415,1,1,39.15000153,5000,2018-01-02T01:40:00.000Z 246 | SZSE.002008,1,1,50.18999863,3900,2018-01-02T01:40:00.000Z 247 | SHSE.601857,1,1,8.229999542,24100,2018-01-02T01:40:00.000Z 248 | SZSE.300136,1,1,50.02000046,3900,2018-01-02T01:40:00.000Z 249 | SZSE.000333,2,2,58.95000076,3500,2018-02-01T01:40:00.000Z 250 | SZSE.002415,2,2,39.88999939,5000,2018-02-01T01:40:00.000Z 251 | SHSE.601318,2,2,74.87000275,2700,2018-02-01T01:40:00.000Z 252 | SHSE.600519,2,2,752.2199707,200,2018-02-01T01:40:00.000Z 253 | SHSE.601398,2,2,7.599999905,32200,2018-02-01T01:40:00.000Z 254 | SHSE.600390,2,2,11.10000038,16700,2018-02-01T01:40:00.000Z 255 | SHSE.601857,2,2,8.979999542,24100,2018-02-01T01:40:00.000Z 256 | SZSE.002008,2,2,49.34000015,3900,2018-02-01T01:40:00.000Z 257 | SHSE.601012,2,2,36.38999939,5600,2018-02-01T01:40:00.000Z 258 | SHSE.600074,1,1,2.869999886,69700,2018-02-01T01:40:00.000Z 259 | SHSE.600871,1,1,2.339999914,85900,2018-02-01T01:40:00.000Z 260 | SHSE.600118,1,1,22.36000061,9000,2018-02-01T01:40:00.000Z 261 | SZSE.002841,1,1,61.90999985,3200,2018-02-01T01:40:00.000Z 262 | SZSE.300136,1,1,34.74000168,1900,2018-02-01T01:40:00.000Z 263 | SZSE.000503,1,1,34.97999954,5700,2018-02-01T01:40:00.000Z 264 | SHSE.601118,1,1,5.550000191,36300,2018-02-01T01:40:00.000Z 265 | SZSE.002456,1,1,18.09000015,11100,2018-02-01T01:40:00.000Z 266 | SZSE.000839,1,1,8.06000042,25000,2018-02-01T01:40:00.000Z 267 | SHSE.601899,1,1,5.019999981,40100,2018-02-01T01:40:00.000Z 268 | SZSE.000839,2,2,7.789999962,25000,2018-03-01T01:40:00.000Z 269 | SZSE.000503,2,2,39.29999924,5700,2018-03-01T01:40:00.000Z 270 | SHSE.601118,2,2,5.889999866,36300,2018-03-01T01:40:00.000Z 271 | SHSE.600871,2,2,2.279999971,85900,2018-03-01T01:40:00.000Z 272 | SZSE.002456,2,2,21.64999962,11100,2018-03-01T01:40:00.000Z 273 | SHSE.600118,2,2,20.93000031,9000,2018-03-01T01:40:00.000Z 274 | SHSE.601899,2,2,4.599999905,40100,2018-03-01T01:40:00.000Z 275 | SHSE.600074,2,2,2.380000114,69700,2018-03-01T01:40:00.000Z 276 | SZSE.002027,1,1,14.85000038,13800,2018-03-01T01:40:00.000Z 277 | SZSE.002555,1,1,20.51000023,10000,2018-03-01T01:40:00.000Z 278 | SHSE.603160,1,1,86.90000153,2300,2018-03-01T01:40:00.000Z 279 | SZSE.002460,1,1,72.01999664,2800,2018-03-01T01:40:00.000Z 280 | SZSE.002294,1,1,38.75999832,5300,2018-03-01T01:40:00.000Z 281 | SZSE.300136,2,2,40.25999832,600,2018-03-01T01:40:00.000Z 282 | SZSE.002508,1,1,39.43000031,5200,2018-03-01T01:40:00.000Z 283 | SZSE.000895,1,1,27.25,7600,2018-03-01T01:40:00.000Z 284 | SHSE.600816,1,1,12.78999996,16200,2018-03-01T01:40:00.000Z 285 | SZSE.002841,2,2,72.11000061,300,2018-03-01T01:40:00.000Z 286 | SHSE.600816,2,2,11.60000038,16200,2018-04-02T01:40:00.000Z 287 | SZSE.002294,2,2,42.5,5300,2018-04-02T01:40:00.000Z 288 | SZSE.002555,2,2,18.29999924,10000,2018-04-02T01:40:00.000Z 289 | SHSE.603160,2,2,93,2300,2018-04-02T01:40:00.000Z 290 | SZSE.002460,2,2,71.05000305,2800,2018-04-02T01:40:00.000Z 291 | SZSE.002841,2,2,86.58999634,2900,2018-04-02T01:40:00.000Z 292 | SZSE.300136,2,2,35.79999924,5200,2018-04-02T01:40:00.000Z 293 | SZSE.002027,2,2,12.65999985,13800,2018-04-02T01:40:00.000Z 294 | SZSE.000895,2,2,24.28000069,7600,2018-04-02T01:40:00.000Z 295 | SZSE.002508,2,2,35.22000122,5200,2018-04-02T01:40:00.000Z 296 | SHSE.600871,1,1,2.019999981,98900,2018-04-02T01:40:00.000Z 297 | SHSE.600406,1,1,16.70000076,11900,2018-04-02T01:40:00.000Z 298 | SZSE.000961,1,1,7.03000021,28400,2018-04-02T01:40:00.000Z 299 | SZSE.002044,1,1,26.37999916,7500,2018-04-02T01:40:00.000Z 300 | SZSE.000503,1,1,43.5,4600,2018-04-02T01:40:00.000Z 301 | SZSE.300015,1,1,40,5000,2018-04-02T01:40:00.000Z 302 | SZSE.002558,1,1,30.79999924,6500,2018-04-02T01:40:00.000Z 303 | SHSE.601212,1,1,6.429999828,31200,2018-04-02T01:40:00.000Z 304 | SZSE.002310,1,1,20.40999985,9800,2018-04-02T01:40:00.000Z 305 | SZSE.002074,1,1,21.88999939,9100,2018-04-02T01:40:00.000Z 306 | SZSE.000961,2,2,7.400000095,28400,2018-05-02T01:40:00.000Z 307 | SZSE.002074,2,2,16.69000053,9100,2018-05-02T01:40:00.000Z 308 | SZSE.002310,2,2,19.29000092,9800,2018-05-02T01:40:00.000Z 309 | SZSE.002044,2,2,28.65999985,7500,2018-05-02T01:40:00.000Z 310 | SHSE.601212,2,2,5.440000057,31200,2018-05-02T01:40:00.000Z 311 | SZSE.000503,2,2,40.00999832,4600,2018-05-02T01:40:00.000Z 312 | SHSE.600871,2,2,2,98900,2018-05-02T01:40:00.000Z 313 | SZSE.002558,2,2,25.07999992,6500,2018-05-02T01:40:00.000Z 314 | SHSE.600406,2,2,17.59000015,11900,2018-05-02T01:40:00.000Z 315 | SZSE.300015,2,2,46.5,5000,2018-05-02T01:40:00.000Z 316 | SZSE.300251,1,1,11.5,16700,2018-05-02T01:40:00.000Z 317 | SZSE.002602,1,1,34.90000153,5500,2018-05-02T01:40:00.000Z 318 | SHSE.600157,1,1,2.140000105,90200,2018-05-02T01:40:00.000Z 319 | SZSE.002304,1,1,116.4000015,1600,2018-05-02T01:40:00.000Z 320 | SZSE.000423,1,1,51.52000046,3700,2018-05-02T01:40:00.000Z 321 | SZSE.000858,1,1,71.29000092,2700,2018-05-02T01:40:00.000Z 322 | SHSE.600085,1,1,35.27999878,5400,2018-05-02T01:40:00.000Z 323 | SZSE.000157,1,1,4.190000057,46100,2018-05-02T01:40:00.000Z 324 | SHSE.600741,1,1,24.10000038,8000,2018-05-02T01:40:00.000Z 325 | SZSE.002468,1,1,23.51000023,8200,2018-05-02T01:40:00.000Z 326 | SZSE.002602,2,2,34.88000107,5500,2018-06-01T01:40:00.000Z 327 | SZSE.000423,2,2,59.38999939,3700,2018-06-01T01:40:00.000Z 328 | SHSE.600157,2,2,1.919999957,90200,2018-06-01T01:40:00.000Z 329 | SHSE.600741,2,2,24.31999969,8000,2018-06-01T01:40:00.000Z 330 | SZSE.002468,2,2,23.32999992,8200,2018-06-01T01:40:00.000Z 331 | SHSE.600085,2,2,38.88000107,5400,2018-06-01T01:40:00.000Z 332 | SZSE.000157,2,2,4.199999809,46100,2018-06-01T01:40:00.000Z 333 | SZSE.300251,1,1,10,3100,2018-06-01T01:40:00.000Z 334 | SHSE.600519,1,1,752.3499756,200,2018-06-01T01:40:00.000Z 335 | SZSE.002304,2,2,140.6000061,100,2018-06-01T01:40:00.000Z 336 | SZSE.000858,2,2,78.87999725,100,2018-06-01T01:40:00.000Z 337 | SZSE.002027,1,1,12.32999992,16100,2018-06-01T01:40:00.000Z 338 | SZSE.300122,1,1,42.09999847,4700,2018-06-01T01:40:00.000Z 339 | SZSE.002294,1,1,41.84999847,4700,2018-06-01T01:40:00.000Z 340 | SHSE.601888,1,1,67.80000305,2900,2018-06-01T01:40:00.000Z 341 | SHSE.600276,1,1,74.58999634,2600,2018-06-01T01:40:00.000Z 342 | SZSE.000568,1,1,67.91000366,2900,2018-06-01T01:40:00.000Z 343 | -------------------------------------------------------------------------------- /logs/2021-09-30-09-00-03/report/stock_account.csv: -------------------------------------------------------------------------------- 1 | date,cash,transaction_cost,market_value,total_value 2 | 2018-01-02,11431.1771,790.2229,987778.6,999209.7771 3 | 2018-01-03,11431.1771,0.0,997119.1,1008550.2771 4 | 2018-01-04,11431.1771,0.0,1005380.06,1016811.2371 5 | 2018-01-05,11431.1771,0.0,1016315.26,1027746.4371 6 | 2018-01-08,6082.0671,93.1636,1022835.04,1028917.1071 7 | 2018-01-09,6082.0671,0.0,1015986.22,1022068.2871 8 | 2018-01-10,6082.0671,0.0,1011205.54,1017287.6071 9 | 2018-01-11,6082.0671,0.0,1014669.95,1020752.0171 10 | 2018-01-12,6082.0671,0.0,1012640.51,1018722.5771 11 | 2018-01-15,4149.076,185.1989,999453.41,1003602.486 12 | 2018-01-16,4149.076,0.0,999989.72,1004138.796 13 | 2018-01-17,4149.076,0.0,1001138.71,1005287.786 14 | 2018-01-18,4149.076,0.0,1006099.45,1010248.526 15 | 2018-01-19,4149.076,0.0,1011826.48,1015975.556 16 | 2018-01-22,6969.8795,110.2604,1021353.73,1028323.6095 17 | 2018-01-23,6969.8795,0.0,1027110.36,1034080.2395 18 | 2018-01-24,6969.8795,0.0,1037156.47,1044126.3495 19 | 2018-01-25,6969.8795,0.0,1048767.07,1055736.9495 20 | 2018-01-26,6969.8795,0.0,1046504.68,1053474.5595 21 | 2018-01-29,8244.7164,226.0248,1031722.21,1039966.9264 22 | 2018-01-30,8244.7164,0.0,1027214.82,1035459.5364 23 | 2018-01-31,8244.7164,0.0,1019894.02,1028138.7364 24 | 2018-02-01,8244.7164,0.0,1004187.72,1012432.4364 25 | 2018-02-02,8244.7164,0.0,1006013.65,1014258.3664 26 | 2018-02-05,5407.4996,101.3197,1008969.52,1014377.0196 27 | 2018-02-06,5407.4996,0.0,996773.96,1002181.4596 28 | 2018-02-07,5407.4996,0.0,995688.55,1001096.0496 29 | 2018-02-08,5407.4996,0.0,999970.12,1005377.6196 30 | 2018-02-09,5407.4996,0.0,985397.04,990804.5396 31 | 2018-02-12,2089.4171,185.9684,1003953.69,1006043.1071 32 | 2018-02-13,2089.4171,0.0,1008363.38,1010452.7971 33 | 2018-02-14,2089.4171,0.0,1009630.19,1011719.6071 34 | 2018-02-22,4965.2396,131.2428,1013473.96,1018439.1996 35 | 2018-02-23,4965.2396,0.0,1011918.03,1016883.2696 36 | 2018-02-26,4924.0537,92.9776,1022011.56,1026935.6137 37 | 2018-02-27,4924.0537,0.0,1021003.29,1025927.3437 38 | 2018-02-28,4924.0537,0.0,1019088.86,1024012.9137 39 | 2018-03-01,4924.0537,0.0,1023735.52,1028659.5737 40 | 2018-03-02,4924.0537,0.0,1021228.26,1026152.3137 41 | 2018-03-05,5664.6249,102.7681,1020404.75,1026069.3749 42 | 2018-03-06,5664.6249,0.0,1018928.2,1024592.8249 43 | 2018-03-07,5664.6249,0.0,1018213.7,1023878.3249 44 | 2018-03-08,5664.6249,0.0,1019315.68,1024980.3049 45 | 2018-03-09,5664.6249,0.0,1025480.54,1031145.1649 46 | 2018-03-12,8664.1282,99.5592,1028622.59,1037286.7182 47 | 2018-03-13,8664.1282,0.0,1032598.75,1041262.8782 48 | 2018-03-14,8664.1282,0.0,1027684.7,1036348.8282 49 | 2018-03-15,8664.1282,0.0,1024860.61,1033524.7382 50 | 2018-03-16,8664.1282,0.0,1026497.78,1035161.9082 51 | 2018-03-19,7892.2074,158.0481,1028272.24,1036164.4474 52 | 2018-03-20,7892.2074,0.0,1026605.3,1034497.5074 53 | 2018-03-21,7892.2074,0.0,1026303.12,1034195.3274 54 | 2018-03-22,7892.2074,0.0,1026237.72,1034129.9274 55 | 2018-03-23,7892.2074,0.0,1012518.12,1020410.3274 56 | 2018-03-26,6818.3707,195.1054,1019526.96,1026345.3307 57 | 2018-03-27,6818.3707,0.0,1028413.1,1035231.4707 58 | 2018-03-28,6818.3707,0.0,1025382.96,1032201.3307 59 | 2018-03-29,6818.3707,0.0,1024260.52,1031078.8907 60 | 2018-03-30,6818.3707,0.0,1030783.88,1037602.2507 61 | 2018-04-02,8380.1096,155.2499,1036224.91,1044605.0196 62 | 2018-04-03,8380.1096,0.0,1034537.33,1042917.4396 63 | 2018-04-04,8380.1096,0.0,1036317.13,1044697.2396 64 | 2018-04-09,8863.3959,136.3335,1037221.82,1046085.2159 65 | 2018-04-10,8863.3959,0.0,1033364.17,1042227.5659 66 | 2018-04-11,8863.3959,0.0,1034689.89,1043553.2859 67 | 2018-04-12,8863.3959,0.0,1031877.64,1040741.0359 68 | 2018-04-13,8863.3959,0.0,1031034.66,1039898.0559 69 | 2018-04-16,6923.9575,226.3921,1029144.91,1036068.8675 70 | 2018-04-17,6923.9575,0.0,1026437.04,1033360.9975 71 | 2018-04-18,6923.9575,0.0,1031428.79,1038352.7475 72 | 2018-04-19,6923.9575,0.0,1032151.73,1039075.6875 73 | 2018-04-20,6923.9575,0.0,1027036.28,1033960.2375 74 | 2018-04-23,5291.8275,226.907,1014024.09,1019315.9175 75 | 2018-04-24,5291.8275,0.0,1026049.42,1031341.2475 76 | 2018-04-25,5291.8275,0.0,1023958.98,1029250.8075 77 | 2018-04-26,5291.8275,0.0,1021917.19,1027209.0175 78 | 2018-04-27,5291.8275,0.0,1020728.98,1026020.8075 79 | 2018-05-02,9023.9712,98.3544,1014714.6,1023738.5712 80 | 2018-05-03,9023.9712,0.0,1020084.44,1029108.4112 81 | 2018-05-04,9023.9712,0.0,1022691.33,1031715.3012 82 | 2018-05-07,8977.5322,185.1802,1030232.88,1039210.4122 83 | 2018-05-08,8977.5322,0.0,1033855.81,1042833.3422 84 | 2018-05-09,8977.5322,0.0,1034710.87,1043688.4022 85 | 2018-05-10,8977.5322,0.0,1038970.89,1047948.4222 86 | 2018-05-11,8977.5322,0.0,1032032.74,1041010.2722 87 | 2018-05-14,5936.9424,145.151,1029724.62,1035661.5624 88 | 2018-05-15,5936.9424,0.0,1037425.26,1043362.2024 89 | 2018-05-16,5936.9424,0.0,1034013.34,1039950.2824 90 | 2018-05-17,5936.9424,0.0,1034802.62,1040739.5624 91 | 2018-05-18,5936.9424,0.0,1034482.44,1040419.3824 92 | 2018-05-21,3467.2224,156.6441,1041150.59,1044617.8124 93 | 2018-05-22,3467.2224,0.0,1044290.69,1047757.9124 94 | 2018-05-23,3467.2224,0.0,1039687.42,1043154.6424 95 | 2018-05-24,3467.2224,0.0,1039406.42,1042873.6424 96 | 2018-05-25,3467.2224,0.0,1033601.8,1037069.0224 97 | 2018-05-28,2049.9374,96.645,1025655.54,1027705.4774 98 | 2018-05-29,2049.9374,0.0,1018391.86,1020441.7974 99 | 2018-05-30,2049.9374,0.0,1002369.87,1004419.8074 100 | 2018-05-31,2049.9374,0.0,1007335.16,1009385.0974 101 | 2018-06-01,2049.9374,0.0,1006730.56,1008780.4974 102 | 2018-06-04,4581.119,180.1912,997230.78,1001811.899 103 | 2018-06-05,4581.119,0.0,1008687.93,1013269.049 104 | 2018-06-06,4581.119,0.0,1013067.91,1017649.029 105 | 2018-06-07,4581.119,0.0,1017645.57,1022226.689 106 | 2018-06-08,4581.119,0.0,1011717.61,1016298.729 107 | 2018-06-11,4936.5542,123.726,1008989.87,1013926.4242 108 | 2018-06-12,4936.5542,0.0,1012195.22,1017131.7742 109 | 2018-06-13,4936.5542,0.0,1008154.86,1013091.4142 110 | 2018-06-14,4936.5542,0.0,1004322.93,1009259.4842 111 | 2018-06-15,4936.5542,0.0,995727.47,1000664.0242 112 | 2018-06-19,2957.0756,214.6524,961446.17,964403.2456 113 | 2018-06-20,2957.0756,0.0,964473.01,967430.0856 114 | 2018-06-21,2957.0756,0.0,957305.29,960262.3656 115 | 2018-06-22,2957.0756,0.0,958159.06,961116.1356 116 | 2018-06-25,2194.396,169.6573,961544.04,963738.436 117 | 2018-06-26,2194.396,0.0,964507.57,966701.966 118 | 2018-06-27,2194.396,0.0,962498.4,964692.796 119 | 2018-06-28,2194.396,0.0,960946.56,963140.956 120 | 2018-06-29,2194.396,0.0,975645.91,977840.306 121 | 2018-07-02,4611.8137,149.2869,968150.96,972762.7737 122 | 2018-07-03,4611.8137,0.0,974063.45,978675.2637 123 | 2018-07-04,4611.8137,0.0,971111.53,975723.3437 124 | 2018-07-05,4611.8137,0.0,966282.02,970893.8337 125 | 2018-07-06,4611.8137,0.0,967769.08,972380.8937 126 | 2018-07-09,3521.7217,92.0398,978723.86,982245.5817 127 | 2018-07-10,3521.7217,0.0,979367.42,982889.1417 128 | 2018-07-11,3521.7217,0.0,972692.37,976214.0917 129 | 2018-07-12,3521.7217,0.0,988490.13,992011.8517 130 | 2018-07-13,3521.7217,0.0,989308.12,992829.8417 131 | 2018-07-16,2557.1472,138.5486,988621.37,991178.5172 132 | 2018-07-17,2557.1472,0.0,995729.21,998286.3572 133 | 2018-07-18,2557.1472,0.0,999297.45,1001854.5972 134 | 2018-07-19,2557.1472,0.0,1002544.65,1005101.7972 135 | 2018-07-20,2557.1472,0.0,1008613.32,1011170.4672 136 | 2018-07-23,2385.5677,146.9504,1010498.24,1012883.8077 137 | 2018-07-24,2385.5677,0.0,1013287.09,1015672.6577 138 | 2018-07-25,2385.5677,0.0,1013180.75,1015566.3177 139 | 2018-07-26,2385.5677,0.0,1007527.92,1009913.4877 140 | 2018-07-27,2385.5677,0.0,1003371.49,1005757.0577 141 | 2018-07-30,149.9241,191.0602,999907.95,1000057.8741 142 | 2018-07-31,149.9241,0.0,1000604.57,1000754.4941 143 | 2018-08-01,149.9241,0.0,996869.21,997019.1341 144 | 2018-08-02,149.9241,0.0,987319.11,987469.0341 145 | 2018-08-03,149.9241,0.0,987699.89,987849.8141 146 | 2018-08-06,627.33,213.0823,979580.32,980207.65 147 | 2018-08-07,627.33,0.0,988693.47,989320.8 148 | 2018-08-08,627.33,0.0,981832.37,982459.7 149 | 2018-08-09,627.33,0.0,992279.37,992906.7 150 | 2018-08-10,627.33,0.0,998538.5,999165.83 151 | 2018-08-13,7217.1828,261.1406,993604.44,1000821.6228 152 | 2018-08-14,7217.1828,0.0,987695.51,994912.6928 153 | 2018-08-15,7217.1828,0.0,980814.39,988031.5728 154 | 2018-08-16,7217.1828,0.0,975796.95,983014.1328 155 | 2018-08-17,7217.1828,0.0,972444.33,979661.5128 156 | 2018-08-20,5846.8324,252.099,972141.24,977988.0724 157 | 2018-08-21,5846.8324,0.0,978850.3,984697.1324 158 | 2018-08-22,5846.8324,0.0,977574.61,983421.4424 159 | 2018-08-23,5846.8324,0.0,980323.11,986169.9424 160 | 2018-08-24,5846.8324,0.0,982064.57,987911.4024 161 | 2018-08-27,5569.0554,211.8438,988283.24,993852.2954 162 | 2018-08-28,5569.0554,0.0,994291.47,999860.5254 163 | 2018-08-29,5569.0554,0.0,990273.93,995842.9854 164 | 2018-08-30,5569.0554,0.0,985345.07,990914.1254 165 | 2018-08-31,5569.0554,0.0,983083.21,988652.2654 166 | 2018-09-03,5140.7829,177.4246,980165.25,985306.0329 167 | 2018-09-04,5140.7829,0.0,983802.24,988943.0229 168 | 2018-09-05,5140.7829,0.0,979708.86,984849.6429 169 | 2018-09-06,5140.7829,0.0,978922.6,984063.3829 170 | 2018-09-07,5140.7829,0.0,979251.04,984391.8229 171 | 2018-09-10,3396.1163,165.2263,975256.34,978652.4563 172 | 2018-09-11,3396.1163,0.0,974351.19,977747.3063 173 | 2018-09-12,3396.1163,0.0,975010.74,978406.8563 174 | 2018-09-13,3396.1163,0.0,977726.89,981123.0063 175 | 2018-09-14,3396.1163,0.0,978376.99,981773.1063 176 | 2018-09-17,532.2132,165.414,974087.15,974619.3632 177 | 2018-09-18,532.2132,0.0,977350.85,977883.0632 178 | 2018-09-19,532.2132,0.0,981114.31,981646.5232 179 | 2018-09-20,532.2132,0.0,982171.6,982703.8132 180 | 2018-09-21,532.2132,0.0,988054.34,988586.5532 181 | 2018-09-25,1591.473,83.7895,985867.26,987458.733 182 | 2018-09-26,1591.473,0.0,987695.09,989286.563 183 | 2018-09-27,1591.473,0.0,979092.44,980683.913 184 | 2018-09-28,1591.473,0.0,981805.51,983396.983 185 | 2018-10-08,1737.8375,125.031,969768.81,971506.6475 186 | 2018-10-09,1737.8375,0.0,969870.1,971607.9375 187 | 2018-10-10,1737.8375,0.0,969509.47,971247.3075 188 | 2018-10-11,1737.8375,0.0,944006.95,945744.7875 189 | 2018-10-12,1737.8375,0.0,946870.8,948608.6375 190 | 2018-10-15,1070.042,183.365,943852.76,944922.802 191 | 2018-10-16,1070.042,0.0,937436.61,938506.652 192 | 2018-10-17,1070.042,0.0,935213.13,936283.172 193 | 2018-10-18,1070.042,0.0,925675.31,926745.352 194 | 2018-10-19,1070.042,0.0,932323.1,933393.142 195 | 2018-10-22,423.548,177.3519,947449.89,947873.438 196 | 2018-10-23,423.548,0.0,945321.22,945744.768 197 | 2018-10-24,423.548,0.0,949030.05,949453.598 198 | 2018-10-25,423.548,0.0,949387.59,949811.138 199 | 2018-10-26,423.548,0.0,952758.05,953181.598 200 | 2018-10-29,2186.7116,166.9886,946706.4,948893.1116 201 | 2018-10-30,2186.7116,0.0,949683.27,951869.9816 202 | 2018-10-31,2186.7116,0.0,953660.43,955847.1416 203 | 2018-11-01,2186.7116,0.0,958387.69,960574.4016 204 | 2018-11-02,2186.7116,0.0,976701.32,978888.0316 205 | 2018-11-05,2125.4489,123.6948,979281.58,981407.0289 206 | 2018-11-06,2125.4489,0.0,975216.17,977341.6189 207 | 2018-11-07,2125.4489,0.0,976237.84,978363.2889 208 | 2018-11-08,2125.4489,0.0,974041.52,976166.9689 209 | 2018-11-09,2125.4489,0.0,972062.44,974187.8889 210 | 2018-11-12,1069.4321,89.0628,981508.17,982577.6021 211 | 2018-11-13,1069.4321,0.0,989319.59,990389.0221 212 | 2018-11-14,1069.4321,0.0,990155.56,991224.9921 213 | 2018-11-15,1069.4321,0.0,1001443.59,1002513.0221 214 | 2018-11-16,1069.4321,0.0,1006330.49,1007399.9221 215 | 2018-11-19,383.6318,132.7676,1008968.17,1009351.8018 216 | 2018-11-20,383.6318,0.0,994403.56,994787.1918 217 | 2018-11-21,383.6318,0.0,994397.17,994780.8018 218 | 2018-11-22,383.6318,0.0,996438.59,996822.2218 219 | 2018-11-23,383.6318,0.0,984068.91,984452.5418 220 | 2018-11-26,812.7236,202.0422,983730.04,984542.7636 221 | 2018-11-27,812.7236,0.0,986390.21,987202.9336 222 | 2018-11-28,812.7236,0.0,994195.57,995008.2936 223 | 2018-11-29,812.7236,0.0,986458.81,987271.5336 224 | 2018-11-30,812.7236,0.0,986889.36,987702.0836 225 | 2018-12-03,4680.1483,198.8994,998677.81,1003357.9583 226 | 2018-12-04,4680.1483,0.0,1001150.62,1005830.7683 227 | 2018-12-05,4680.1483,0.0,999253.74,1003933.8883 228 | 2018-12-06,4680.1483,0.0,992602.68,997282.8283 229 | 2018-12-07,4680.1483,0.0,995854.12,1000534.2683 230 | 2018-12-10,5446.1897,146.5995,988536.78,993982.9697 231 | 2018-12-11,5446.1897,0.0,988976.15,994422.3397 232 | 2018-12-12,5446.1897,0.0,988139.51,993585.6997 233 | 2018-12-13,5446.1897,0.0,994273.43,999719.6197 234 | 2018-12-14,5446.1897,0.0,986613.55,992059.7397 235 | 2018-12-17,387.4918,193.1639,989822.53,990210.0218 236 | 2018-12-18,387.4918,0.0,984347.5,984734.9918 237 | 2018-12-19,387.4918,0.0,982636.84,983024.3318 238 | 2018-12-20,387.4918,0.0,981116.34,981503.8318 239 | 2018-12-21,387.4918,0.0,978133.0,978520.4918 240 | 2018-12-24,5191.4346,139.2802,976740.51,981931.9446 241 | 2018-12-25,5191.4346,0.0,972699.7,977891.1346 242 | 2018-12-26,5191.4346,0.0,971517.5,976708.9346 243 | 2018-12-27,5191.4346,0.0,970847.78,976039.2146 244 | 2018-12-28,5191.4346,0.0,969960.47,975151.9046 245 | 2019-01-02,6352.9239,216.5708,969452.14,975805.0639 246 | 2019-01-03,6352.9239,0.0,970456.45,976809.3739 247 | 2019-01-04,6352.9239,0.0,981669.41,988022.3339 248 | 2019-01-07,5389.4982,212.9564,1008593.2,1013982.6982 249 | 2019-01-08,5389.4982,0.0,1009694.27,1015083.7682 250 | 2019-01-09,5389.4982,0.0,1021900.78,1027290.2782 251 | 2019-01-10,5389.4982,0.0,1024134.63,1029524.1282 252 | 2019-01-11,5389.4982,0.0,1032726.35,1038115.8482 253 | 2019-01-14,7119.7169,249.8081,1031373.55,1038493.2669 254 | 2019-01-15,7119.7169,0.0,1040902.95,1048022.6669 255 | 2019-01-16,7119.7169,0.0,1045288.53,1052408.2469 256 | 2019-01-17,7119.7169,0.0,1039820.41,1046940.1269 257 | 2019-01-18,7119.7169,0.0,1037147.95,1044267.6669 258 | 2019-01-21,9038.1184,267.8813,1037748.12,1046786.2384 259 | 2019-01-22,9038.1184,0.0,1033563.06,1042601.1784 260 | 2019-01-23,9038.1184,0.0,1034902.17,1043940.2884 261 | 2019-01-24,9038.1184,0.0,1039860.29,1048898.4084 262 | 2019-01-25,9038.1184,0.0,1044434.52,1053472.6384 263 | 2019-01-28,7567.68,233.3995,1038093.46,1045661.14 264 | 2019-01-29,7567.68,0.0,1028115.11,1035682.79 265 | 2019-01-30,7567.68,0.0,1025114.06,1032681.74 266 | 2019-01-31,7567.68,0.0,1022193.31,1029760.99 267 | 2019-02-01,7567.68,0.0,1037653.19,1045220.87 268 | 2019-02-11,7847.811,229.013,1047790.77,1055638.581 269 | 2019-02-12,7847.811,0.0,1053720.09,1061567.901 270 | 2019-02-13,7847.811,0.0,1065267.61,1073115.421 271 | 2019-02-14,7847.811,0.0,1073775.7,1081623.511 272 | 2019-02-15,7847.811,0.0,1076339.86,1084187.671 273 | 2019-02-18,6585.377,224.3341,1105898.47,1112483.847 274 | 2019-02-19,6585.377,0.0,1108453.57,1115038.947 275 | 2019-02-20,6585.377,0.0,1119726.64,1126312.017 276 | 2019-02-21,6585.377,0.0,1121281.95,1127867.327 277 | 2019-02-22,6585.377,0.0,1131331.63,1137917.007 278 | 2019-02-25,4535.5033,174.2175,1157135.31,1161670.8133 279 | 2019-02-26,4535.5033,0.0,1166425.59,1170961.0933 280 | 2019-02-27,4535.5033,0.0,1166008.82,1170544.3233 281 | 2019-02-28,4535.5033,0.0,1169069.49,1173604.9933 282 | 2019-03-01,4535.5033,0.0,1176900.84,1181436.3433 283 | 2019-03-04,9805.087,230.9229,1184114.45,1193919.537 284 | 2019-03-05,9805.087,0.0,1215192.92,1224998.007 285 | 2019-03-06,9805.087,0.0,1257481.01,1267286.097 286 | 2019-03-07,9805.087,0.0,1279267.0,1289072.087 287 | 2019-03-08,9805.087,0.0,1257402.19,1267207.277 288 | 2019-03-11,6739.0495,477.082,1295899.79,1302638.8395 289 | 2019-03-12,6739.0495,0.0,1312432.16,1319171.2095 290 | 2019-03-13,6739.0495,0.0,1292356.62,1299095.6695 291 | 2019-03-14,6739.0495,0.0,1263602.24,1270341.2895 292 | 2019-03-15,6739.0495,0.0,1278630.48,1285369.5295 293 | 2019-03-18,5551.1131,187.4613,1306077.62,1311628.7331 294 | 2019-03-19,5551.1131,0.0,1329554.56,1335105.6731 295 | 2019-03-20,5551.1131,0.0,1331346.87,1336897.9831 296 | 2019-03-21,5551.1131,0.0,1346691.57,1352242.6831 297 | 2019-03-22,5551.1131,0.0,1337703.13,1343254.2431 298 | 2019-03-25,4826.8963,388.4669,1321941.93,1326768.8263 299 | 2019-03-26,4826.8963,0.0,1287228.33,1292055.2263 300 | 2019-03-27,4826.8963,0.0,1286937.78,1291764.6763 301 | 2019-03-28,4826.8963,0.0,1285645.2,1290472.0963 302 | 2019-03-29,4826.8963,0.0,1305077.47,1309904.3663 303 | 2019-04-01,6739.9242,238.2736,1330034.27,1336774.1942 304 | 2019-04-02,6739.9242,0.0,1338482.34,1345222.2642 305 | 2019-04-03,6739.9242,0.0,1347036.8,1353776.7242 306 | 2019-04-04,6739.9242,0.0,1365464.94,1372204.8642 307 | 2019-04-08,8517.0827,278.7332,1370778.76,1379295.8427 308 | 2019-04-09,8517.0827,0.0,1370966.36,1379483.4427 309 | 2019-04-10,8517.0827,0.0,1367665.5,1376182.5827 310 | 2019-04-11,8517.0827,0.0,1350858.85,1359375.9327 311 | 2019-04-12,8517.0827,0.0,1358437.75,1366954.8327 312 | 2019-04-15,8903.0824,324.6839,1340402.76,1349305.8424 313 | 2019-04-16,8903.0824,0.0,1345813.71,1354716.7924 314 | 2019-04-17,8903.0824,0.0,1352568.78,1361471.8624 315 | 2019-04-18,8903.0824,0.0,1360758.25,1369661.3324 316 | 2019-04-19,8903.0824,0.0,1357679.35,1366582.4324 317 | 2019-04-22,10457.0684,279.2723,1369551.32,1380008.3884 318 | 2019-04-23,10457.0684,0.0,1350357.56,1360814.6284 319 | 2019-04-24,10457.0684,0.0,1344044.53,1354501.5984 320 | 2019-04-25,10457.0684,0.0,1348573.92,1359030.9884 321 | 2019-04-26,10457.0684,0.0,1352028.82,1362485.8884 322 | 2019-04-29,10709.8588,572.187,1321357.83,1332067.6888 323 | 2019-04-30,10709.8588,0.0,1329964.87,1340674.7288 324 | 2019-05-06,5424.0423,431.4458,1274975.24,1280399.2823 325 | 2019-05-07,5424.0423,0.0,1291214.44,1296638.4823 326 | 2019-05-08,5424.0423,0.0,1307688.42,1313112.4623 327 | 2019-05-09,5424.0423,0.0,1305370.1,1310794.1423 328 | 2019-05-10,5424.0423,0.0,1334546.52,1339970.5623 329 | 2019-05-13,6425.1671,524.9902,1329686.64,1336111.8071 330 | 2019-05-14,6425.1671,0.0,1334758.31,1341183.4771 331 | 2019-05-15,6425.1671,0.0,1354640.88,1361066.0471 332 | 2019-05-16,6425.1671,0.0,1359862.2,1366287.3671 333 | 2019-05-17,6425.1671,0.0,1331493.06,1337918.2271 334 | 2019-05-20,6048.1966,489.7764,1321177.23,1327225.4266 335 | 2019-05-21,6048.1966,0.0,1329957.78,1336005.9766 336 | 2019-05-22,6048.1966,0.0,1329627.07,1335675.2666 337 | 2019-05-23,6048.1966,0.0,1321030.31,1327078.5066 338 | 2019-05-24,6048.1966,0.0,1321104.89,1327153.0866 339 | 2019-05-27,6298.7914,327.6678,1327109.65,1333408.4414 340 | 2019-05-28,6298.7914,0.0,1326767.05,1333065.8414 341 | 2019-05-29,6298.7914,0.0,1326744.25,1333043.0414 342 | 2019-05-30,6298.7914,0.0,1320589.98,1326888.7714 343 | 2019-05-31,6298.7914,0.0,1316883.16,1323181.9514 344 | 2019-06-03,1051.9434,237.1177,1313334.52,1314386.4634 345 | 2019-06-04,1051.9434,0.0,1300285.51,1301337.4534 346 | 2019-06-05,1051.9434,0.0,1300972.89,1302024.8334 347 | 2019-06-06,1051.9434,0.0,1287904.52,1288956.4634 348 | 2019-06-10,229.8682,412.068,1292329.34,1292559.2082 349 | 2019-06-11,229.8682,0.0,1323422.69,1323652.5582 350 | 2019-06-12,229.8682,0.0,1317962.85,1318192.7182 351 | 2019-06-13,229.8682,0.0,1321435.17,1321665.0382 352 | 2019-06-14,229.8682,0.0,1311261.83,1311491.6982 353 | 2019-06-17,415.9894,520.0641,1309211.07,1309627.0594 354 | 2019-06-18,415.9894,0.0,1305900.19,1306316.1794 355 | 2019-06-19,415.9894,0.0,1314812.28,1315228.2694 356 | 2019-06-20,415.9894,0.0,1334869.64,1335285.6294 357 | 2019-06-21,415.9894,0.0,1347617.14,1348033.1294 358 | 2019-06-24,10339.9148,458.825,1336094.43,1346434.3448 359 | 2019-06-25,10339.9148,0.0,1336311.68,1346651.5948 360 | 2019-06-26,10339.9148,0.0,1343049.67,1353389.5848 361 | 2019-06-27,10339.9148,0.0,1348472.27,1358812.1848 362 | 2019-06-28,10339.9148,0.0,1359699.94,1370039.8548 363 | 2019-07-01,12591.6509,354.7398,1401179.18,1413770.8309 364 | 2019-07-02,12591.6509,0.0,1407305.75,1419897.4009 365 | 2019-07-03,12591.6509,0.0,1410784.64,1423376.2909 366 | 2019-07-04,12591.6509,0.0,1416569.79,1429161.4409 367 | 2019-07-05,12591.6509,0.0,1406933.22,1419524.8709 368 | 2019-07-08,8839.7903,380.611,1396675.81,1405515.6003 369 | 2019-07-09,8839.7903,0.0,1397847.55,1406687.3403 370 | 2019-07-10,8839.7903,0.0,1397288.27,1406128.0603 371 | 2019-07-11,8839.7903,0.0,1397720.45,1406560.2403 372 | 2019-07-12,8839.7903,0.0,1400315.11,1409154.9003 373 | 2019-07-15,4470.3711,366.4811,1409375.02,1413845.3911 374 | 2019-07-16,4470.3711,0.0,1410292.39,1414762.7611 375 | 2019-07-17,4470.3711,0.0,1416943.69,1421414.0611 376 | 2019-07-18,4470.3711,0.0,1407844.83,1412315.2011 377 | 2019-07-19,4470.3711,0.0,1406316.9,1410787.2711 378 | 2019-07-22,861.9111,297.9978,1389399.26,1390261.1711 379 | 2019-07-23,861.9111,0.0,1396838.47,1397700.3811 380 | 2019-07-24,861.9111,0.0,1400510.48,1401372.3911 381 | 2019-07-25,861.9111,0.0,1401984.95,1402846.8611 382 | 2019-07-26,861.9111,0.0,1406759.79,1407621.7011 383 | 2019-07-29,2546.8941,245.308,1409119.01,1411665.9041 384 | 2019-07-30,2546.8941,0.0,1419167.88,1421714.7741 385 | 2019-07-31,2546.8941,0.0,1418740.37,1421287.2641 386 | 2019-08-01,2546.8941,0.0,1415325.16,1417872.0541 387 | 2019-08-02,2546.8941,0.0,1409826.69,1412373.5841 388 | 2019-08-05,5084.6328,308.1951,1398690.6,1403775.2328 389 | 2019-08-06,5084.6328,0.0,1386464.8,1391549.4328 390 | 2019-08-07,5084.6328,0.0,1395774.02,1400858.6528 391 | 2019-08-08,5084.6328,0.0,1397710.52,1402795.1528 392 | 2019-08-09,5084.6328,0.0,1398305.1,1403389.7328 393 | 2019-08-12,7018.6013,290.1864,1399322.11,1406340.7113 394 | 2019-08-13,7018.6013,0.0,1398908.94,1405927.5413 395 | 2019-08-14,7018.6013,0.0,1401833.98,1408852.5813 396 | 2019-08-15,7018.6013,0.0,1401637.43,1408656.0313 397 | 2019-08-16,7018.6013,0.0,1410564.84,1417583.4413 398 | 2019-08-19,4863.6696,283.6426,1432655.55,1437519.2196 399 | 2019-08-20,4863.6696,0.0,1441970.8,1446834.4696 400 | 2019-08-21,4863.6696,0.0,1440119.92,1444983.5896 401 | 2019-08-22,4863.6696,0.0,1440535.31,1445398.9796 402 | 2019-08-23,4863.6696,0.0,1445952.51,1450816.1796 403 | 2019-08-26,5902.056,184.5728,1437358.75,1443260.806 404 | 2019-08-27,5902.056,0.0,1451699.9,1457601.956 405 | 2019-08-28,5902.056,0.0,1450620.51,1456522.566 406 | 2019-08-29,5902.056,0.0,1455420.51,1461322.566 407 | 2019-08-30,5902.056,0.0,1450012.25,1455914.306 408 | 2019-09-02,7863.9128,272.7857,1457279.06,1465142.9728 409 | 2019-09-03,7863.9128,0.0,1463120.27,1470984.1828 410 | 2019-09-04,7863.9128,0.0,1470420.02,1478283.9328 411 | 2019-09-05,7863.9128,0.0,1479466.55,1487330.4628 412 | 2019-09-06,7863.9128,0.0,1487083.91,1494947.8228 413 | 2019-09-09,8609.1371,281.7247,1502485.1,1511094.2371 414 | 2019-09-10,8609.1371,0.0,1519598.43,1528207.5671 415 | 2019-09-11,8609.1371,0.0,1511575.53,1520184.6671 416 | 2019-09-12,8609.1371,0.0,1503479.5,1512088.6371 417 | 2019-09-16,7359.892,317.2829,1504122.73,1511482.622 418 | 2019-09-17,7359.892,0.0,1482551.97,1489911.862 419 | 2019-09-18,7359.892,0.0,1485033.49,1492393.382 420 | 2019-09-19,7359.892,0.0,1488156.07,1495515.962 421 | 2019-09-20,7359.892,0.0,1498233.38,1505593.272 422 | 2019-09-23,11086.6765,400.3136,1503097.02,1514183.6965 423 | 2019-09-24,11086.6765,0.0,1499805.45,1510892.1265 424 | 2019-09-25,11086.6765,0.0,1490094.19,1501180.8665 425 | 2019-09-26,11086.6765,0.0,1482931.11,1494017.7865 426 | 2019-09-27,11086.6765,0.0,1487323.19,1498409.8665 427 | 2019-09-30,5475.3829,377.6959,1488073.84,1493549.2229 428 | 2019-10-08,3572.2104,139.8147,1490997.76,1494569.9704 429 | 2019-10-09,3572.2104,0.0,1497429.67,1501001.8804 430 | 2019-10-10,3572.2104,0.0,1508146.78,1511718.9904 431 | 2019-10-11,3572.2104,0.0,1514534.82,1518107.0304 432 | 2019-10-14,11389.706,225.5837,1516098.36,1527488.066 433 | 2019-10-15,11389.706,0.0,1510971.72,1522361.426 434 | 2019-10-16,11389.706,0.0,1510906.36,1522296.066 435 | 2019-10-17,11389.706,0.0,1511940.07,1523329.776 436 | 2019-10-18,11389.706,0.0,1507131.14,1518520.846 437 | 2019-10-21,8953.5538,211.0678,1499606.2,1508559.7538 438 | 2019-10-22,8953.5538,0.0,1503536.86,1512490.4138 439 | 2019-10-23,8953.5538,0.0,1507738.46,1516692.0138 440 | 2019-10-24,8953.5538,0.0,1502486.08,1511439.6338 441 | 2019-10-25,8953.5538,0.0,1503042.65,1511996.2038 442 | 2019-10-28,9004.2622,216.8014,1515423.94,1524428.2022 443 | 2019-10-29,9004.2622,0.0,1507140.79,1516145.0522 444 | 2019-10-30,9004.2622,0.0,1496461.11,1505465.3722 445 | 2019-10-31,9004.2622,0.0,1493175.92,1502180.1822 446 | 2019-11-01,9004.2622,0.0,1498252.58,1507256.8422 447 | 2019-11-04,6837.9663,263.0199,1503555.88,1510393.8463 448 | 2019-11-05,6837.9663,0.0,1507837.04,1514675.0063 449 | 2019-11-06,6837.9663,0.0,1507143.78,1513981.7463 450 | 2019-11-07,6837.9663,0.0,1533102.9,1539940.8663 451 | 2019-11-08,6837.9663,0.0,1519370.84,1526208.8063 452 | 2019-11-11,6659.5484,287.3903,1508922.6,1515582.1484 453 | 2019-11-12,6659.5484,0.0,1509616.61,1516276.1584 454 | 2019-11-13,6659.5484,0.0,1505016.82,1511676.3684 455 | 2019-11-14,6659.5484,0.0,1506904.32,1513563.8684 456 | 2019-11-15,6659.5484,0.0,1494963.43,1501622.9784 457 | 2019-11-18,8215.1765,156.0137,1498414.79,1506629.9665 458 | 2019-11-19,8215.1765,0.0,1510994.61,1519209.7865 459 | 2019-11-20,8215.1765,0.0,1515911.95,1524127.1265 460 | 2019-11-21,8215.1765,0.0,1511425.82,1519640.9965 461 | 2019-11-22,8215.1765,0.0,1505518.42,1513733.5965 462 | 2019-11-25,4777.6812,339.6496,1507367.05,1512144.7312 463 | 2019-11-26,4777.6812,0.0,1512506.51,1517284.1912 464 | 2019-11-27,4777.6812,0.0,1510972.81,1515750.4912 465 | 2019-11-28,4777.6812,0.0,1508496.24,1513273.9212 466 | 2019-11-29,4777.6812,0.0,1506423.48,1511201.1612 467 | 2019-12-02,4782.1174,324.4737,1505687.25,1510469.3674 468 | 2019-12-03,4782.1174,0.0,1509163.63,1513945.7474 469 | 2019-12-04,4782.1174,0.0,1516212.6,1520994.7174 470 | 2019-12-05,4782.1174,0.0,1520813.65,1525595.7674 471 | 2019-12-06,4782.1174,0.0,1529215.01,1533997.1274 472 | 2019-12-09,2828.4024,273.1922,1534493.87,1537322.2724 473 | 2019-12-10,2828.4024,0.0,1553042.98,1555871.3824 474 | 2019-12-11,2828.4024,0.0,1550893.28,1553721.6824 475 | 2019-12-12,2828.4024,0.0,1549259.49,1552087.8924 476 | 2019-12-13,2828.4024,0.0,1558552.35,1561380.7524 477 | 2019-12-16,9219.202,422.394,1572000.38,1581219.582 478 | 2019-12-17,9219.202,0.0,1588126.14,1597345.342 479 | 2019-12-18,9219.202,0.0,1592853.75,1602072.952 480 | 2019-12-19,9219.202,0.0,1598708.66,1607927.862 481 | 2019-12-20,9219.202,0.0,1599399.44,1608618.642 482 | 2019-12-23,5036.0357,246.5969,1583775.9,1588811.9357 483 | 2019-12-24,5036.0357,0.0,1607654.45,1612690.4857 484 | 2019-12-25,5036.0357,0.0,1609206.06,1614242.0957 485 | 2019-12-26,5036.0357,0.0,1612727.98,1617764.0157 486 | 2019-12-27,5036.0357,0.0,1612803.62,1617839.6557 487 | 2019-12-30,3943.8821,151.1244,1616343.19,1620287.0721 488 | 2019-12-31,3943.8821,0.0,1622246.88,1626190.7621 489 | 2020-01-02,3943.8821,0.0,1646873.13,1650817.0121 490 | 2020-01-03,3943.8821,0.0,1655462.21,1659406.0921 491 | 2020-01-06,5620.6909,250.7913,1661164.51,1666785.2009 492 | 2020-01-07,5620.6909,0.0,1673296.48,1678917.1709 493 | 2020-01-08,5620.6909,0.0,1657779.7,1663400.3909 494 | 2020-01-09,5620.6909,0.0,1686394.38,1692015.0709 495 | 2020-01-10,5620.6909,0.0,1680280.28,1685900.9709 496 | 2020-01-13,7075.818,305.9074,1678125.58,1685201.398 497 | 2020-01-14,7075.818,0.0,1686589.21,1693665.028 498 | 2020-01-15,7075.818,0.0,1683208.96,1690284.778 499 | 2020-01-16,7075.818,0.0,1670856.26,1677932.078 500 | 2020-01-17,7075.818,0.0,1663673.53,1670749.348 501 | 2020-01-20,1231.3477,320.7547,1672334.43,1673565.7777 502 | 2020-01-21,1231.3477,0.0,1671868.44,1673099.7877 503 | 2020-01-22,1231.3477,0.0,1668624.4,1669855.7477 504 | 2020-01-23,1231.3477,0.0,1643344.93,1644576.2777 505 | 2020-02-03,11758.6401,487.816,1564590.54,1576349.1801 506 | 2020-02-04,11758.6401,0.0,1613351.36,1625110.0001 507 | 2020-02-05,11758.6401,0.0,1647397.43,1659156.0701 508 | 2020-02-06,11758.6401,0.0,1667912.74,1679671.3801 509 | 2020-02-07,11758.6401,0.0,1679073.41,1690832.0501 510 | 2020-02-10,9859.536,593.4677,1696704.82,1706564.356 511 | 2020-02-11,9859.536,0.0,1698536.61,1708396.146 512 | 2020-02-12,9859.536,0.0,1713750.13,1723609.666 513 | 2020-02-13,9859.536,0.0,1711538.8,1721398.336 514 | 2020-02-14,9859.536,0.0,1716351.56,1726211.096 515 | 2020-02-17,6969.6123,221.4618,1742661.79,1749631.4023 516 | 2020-02-18,6969.6123,0.0,1763045.81,1770015.4223 517 | 2020-02-19,6969.6123,0.0,1761995.14,1768964.7523 518 | 2020-02-20,6969.6123,0.0,1785750.6,1792720.2123 519 | 2020-02-21,6969.6123,0.0,1798986.27,1805955.8823 520 | 2020-02-24,7283.6259,188.1401,1812616.42,1819900.0459 521 | 2020-02-25,7283.6259,0.0,1806095.63,1813379.2559 522 | 2020-02-26,7283.6259,0.0,1781654.63,1788938.2559 523 | 2020-02-27,7283.6259,0.0,1778037.89,1785321.5159 524 | 2020-02-28,7283.6259,0.0,1738754.66,1746038.2859 525 | 2020-03-02,7228.0942,531.6264,1773698.63,1780926.7242 526 | 2020-03-03,7228.0942,0.0,1784129.77,1791357.8642 527 | 2020-03-04,7228.0942,0.0,1785640.73,1792868.8242 528 | 2020-03-05,7228.0942,0.0,1812255.73,1819483.8242 529 | 2020-03-06,7228.0942,0.0,1822106.71,1829334.8042 530 | 2020-03-09,2629.0103,545.642,1783763.46,1786392.4703 531 | 2020-03-10,2629.0103,0.0,1814379.69,1817008.7003 532 | 2020-03-11,2629.0103,0.0,1815049.78,1817678.7903 533 | 2020-03-12,2629.0103,0.0,1828424.43,1831053.4403 534 | 2020-03-13,2629.0103,0.0,1913422.9,1916051.9103 535 | 2020-03-16,12423.0874,1005.5906,1964831.15,1977254.2374 536 | 2020-03-17,12423.0874,0.0,2032289.87,2044712.9574 537 | 2020-03-18,12423.0874,0.0,2005398.65,2017821.7374 538 | 2020-03-19,12423.0874,0.0,2053626.62,2066049.7074 539 | 2020-03-20,12423.0874,0.0,2169289.88,2181712.9674 540 | 2020-03-23,9354.4186,595.8371,2005708.43,2015062.8486 541 | 2020-03-24,9354.4186,0.0,2026721.18,2036075.5986 542 | 2020-03-25,9354.4186,0.0,2075807.01,2085161.4286 543 | 2020-03-26,9354.4186,0.0,2068329.57,2077683.9886 544 | 2020-03-27,9354.4186,0.0,2042919.04,2052273.4586 545 | 2020-03-30,6859.7565,862.9416,2038051.95,2044911.7065 546 | 2020-03-31,6859.7565,0.0,2033540.41,2040400.1665 547 | 2020-04-01,6859.7565,0.0,2036888.64,2043748.3965 548 | 2020-04-02,6859.7565,0.0,2045974.95,2052834.7065 549 | 2020-04-03,6859.7565,0.0,2026577.3,2033437.0565 550 | 2020-04-07,9800.747,998.2436,2049481.76,2059282.507 551 | 2020-04-08,9800.747,0.0,2036401.24,2046201.987 552 | 2020-04-09,9800.747,0.0,2041357.3,2051158.047 553 | 2020-04-10,9800.747,0.0,2006041.11,2015841.857 554 | 2020-04-13,9312.8582,688.1425,1975372.5,1984685.3582 555 | 2020-04-14,9312.8582,0.0,2015371.34,2024684.1982 556 | 2020-04-15,9312.8582,0.0,2037086.16,2046399.0182 557 | 2020-04-16,9312.8582,0.0,2080482.14,2089794.9982 558 | 2020-04-17,9312.8582,0.0,2058712.72,2068025.5782 559 | 2020-04-20,10081.2774,643.201,2087818.14,2097899.4174 560 | 2020-04-21,10081.2774,0.0,2081603.48,2091684.7574 561 | 2020-04-22,10081.2774,0.0,2091886.08,2101967.3574 562 | 2020-04-23,10081.2774,0.0,2106209.44,2116290.7174 563 | 2020-04-24,10081.2774,0.0,2087627.97,2097709.2474 564 | 2020-04-27,7638.5119,381.0392,2085340.71,2092979.2219 565 | 2020-04-28,7638.5119,0.0,2066325.69,2073964.2019 566 | 2020-04-29,7638.5119,0.0,2057108.91,2064747.4219 567 | 2020-04-30,7638.5119,0.0,2073859.34,2081497.8519 568 | 2020-05-06,1923.4763,480.0496,2087104.26,2089027.7363 569 | 2020-05-07,1923.4763,0.0,2075224.91,2077148.3863 570 | 2020-05-08,1923.4763,0.0,2082147.8,2084071.2763 571 | 2020-05-11,4063.6412,447.1394,2079387.34,2083450.9812 572 | 2020-05-12,4063.6412,0.0,2075491.28,2079554.9212 573 | 2020-05-13,4063.6412,0.0,2076422.98,2080486.6212 574 | 2020-05-14,4063.6412,0.0,2058004.39,2062068.0312 575 | 2020-05-15,4063.6412,0.0,2042848.54,2046912.1812 576 | 2020-05-18,3708.7458,279.901,2015998.82,2019707.5658 577 | 2020-05-19,3708.7458,0.0,2022810.78,2026519.5258 578 | 2020-05-20,3708.7458,0.0,2000182.31,2003891.0558 579 | 2020-05-21,3708.7458,0.0,1995457.49,1999166.2358 580 | 2020-05-22,3708.7458,0.0,1980295.34,1984004.0858 581 | 2020-05-25,1111.2774,509.3026,1973061.3,1974172.5774 582 | 2020-05-26,1111.2774,0.0,1993607.35,1994718.6274 583 | 2020-05-27,1111.2774,0.0,2002373.81,2003485.0874 584 | 2020-05-28,1111.2774,0.0,2000300.13,2001411.4074 585 | 2020-05-29,1111.2774,0.0,2015301.41,2016412.6874 586 | 2020-06-01,1852.9938,439.5905,2043021.87,2044874.8638 587 | 2020-06-02,1852.9938,0.0,2050225.71,2052078.7038 588 | 2020-06-03,1852.9938,0.0,2038439.37,2040292.3638 589 | 2020-06-04,1852.9938,0.0,2042023.01,2043876.0038 590 | 2020-06-05,1852.9938,0.0,2056095.92,2057948.9138 591 | 2020-06-08,6691.1571,381.4109,2050682.95,2057374.1071 592 | 2020-06-09,6691.1571,0.0,2052348.57,2059039.7271 593 | 2020-06-10,6691.1571,0.0,2049090.17,2055781.3271 594 | 2020-06-11,6691.1571,0.0,2046258.05,2052949.2071 595 | 2020-06-12,6691.1571,0.0,2048319.04,2055010.1971 596 | 2020-06-15,6103.7472,504.5641,2049705.62,2055809.3672 597 | 2020-06-16,6103.7472,0.0,2061949.9,2068053.6472 598 | 2020-06-17,6103.7472,0.0,2070513.84,2076617.5872 599 | 2020-06-18,6103.7472,0.0,2067525.32,2073629.0672 600 | 2020-06-19,6103.7472,0.0,2066436.57,2072540.3172 601 | 2020-06-22,7264.0911,367.5766,2060179.66,2067443.7511 602 | 2020-06-23,7264.0911,0.0,2053129.91,2060394.0011 603 | 2020-06-24,7264.0911,0.0,2045850.79,2053114.8811 604 | 2020-06-29,8057.4996,589.8529,2033896.99,2041954.4896 605 | 2020-06-30,8057.4996,0.0,2042104.22,2050161.7196 606 | 2020-07-01,8057.4996,0.0,2048862.56,2056920.0596 607 | 2020-07-02,8057.4996,0.0,2077708.93,2085766.4296 608 | 2020-07-03,8057.4996,0.0,2103077.34,2111134.8396 609 | 2020-07-06,9795.2961,813.2171,2161528.4,2171323.6961 610 | 2020-07-07,9795.2961,0.0,2166444.52,2176239.8161 611 | 2020-07-08,9795.2961,0.0,2176996.25,2186791.5461 612 | 2020-07-09,9795.2961,0.0,2194991.6,2204786.8961 613 | 2020-07-10,9795.2961,0.0,2180821.92,2190617.2161 614 | 2020-07-13,7363.8941,507.4022,2222655.37,2230019.2641 615 | 2020-07-14,7363.8941,0.0,2213202.35,2220566.2441 616 | 2020-07-15,7363.8941,0.0,2195101.59,2202465.4841 617 | 2020-07-16,7363.8941,0.0,2135706.42,2143070.3141 618 | 2020-07-17,7363.8941,0.0,2140271.98,2147635.8741 619 | 2020-07-20,13047.8807,403.9584,2215536.76,2228584.6407 620 | 2020-07-21,13047.8807,0.0,2224537.71,2237585.5907 621 | 2020-07-22,13047.8807,0.0,2246633.01,2259680.8907 622 | 2020-07-23,13047.8807,0.0,2238162.04,2251209.9207 623 | 2020-07-24,13047.8807,0.0,2200190.48,2213238.3607 624 | 2020-07-27,4122.0108,648.1669,2202491.67,2206613.6808 625 | 2020-07-28,4122.0108,0.0,2221268.17,2225390.1808 626 | 2020-07-29,4122.0108,0.0,2244476.4,2248598.4108 627 | 2020-07-30,4122.0108,0.0,2252377.98,2256499.9908 628 | 2020-07-31,4122.0108,0.0,2268307.25,2272429.2608 629 | 2020-08-03,7681.3306,483.9187,2297145.85,2304827.1806 630 | 2020-08-04,7681.3306,0.0,2291116.55,2298797.8806 631 | 2020-08-05,7681.3306,0.0,2295042.29,2302723.6206 632 | 2020-08-06,7681.3306,0.0,2282179.6,2289860.9306 633 | 2020-08-07,7681.3306,0.0,2283356.91,2291038.2406 634 | 2020-08-10,9378.7379,606.4025,2305352.55,2314731.2879 635 | 2020-08-11,9378.7379,0.0,2286757.73,2296136.4679 636 | 2020-08-12,9378.7379,0.0,2293306.27,2302685.0079 637 | 2020-08-13,9378.7379,0.0,2294979.33,2304358.0679 638 | 2020-08-14,9378.7379,0.0,2299087.61,2308466.3479 639 | 2020-08-17,3169.6829,422.2886,2322166.05,2325335.7329 640 | 2020-08-18,3169.6829,0.0,2340500.96,2343670.6429 641 | 2020-08-19,3169.6829,0.0,2332947.47,2336117.1529 642 | 2020-08-20,3169.6829,0.0,2318031.72,2321201.4029 643 | 2020-08-21,3169.6829,0.0,2329585.73,2332755.4129 644 | 2020-08-24,5353.8017,611.0544,2328077.64,2333431.4417 645 | 2020-08-25,5353.8017,0.0,2328118.16,2333471.9617 646 | 2020-08-26,5353.8017,0.0,2323877.61,2329231.4117 647 | 2020-08-27,5353.8017,0.0,2315589.42,2320943.2217 648 | 2020-08-28,5353.8017,0.0,2319392.7,2324746.5017 649 | 2020-08-31,6180.4393,586.2087,2319152.74,2325333.1793 650 | 2020-09-01,6180.4393,0.0,2333960.74,2340141.1793 651 | 2020-09-02,6180.4393,0.0,2350936.34,2357116.7793 652 | 2020-09-03,6180.4393,0.0,2351879.77,2358060.2093 653 | 2020-09-04,6180.4393,0.0,2358566.46,2364746.8993 654 | 2020-09-07,5970.953,790.5814,2344448.45,2350419.403 655 | 2020-09-08,5970.953,0.0,2361937.77,2367908.723 656 | 2020-09-09,5970.953,0.0,2333201.37,2339172.323 657 | 2020-09-10,5970.953,0.0,2287692.7,2293663.653 658 | 2020-09-11,5970.953,0.0,2296149.5,2302120.453 659 | 2020-09-14,7281.7685,694.4618,2306507.55,2313789.3185 660 | 2020-09-15,7281.7685,0.0,2296782.38,2304064.1485 661 | 2020-09-16,7281.7685,0.0,2285664.43,2292946.1985 662 | 2020-09-17,7281.7685,0.0,2308845.17,2316126.9385 663 | 2020-09-18,7281.7685,0.0,2346844.97,2354126.7385 664 | 2020-09-21,11252.5068,811.4637,2363885.94,2375138.4468 665 | 2020-09-22,11252.5068,0.0,2350925.54,2362178.0468 666 | 2020-09-23,11252.5068,0.0,2355663.96,2366916.4668 667 | 2020-09-24,11252.5068,0.0,2325114.55,2336367.0568 668 | 2020-09-25,11252.5068,0.0,2312143.32,2323395.8268 669 | 2020-09-28,5938.3388,844.9021,2276647.85,2282586.1888 670 | 2020-09-29,5938.3388,0.0,2291473.46,2297411.7988 671 | 2020-09-30,5938.3388,0.0,2297787.53,2303725.8688 672 | 2020-10-09,4576.7511,781.9157,2337474.77,2342051.5211 673 | 2020-10-12,5258.5334,423.273,2374816.83,2380075.3634 674 | 2020-10-13,5258.5334,0.0,2384643.04,2389901.5734 675 | 2020-10-14,5258.5334,0.0,2376638.81,2381897.3434 676 | 2020-10-15,5258.5334,0.0,2371580.44,2376838.9734 677 | 2020-10-16,5258.5334,0.0,2381908.6,2387167.1334 678 | 2020-10-19,6540.8702,540.4663,2379854.29,2386395.1602 679 | 2020-10-20,6540.8702,0.0,2399227.96,2405768.8302 680 | 2020-10-21,6540.8702,0.0,2396102.17,2402643.0402 681 | 2020-10-22,6540.8702,0.0,2436360.04,2442900.9102 682 | 2020-10-23,6540.8702,0.0,2425963.51,2432504.3802 683 | 2020-10-26,12429.2663,845.1777,2470097.52,2482526.7863 684 | 2020-10-27,12429.2663,0.0,2469162.32,2481591.5863 685 | 2020-10-28,12429.2663,0.0,2470046.75,2482476.0163 686 | 2020-10-29,12429.2663,0.0,2465933.86,2478363.1263 687 | 2020-10-30,12429.2663,0.0,2429747.5,2442176.7663 688 | 2020-11-02,8053.488,1002.5012,2424986.59,2433040.078 689 | 2020-11-03,8053.488,0.0,2443264.05,2451317.538 690 | 2020-11-04,8053.488,0.0,2444812.68,2452866.168 691 | 2020-11-05,8053.488,0.0,2466124.47,2474177.958 692 | 2020-11-06,8053.488,0.0,2465074.69,2473128.178 693 | 2020-11-09,6176.6834,846.132,2486649.93,2492826.6134 694 | 2020-11-10,6176.6834,0.0,2485669.37,2491846.0534 695 | 2020-11-11,6176.6834,0.0,2464912.09,2471088.7734 696 | 2020-11-12,6176.6834,0.0,2470419.61,2476596.2934 697 | 2020-11-13,6176.6834,0.0,2492737.37,2498914.0534 698 | 2020-11-16,9409.8728,857.2613,2480850.94,2490260.8128 699 | 2020-11-17,9409.8728,0.0,2466652.68,2476062.5527 700 | 2020-11-18,9409.8728,0.0,2477188.52,2486598.3928 701 | 2020-11-19,9409.8728,0.0,2470687.85,2480097.7227 702 | 2020-11-20,9409.8728,0.0,2473598.73,2483008.6028 703 | 2020-11-23,3941.9726,625.4187,2489670.17,2493612.1426 704 | 2020-11-24,3941.9726,0.0,2500597.0,2504538.9726 705 | 2020-11-25,3941.9726,0.0,2512514.82,2516456.7926 706 | 2020-11-26,3941.9726,0.0,2493624.86,2497566.8326 707 | 2020-11-27,3941.9726,0.0,2492001.86,2495943.8326 708 | 2020-11-30,2743.0162,639.0495,2489959.87,2492702.8862 709 | 2020-12-01,2743.0162,0.0,2506724.01,2509467.0262 710 | 2020-12-02,2743.0162,0.0,2539626.52,2542369.5362 711 | 2020-12-03,2743.0162,0.0,2510244.4,2512987.4162 712 | 2020-12-04,2743.0162,0.0,2497593.44,2500336.4562 713 | 2020-12-07,5892.2461,666.2028,2497657.24,2503549.4861 714 | 2020-12-08,5892.2461,0.0,2505872.68,2511764.9261 715 | 2020-12-09,5892.2461,0.0,2477421.01,2483313.2561 716 | 2020-12-10,5892.2461,0.0,2477420.72,2483312.9661 717 | 2020-12-11,5892.2461,0.0,2465350.74,2471242.9861 718 | 2020-12-14,8741.8414,749.5946,2466002.05,2474743.8914 719 | 2020-12-15,8741.8414,0.0,2409119.62,2417861.4614 720 | 2020-12-16,8741.8414,0.0,2394935.28,2403677.1214 721 | 2020-12-17,8741.8414,0.0,2410963.37,2419705.2114 722 | 2020-12-18,8741.8414,0.0,2396070.31,2404812.1514 723 | 2020-12-21,4044.3343,738.7685,2409251.5,2413295.8343 724 | 2020-12-22,4044.3343,0.0,2381164.5,2385208.8343 725 | 2020-12-23,4044.3343,0.0,2370433.73,2374478.0643 726 | 2020-12-24,4044.3343,0.0,2303003.39,2307047.7243 727 | 2020-12-25,4044.3343,0.0,2321835.69,2325880.0243 728 | 2020-12-28,5109.1132,770.8624,2302445.0,2307554.1132 729 | 2020-12-29,5109.1132,0.0,2309983.92,2315093.0332 730 | 2020-12-30,5109.1132,0.0,2336640.34,2341749.4532 731 | 2020-12-31,5109.1132,0.0,2365320.13,2370429.2432 732 | 2021-01-04,2637.0936,618.7219,2382534.21,2385171.3036 733 | 2021-01-05,2637.0936,0.0,2374264.79,2376901.8836 734 | 2021-01-06,2637.0936,0.0,2379281.74,2381918.8336 735 | 2021-01-07,2637.0936,0.0,2333761.08,2336398.1736 736 | 2021-01-08,2637.0936,0.0,2320114.63,2322751.7236 737 | 2021-01-11,1214.628,706.2403,2287735.07,2288949.698 738 | 2021-01-12,1214.628,0.0,2289610.49,2290825.118 739 | 2021-01-13,1214.628,0.0,2244561.04,2245775.668 740 | 2021-01-14,1214.628,0.0,2269776.23,2270990.858 741 | 2021-01-15,1214.628,0.0,2283773.6,2284988.228 742 | 2021-01-18,3124.7638,598.1599,2295223.06,2298347.8238 743 | 2021-01-19,3124.7638,0.0,2307897.1,2311021.8638 744 | 2021-01-20,3124.7638,0.0,2307466.16,2310590.9238 745 | 2021-01-21,3124.7638,0.0,2307355.86,2310480.6238 746 | 2021-01-22,3124.7638,0.0,2298207.12,2301331.8838 747 | 2021-01-25,4108.5242,339.184,2275541.0,2279649.5242 748 | 2021-01-26,4108.5242,0.0,2264514.5,2268623.0242 749 | 2021-01-27,4108.5242,0.0,2251475.44,2255583.9642 750 | 2021-01-28,4108.5242,0.0,2236249.03,2240357.5542 751 | 2021-01-29,4108.5242,0.0,2204040.12,2208148.6442 752 | 2021-02-01,730.3141,501.4286,2195340.14,2196070.4541 753 | 2021-02-02,730.3141,0.0,2172661.25,2173391.5641 754 | 2021-02-03,730.3141,0.0,2169642.62,2170372.9341 755 | 2021-02-04,730.3141,0.0,2129357.01,2130087.3241 756 | 2021-02-05,730.3141,0.0,2116856.77,2117587.0841 757 | 2021-02-08,4187.3952,808.6685,2087723.38,2091910.7752 758 | 2021-02-09,4187.3952,0.0,2128389.7,2132577.0952 759 | 2021-02-10,4187.3952,0.0,2157402.07,2161589.4652 760 | 2021-02-18,3192.7533,415.1166,2198695.53,2201888.2833 761 | 2021-02-19,3192.7533,0.0,2258526.79,2261719.5433 762 | 2021-02-22,5494.718,540.7416,2295012.1,2300506.818 763 | 2021-02-23,5494.718,0.0,2280972.12,2286466.838 764 | 2021-02-24,5494.718,0.0,2272386.1,2277880.818 765 | 2021-02-25,5494.718,0.0,2259929.5,2265424.218 766 | 2021-02-26,5494.718,0.0,2271685.51,2277180.228 767 | 2021-03-01,4598.0307,333.4161,2293331.57,2297929.6007 768 | 2021-03-02,4598.0307,0.0,2295675.24,2300273.2707 769 | 2021-03-03,4598.0307,0.0,2321742.9,2326340.9307 770 | 2021-03-04,4598.0307,0.0,2322624.16,2327222.1907 771 | 2021-03-05,4598.0307,0.0,2367776.51,2372374.5407 772 | 2021-03-08,8060.4177,548.6233,2367936.07,2375996.4877 773 | 2021-03-09,8060.4177,0.0,2347410.64,2355471.0577 774 | 2021-03-10,8060.4177,0.0,2350075.8,2358136.2177 775 | 2021-03-11,8060.4177,0.0,2373098.22,2381158.6377 776 | 2021-03-12,8060.4177,0.0,2392061.59,2400122.0077 777 | 2021-03-15,6910.9653,711.3126,2408245.69,2415156.6553 778 | 2021-03-16,6910.9653,0.0,2417777.63,2424688.5953 779 | 2021-03-17,6910.9653,0.0,2431101.51,2438012.4753 780 | 2021-03-18,6910.9653,0.0,2439339.55,2446250.5153 781 | 2021-03-19,6910.9653,0.0,2442887.84,2449798.8053 782 | 2021-03-22,2481.8549,462.7296,2481407.29,2483889.1449 783 | 2021-03-23,2481.8549,0.0,2454018.66,2456500.5149 784 | 2021-03-24,2481.8549,0.0,2449559.03,2452040.8849 785 | 2021-03-25,2481.8549,0.0,2427138.09,2429619.9449 786 | 2021-03-26,2481.8549,0.0,2445470.55,2447952.4049 787 | 2021-03-29,3488.5031,544.3107,2441017.11,2444505.6131 788 | 2021-03-30,3488.5031,0.0,2423480.5,2426969.0031 789 | 2021-03-31,3488.5031,0.0,2413509.15,2416997.6531 790 | 2021-04-01,3488.5031,0.0,2435395.66,2438884.1631 791 | 2021-04-02,3488.5031,0.0,2425090.12,2428578.6231 792 | 2021-04-06,3547.519,470.288,2456837.15,2460384.669 793 | 2021-04-07,3547.519,0.0,2476139.12,2479686.639 794 | 2021-04-08,3547.519,0.0,2489305.06,2492852.579 795 | 2021-04-09,3547.519,0.0,2512634.1,2516181.619 796 | 2021-04-12,5217.3093,486.2976,2494368.63,2499585.9393 797 | 2021-04-13,5217.3093,0.0,2468935.73,2474153.0393 798 | 2021-04-14,5217.3093,0.0,2485708.0,2490925.3093 799 | 2021-04-15,5217.3093,0.0,2479708.43,2484925.7393 800 | 2021-04-16,5217.3093,0.0,2505508.36,2510725.6693 801 | 2021-04-19,3829.3987,465.8336,2529393.18,2533222.5787 802 | 2021-04-20,3829.3987,0.0,2542158.95,2545988.3487 803 | 2021-04-21,3829.3987,0.0,2537503.22,2541332.6187 804 | 2021-04-22,3829.3987,0.0,2543428.25,2547257.6487 805 | 2021-04-23,3829.3987,0.0,2543517.81,2547347.2087 806 | 2021-04-26,2484.1269,402.7331,2552978.29,2555462.4169 807 | 2021-04-27,2484.1269,0.0,2536544.48,2539028.6069 808 | 2021-04-28,2484.1269,0.0,2540646.88,2543131.0069 809 | 2021-04-29,2484.1269,0.0,2539863.33,2542347.4569 810 | 2021-04-30,2484.1269,0.0,2538761.25,2541245.3769 811 | 2021-05-06,603.4648,573.0682,2555134.74,2555738.2048 812 | 2021-05-07,603.4648,0.0,2563156.27,2563759.7348 813 | 2021-05-10,3418.297,359.344,2564688.51,2568106.807 814 | 2021-05-11,3418.297,0.0,2571761.97,2575180.267 815 | 2021-05-12,3418.297,0.0,2586330.23,2589748.527 816 | 2021-05-13,3418.297,0.0,2583328.92,2586747.217 817 | 2021-05-14,3418.297,0.0,2591612.1,2595030.397 818 | 2021-05-17,2369.1992,573.0129,2562263.42,2564632.6192 819 | 2021-05-18,2369.1992,0.0,2582498.74,2584867.9392 820 | 2021-05-19,2369.1992,0.0,2586766.62,2589135.8192 821 | 2021-05-20,2369.1992,0.0,2587477.93,2589847.1292 822 | 2021-05-21,2369.1992,0.0,2598667.86,2601037.0592 823 | 2021-05-24,3421.4485,362.5903,2604838.45,2608259.8985 824 | 2021-05-25,3421.4485,0.0,2618845.94,2622267.3885 825 | 2021-05-26,3421.4485,0.0,2634234.58,2637656.0285 826 | 2021-05-27,3421.4485,0.0,2653154.58,2656576.0285 827 | 2021-05-28,3421.4485,0.0,2643991.74,2647413.1885 828 | 2021-05-31,6264.6586,603.0927,2658983.47,2665248.1286 829 | 2021-06-01,6264.6586,0.0,2666956.72,2673221.3786 830 | 2021-06-02,6264.6586,0.0,2668800.79,2675065.4486 831 | 2021-06-03,6264.6586,0.0,2672030.77,2678295.4286 832 | 2021-06-04,6264.6586,0.0,2682362.26,2688626.9186 833 | 2021-06-07,6676.902,455.5776,2670565.48,2677242.382 834 | 2021-06-08,6676.902,0.0,2657152.55,2663829.452 835 | 2021-06-09,6676.902,0.0,2660930.61,2667607.512 836 | 2021-06-10,6676.902,0.0,2665560.2,2672237.102 837 | 2021-06-11,6676.902,0.0,2670501.04,2677177.942 838 | 2021-06-15,443.8201,575.5518,2649671.29,2650115.1101 839 | 2021-06-16,443.8201,0.0,2652886.53,2653330.3501 840 | 2021-06-17,443.8201,0.0,2651158.76,2651602.5801 841 | 2021-06-18,443.8201,0.0,2640347.28,2640791.1001 842 | 2021-06-21,8441.9721,493.3837,2663329.41,2671771.3821 843 | 2021-06-22,8441.9721,0.0,2684603.6,2693045.5721 844 | 2021-06-23,8441.9721,0.0,2695427.02,2703868.9921 845 | 2021-06-24,8441.9721,0.0,2710211.63,2718653.6021 846 | 2021-06-25,8441.9721,0.0,2720201.97,2728643.9421 847 | 2021-06-28,4600.2635,699.0331,2723409.12,2728009.3835 848 | 2021-06-29,4600.2635,0.0,2707719.76,2712320.0235 849 | 2021-06-30,4600.2635,0.0,2710031.13,2714631.3935 850 | 2021-07-01,4600.2635,0.0,2692760.5,2697360.7635 851 | 2021-07-02,4600.2635,0.0,2682297.17,2686897.4335 852 | 2021-07-05,9122.9516,592.7389,2701816.95,2710939.9016 853 | 2021-07-06,9122.9516,0.0,2707946.2,2717069.1516 854 | 2021-07-07,9122.9516,0.0,2718651.48,2727774.4316 855 | 2021-07-08,9122.9516,0.0,2731715.45,2740838.4016 856 | 2021-07-09,9122.9516,0.0,2749681.52,2758804.4716 857 | 2021-07-12,9919.3789,710.2031,2776247.59,2786166.9689 858 | 2021-07-13,9919.3789,0.0,2792584.43,2802503.8089 859 | 2021-07-14,9919.3789,0.0,2780653.63,2790573.0089 860 | 2021-07-15,9919.3789,0.0,2785558.55,2795477.9289 861 | 2021-07-16,9919.3789,0.0,2798210.25,2808129.6289 862 | 2021-07-19,4894.8523,613.412,2802123.77,2807018.6223 863 | 2021-07-20,4894.8523,0.0,2803016.73,2807911.5823 864 | 2021-07-21,4894.8523,0.0,2815250.63,2820145.4823 865 | 2021-07-22,4894.8523,0.0,2841301.31,2846196.1623 866 | 2021-07-23,4894.8523,0.0,2870408.3,2875303.1523 867 | 2021-07-26,9174.7665,752.9862,2828492.77,2837667.5365 868 | 2021-07-27,9174.7665,0.0,2782845.21,2792019.9765 869 | 2021-07-28,9174.7665,0.0,2757622.47,2766797.2365 870 | 2021-07-29,9174.7665,0.0,2785343.85,2794518.6165 871 | 2021-07-30,9174.7665,0.0,2820594.39,2829769.1565 872 | 2021-08-02,7087.4727,855.1944,2875028.44,2882115.9127 873 | 2021-08-03,7087.4727,0.0,2879243.29,2886330.7627 874 | 2021-08-04,7087.4727,0.0,2901437.87,2908525.3427 875 | 2021-08-05,7087.4727,0.0,2909506.51,2916593.9827 876 | 2021-08-06,7087.4727,0.0,2920816.78,2927904.2527 877 | 2021-08-09,8186.7824,755.0066,2935965.07,2944151.8524 878 | 2021-08-10,8186.7824,0.0,2944827.77,2953014.5524 879 | 2021-08-11,8186.7824,0.0,2973860.82,2982047.6024 880 | 2021-08-12,8186.7824,0.0,2973731.49,2981918.2724 881 | 2021-08-13,8186.7824,0.0,2980338.99,2988525.7724 882 | 2021-08-16,7615.6579,555.6978,2995472.06,3003087.7179 883 | 2021-08-17,7615.6579,0.0,2972168.14,2979783.7979 884 | 2021-08-18,7615.6579,0.0,2985378.43,2992994.0879 885 | 2021-08-19,7615.6579,0.0,2981412.69,2989028.3479 886 | 2021-08-20,7615.6579,0.0,2972401.84,2980017.4979 887 | 2021-08-23,4328.4251,407.1641,2993116.83,2997445.2551 888 | 2021-08-24,4328.4251,0.0,2998248.77,3002577.1951 889 | 2021-08-25,4328.4251,0.0,3031419.82,3035748.2451 890 | 2021-08-26,4328.4251,0.0,3038403.28,3042731.7051 891 | 2021-08-27,4328.4251,0.0,3042483.83,3046812.2551 892 | 2021-08-30,3290.0952,556.2245,3053006.53,3056296.6252 893 | 2021-08-31,3290.0952,0.0,3074975.48,3078265.5752 894 | 2021-09-01,3290.0952,0.0,3091573.73,3094863.8252 895 | 2021-09-02,3290.0952,0.0,3135703.37,3138993.4652 896 | 2021-09-03,3290.0952,0.0,3144882.65,3148172.7452 897 | 2021-09-06,4068.2253,698.6038,3157640.66,3161708.8853 898 | 2021-09-07,4068.2253,0.0,3198423.92,3202492.1453 899 | 2021-09-08,4068.2253,0.0,3232863.59,3236931.8153 900 | 2021-09-09,4068.2253,0.0,3231899.08,3235967.3053 901 | 2021-09-10,4068.2253,0.0,3210290.55,3214358.7753 902 | 2021-09-13,7413.8313,717.0989,3220291.75,3227705.5813 903 | 2021-09-14,7413.8313,0.0,3168569.95,3175983.7813 904 | 2021-09-15,7413.8313,0.0,3155219.43,3162633.2613 905 | 2021-09-16,7413.8313,0.0,3115782.13,3123195.9613 906 | 2021-09-17,7413.8313,0.0,3095830.07,3103243.9013 907 | 2021-09-22,5073.7198,682.7436,3103140.86,3108214.5798 908 | 2021-09-23,5073.7198,0.0,3171546.34,3176620.0598 909 | 2021-09-24,5073.7198,0.0,3144081.85,3149155.5698 910 | -------------------------------------------------------------------------------- /logs/2021-09-30-09-00-03/report/portfolio.csv: -------------------------------------------------------------------------------- 1 | date,cash,total_value,market_value,unit_net_value,units,static_unit_net_value 2 | 2018-01-02,11431.1771,999209.7771,987778.6,0.99921,1000000.0,1.0 3 | 2018-01-03,11431.1771,1008550.2771,997119.1,1.00855,1000000.0,0.9992 4 | 2018-01-04,11431.1771,1016811.2371,1005380.06,1.016811,1000000.0,1.0086 5 | 2018-01-05,11431.1771,1027746.4371,1016315.26,1.027746,1000000.0,1.0168 6 | 2018-01-08,6082.0671,1028917.1071,1022835.04,1.028917,1000000.0,1.0277 7 | 2018-01-09,6082.0671,1022068.2871,1015986.22,1.022068,1000000.0,1.0289 8 | 2018-01-10,6082.0671,1017287.6071,1011205.54,1.017288,1000000.0,1.0221 9 | 2018-01-11,6082.0671,1020752.0171,1014669.95,1.020752,1000000.0,1.0173 10 | 2018-01-12,6082.0671,1018722.5771,1012640.51,1.018723,1000000.0,1.0208 11 | 2018-01-15,4149.076,1003602.486,999453.41,1.003602,1000000.0,1.0187 12 | 2018-01-16,4149.076,1004138.796,999989.72,1.004139,1000000.0,1.0036 13 | 2018-01-17,4149.076,1005287.786,1001138.71,1.005288,1000000.0,1.0041 14 | 2018-01-18,4149.076,1010248.526,1006099.45,1.010249,1000000.0,1.0053 15 | 2018-01-19,4149.076,1015975.556,1011826.48,1.015976,1000000.0,1.0102 16 | 2018-01-22,6969.8795,1028323.6095,1021353.73,1.028324,1000000.0,1.016 17 | 2018-01-23,6969.8795,1034080.2395,1027110.36,1.03408,1000000.0,1.0283 18 | 2018-01-24,6969.8795,1044126.3495,1037156.47,1.044126,1000000.0,1.0341 19 | 2018-01-25,6969.8795,1055736.9495,1048767.07,1.055737,1000000.0,1.0441 20 | 2018-01-26,6969.8795,1053474.5595,1046504.68,1.053475,1000000.0,1.0557 21 | 2018-01-29,8244.7164,1039966.9264,1031722.21,1.039967,1000000.0,1.0535 22 | 2018-01-30,8244.7164,1035459.5364,1027214.82,1.03546,1000000.0,1.04 23 | 2018-01-31,8244.7164,1028138.7364,1019894.02,1.028139,1000000.0,1.0355 24 | 2018-02-01,8244.7164,1012432.4364,1004187.72,1.012432,1000000.0,1.0281 25 | 2018-02-02,8244.7164,1014258.3664,1006013.65,1.014258,1000000.0,1.0124 26 | 2018-02-05,5407.4996,1014377.0196,1008969.52,1.014377,1000000.0,1.0143 27 | 2018-02-06,5407.4996,1002181.4596,996773.96,1.002181,1000000.0,1.0144 28 | 2018-02-07,5407.4996,1001096.0496,995688.55,1.001096,1000000.0,1.0022 29 | 2018-02-08,5407.4996,1005377.6196,999970.12,1.005378,1000000.0,1.0011 30 | 2018-02-09,5407.4996,990804.5396,985397.04,0.990805,1000000.0,1.0054 31 | 2018-02-12,2089.4171,1006043.1071,1003953.69,1.006043,1000000.0,0.9908 32 | 2018-02-13,2089.4171,1010452.7971,1008363.38,1.010453,1000000.0,1.006 33 | 2018-02-14,2089.4171,1011719.6071,1009630.19,1.01172,1000000.0,1.0105 34 | 2018-02-22,4965.2396,1018439.1996,1013473.96,1.018439,1000000.0,1.0117 35 | 2018-02-23,4965.2396,1016883.2696,1011918.03,1.016883,1000000.0,1.0184 36 | 2018-02-26,4924.0537,1026935.6137,1022011.56,1.026936,1000000.0,1.0169 37 | 2018-02-27,4924.0537,1025927.3437,1021003.29,1.025927,1000000.0,1.0269 38 | 2018-02-28,4924.0537,1024012.9137,1019088.86,1.024013,1000000.0,1.0259 39 | 2018-03-01,4924.0537,1028659.5737,1023735.52,1.02866,1000000.0,1.024 40 | 2018-03-02,4924.0537,1026152.3137,1021228.26,1.026152,1000000.0,1.0287 41 | 2018-03-05,5664.6249,1026069.3749,1020404.75,1.026069,1000000.0,1.0262 42 | 2018-03-06,5664.6249,1024592.8249,1018928.2,1.024593,1000000.0,1.0261 43 | 2018-03-07,5664.6249,1023878.3249,1018213.7,1.023878,1000000.0,1.0246 44 | 2018-03-08,5664.6249,1024980.3049,1019315.68,1.02498,1000000.0,1.0239 45 | 2018-03-09,5664.6249,1031145.1649,1025480.54,1.031145,1000000.0,1.025 46 | 2018-03-12,8664.1282,1037286.7182,1028622.59,1.037287,1000000.0,1.0311 47 | 2018-03-13,8664.1282,1041262.8782,1032598.75,1.041263,1000000.0,1.0373 48 | 2018-03-14,8664.1282,1036348.8282,1027684.7,1.036349,1000000.0,1.0413 49 | 2018-03-15,8664.1282,1033524.7382,1024860.61,1.033525,1000000.0,1.0363 50 | 2018-03-16,8664.1282,1035161.9082,1026497.78,1.035162,1000000.0,1.0335 51 | 2018-03-19,7892.2074,1036164.4474,1028272.24,1.036164,1000000.0,1.0352 52 | 2018-03-20,7892.2074,1034497.5074,1026605.3,1.034498,1000000.0,1.0362 53 | 2018-03-21,7892.2074,1034195.3274,1026303.12,1.034195,1000000.0,1.0345 54 | 2018-03-22,7892.2074,1034129.9274,1026237.72,1.03413,1000000.0,1.0342 55 | 2018-03-23,7892.2074,1020410.3274,1012518.12,1.02041,1000000.0,1.0341 56 | 2018-03-26,6818.3707,1026345.3307,1019526.96,1.026345,1000000.0,1.0204 57 | 2018-03-27,6818.3707,1035231.4707,1028413.1,1.035231,1000000.0,1.0263 58 | 2018-03-28,6818.3707,1032201.3307,1025382.96,1.032201,1000000.0,1.0352 59 | 2018-03-29,6818.3707,1031078.8907,1024260.52,1.031079,1000000.0,1.0322 60 | 2018-03-30,6818.3707,1037602.2507,1030783.88,1.037602,1000000.0,1.0311 61 | 2018-04-02,8380.1096,1044605.0196,1036224.91,1.044605,1000000.0,1.0376 62 | 2018-04-03,8380.1096,1042917.4396,1034537.33,1.042917,1000000.0,1.0446 63 | 2018-04-04,8380.1096,1044697.2396,1036317.13,1.044697,1000000.0,1.0429 64 | 2018-04-09,8863.3959,1046085.2159,1037221.82,1.046085,1000000.0,1.0447 65 | 2018-04-10,8863.3959,1042227.5659,1033364.17,1.042228,1000000.0,1.0461 66 | 2018-04-11,8863.3959,1043553.2859,1034689.89,1.043553,1000000.0,1.0422 67 | 2018-04-12,8863.3959,1040741.0359,1031877.64,1.040741,1000000.0,1.0436 68 | 2018-04-13,8863.3959,1039898.0559,1031034.66,1.039898,1000000.0,1.0407 69 | 2018-04-16,6923.9575,1036068.8675,1029144.91,1.036069,1000000.0,1.0399 70 | 2018-04-17,6923.9575,1033360.9975,1026437.04,1.033361,1000000.0,1.0361 71 | 2018-04-18,6923.9575,1038352.7475,1031428.79,1.038353,1000000.0,1.0334 72 | 2018-04-19,6923.9575,1039075.6875,1032151.73,1.039076,1000000.0,1.0384 73 | 2018-04-20,6923.9575,1033960.2375,1027036.28,1.03396,1000000.0,1.0391 74 | 2018-04-23,5291.8275,1019315.9175,1014024.09,1.019316,1000000.0,1.034 75 | 2018-04-24,5291.8275,1031341.2475,1026049.42,1.031341,1000000.0,1.0193 76 | 2018-04-25,5291.8275,1029250.8075,1023958.98,1.029251,1000000.0,1.0313 77 | 2018-04-26,5291.8275,1027209.0175,1021917.19,1.027209,1000000.0,1.0293 78 | 2018-04-27,5291.8275,1026020.8075,1020728.98,1.026021,1000000.0,1.0272 79 | 2018-05-02,9023.9712,1023738.5712,1014714.6,1.023739,1000000.0,1.026 80 | 2018-05-03,9023.9712,1029108.4112,1020084.44,1.029108,1000000.0,1.0237 81 | 2018-05-04,9023.9712,1031715.3012,1022691.33,1.031715,1000000.0,1.0291 82 | 2018-05-07,8977.5322,1039210.4122,1030232.88,1.03921,1000000.0,1.0317 83 | 2018-05-08,8977.5322,1042833.3422,1033855.81,1.042833,1000000.0,1.0392 84 | 2018-05-09,8977.5322,1043688.4022,1034710.87,1.043688,1000000.0,1.0428 85 | 2018-05-10,8977.5322,1047948.4222,1038970.89,1.047948,1000000.0,1.0437 86 | 2018-05-11,8977.5322,1041010.2722,1032032.74,1.04101,1000000.0,1.0479 87 | 2018-05-14,5936.9424,1035661.5624,1029724.62,1.035662,1000000.0,1.041 88 | 2018-05-15,5936.9424,1043362.2024,1037425.26,1.043362,1000000.0,1.0357 89 | 2018-05-16,5936.9424,1039950.2824,1034013.34,1.03995,1000000.0,1.0434 90 | 2018-05-17,5936.9424,1040739.5624,1034802.62,1.04074,1000000.0,1.04 91 | 2018-05-18,5936.9424,1040419.3824,1034482.44,1.040419,1000000.0,1.0407 92 | 2018-05-21,3467.2224,1044617.8124,1041150.59,1.044618,1000000.0,1.0404 93 | 2018-05-22,3467.2224,1047757.9124,1044290.69,1.047758,1000000.0,1.0446 94 | 2018-05-23,3467.2224,1043154.6424,1039687.42,1.043155,1000000.0,1.0478 95 | 2018-05-24,3467.2224,1042873.6424,1039406.42,1.042874,1000000.0,1.0432 96 | 2018-05-25,3467.2224,1037069.0224,1033601.8,1.037069,1000000.0,1.0429 97 | 2018-05-28,2049.9374,1027705.4774,1025655.54,1.027705,1000000.0,1.0371 98 | 2018-05-29,2049.9374,1020441.7974,1018391.86,1.020442,1000000.0,1.0277 99 | 2018-05-30,2049.9374,1004419.8074,1002369.87,1.00442,1000000.0,1.0204 100 | 2018-05-31,2049.9374,1009385.0974,1007335.16,1.009385,1000000.0,1.0044 101 | 2018-06-01,2049.9374,1008780.4974,1006730.56,1.00878,1000000.0,1.0094 102 | 2018-06-04,4581.119,1001811.899,997230.78,1.001812,1000000.0,1.0088 103 | 2018-06-05,4581.119,1013269.049,1008687.93,1.013269,1000000.0,1.0018 104 | 2018-06-06,4581.119,1017649.029,1013067.91,1.017649,1000000.0,1.0133 105 | 2018-06-07,4581.119,1022226.689,1017645.57,1.022227,1000000.0,1.0176 106 | 2018-06-08,4581.119,1016298.729,1011717.61,1.016299,1000000.0,1.0222 107 | 2018-06-11,4936.5542,1013926.4242,1008989.87,1.013926,1000000.0,1.0163 108 | 2018-06-12,4936.5542,1017131.7742,1012195.22,1.017132,1000000.0,1.0139 109 | 2018-06-13,4936.5542,1013091.4142,1008154.86,1.013091,1000000.0,1.0171 110 | 2018-06-14,4936.5542,1009259.4842,1004322.93,1.009259,1000000.0,1.0131 111 | 2018-06-15,4936.5542,1000664.0242,995727.47,1.000664,1000000.0,1.0093 112 | 2018-06-19,2957.0756,964403.2456,961446.17,0.964403,1000000.0,1.0007 113 | 2018-06-20,2957.0756,967430.0856,964473.01,0.96743,1000000.0,0.9644 114 | 2018-06-21,2957.0756,960262.3656,957305.29,0.960262,1000000.0,0.9674 115 | 2018-06-22,2957.0756,961116.1356,958159.06,0.961116,1000000.0,0.9603 116 | 2018-06-25,2194.396,963738.436,961544.04,0.963738,1000000.0,0.9611 117 | 2018-06-26,2194.396,966701.966,964507.57,0.966702,1000000.0,0.9637 118 | 2018-06-27,2194.396,964692.796,962498.4,0.964693,1000000.0,0.9667 119 | 2018-06-28,2194.396,963140.956,960946.56,0.963141,1000000.0,0.9647 120 | 2018-06-29,2194.396,977840.306,975645.91,0.97784,1000000.0,0.9631 121 | 2018-07-02,4611.8137,972762.7737,968150.96,0.972763,1000000.0,0.9778 122 | 2018-07-03,4611.8137,978675.2637,974063.45,0.978675,1000000.0,0.9728 123 | 2018-07-04,4611.8137,975723.3437,971111.53,0.975723,1000000.0,0.9787 124 | 2018-07-05,4611.8137,970893.8337,966282.02,0.970894,1000000.0,0.9757 125 | 2018-07-06,4611.8137,972380.8937,967769.08,0.972381,1000000.0,0.9709 126 | 2018-07-09,3521.7217,982245.5817,978723.86,0.982246,1000000.0,0.9724 127 | 2018-07-10,3521.7217,982889.1417,979367.42,0.982889,1000000.0,0.9822 128 | 2018-07-11,3521.7217,976214.0917,972692.37,0.976214,1000000.0,0.9829 129 | 2018-07-12,3521.7217,992011.8517,988490.13,0.992012,1000000.0,0.9762 130 | 2018-07-13,3521.7217,992829.8417,989308.12,0.99283,1000000.0,0.992 131 | 2018-07-16,2557.1472,991178.5172,988621.37,0.991179,1000000.0,0.9928 132 | 2018-07-17,2557.1472,998286.3572,995729.21,0.998286,1000000.0,0.9912 133 | 2018-07-18,2557.1472,1001854.5972,999297.45,1.001855,1000000.0,0.9983 134 | 2018-07-19,2557.1472,1005101.7972,1002544.65,1.005102,1000000.0,1.0019 135 | 2018-07-20,2557.1472,1011170.4672,1008613.32,1.01117,1000000.0,1.0051 136 | 2018-07-23,2385.5677,1012883.8077,1010498.24,1.012884,1000000.0,1.0112 137 | 2018-07-24,2385.5677,1015672.6577,1013287.09,1.015673,1000000.0,1.0129 138 | 2018-07-25,2385.5677,1015566.3177,1013180.75,1.015566,1000000.0,1.0157 139 | 2018-07-26,2385.5677,1009913.4877,1007527.92,1.009913,1000000.0,1.0156 140 | 2018-07-27,2385.5677,1005757.0577,1003371.49,1.005757,1000000.0,1.0099 141 | 2018-07-30,149.9241,1000057.8741,999907.95,1.000058,1000000.0,1.0058 142 | 2018-07-31,149.9241,1000754.4941,1000604.57,1.000754,1000000.0,1.0001 143 | 2018-08-01,149.9241,997019.1341,996869.21,0.997019,1000000.0,1.0008 144 | 2018-08-02,149.9241,987469.0341,987319.11,0.987469,1000000.0,0.997 145 | 2018-08-03,149.9241,987849.8141,987699.89,0.98785,1000000.0,0.9875 146 | 2018-08-06,627.33,980207.65,979580.32,0.980208,1000000.0,0.9878 147 | 2018-08-07,627.33,989320.8,988693.47,0.989321,1000000.0,0.9802 148 | 2018-08-08,627.33,982459.7,981832.37,0.98246,1000000.0,0.9893 149 | 2018-08-09,627.33,992906.7,992279.37,0.992907,1000000.0,0.9825 150 | 2018-08-10,627.33,999165.83,998538.5,0.999166,1000000.0,0.9929 151 | 2018-08-13,7217.1828,1000821.6228,993604.44,1.000822,1000000.0,0.9992 152 | 2018-08-14,7217.1828,994912.6928,987695.51,0.994913,1000000.0,1.0008 153 | 2018-08-15,7217.1828,988031.5728,980814.39,0.988032,1000000.0,0.9949 154 | 2018-08-16,7217.1828,983014.1328,975796.95,0.983014,1000000.0,0.988 155 | 2018-08-17,7217.1828,979661.5128,972444.33,0.979662,1000000.0,0.983 156 | 2018-08-20,5846.8324,977988.0724,972141.24,0.977988,1000000.0,0.9797 157 | 2018-08-21,5846.8324,984697.1324,978850.3,0.984697,1000000.0,0.978 158 | 2018-08-22,5846.8324,983421.4424,977574.61,0.983421,1000000.0,0.9847 159 | 2018-08-23,5846.8324,986169.9424,980323.11,0.98617,1000000.0,0.9834 160 | 2018-08-24,5846.8324,987911.4024,982064.57,0.987911,1000000.0,0.9862 161 | 2018-08-27,5569.0554,993852.2954,988283.24,0.993852,1000000.0,0.9879 162 | 2018-08-28,5569.0554,999860.5254,994291.47,0.999861,1000000.0,0.9939 163 | 2018-08-29,5569.0554,995842.9854,990273.93,0.995843,1000000.0,0.9999 164 | 2018-08-30,5569.0554,990914.1254,985345.07,0.990914,1000000.0,0.9958 165 | 2018-08-31,5569.0554,988652.2654,983083.21,0.988652,1000000.0,0.9909 166 | 2018-09-03,5140.7829,985306.0329,980165.25,0.985306,1000000.0,0.9887 167 | 2018-09-04,5140.7829,988943.0229,983802.24,0.988943,1000000.0,0.9853 168 | 2018-09-05,5140.7829,984849.6429,979708.86,0.98485,1000000.0,0.9889 169 | 2018-09-06,5140.7829,984063.3829,978922.6,0.984063,1000000.0,0.9848 170 | 2018-09-07,5140.7829,984391.8229,979251.04,0.984392,1000000.0,0.9841 171 | 2018-09-10,3396.1163,978652.4563,975256.34,0.978652,1000000.0,0.9844 172 | 2018-09-11,3396.1163,977747.3063,974351.19,0.977747,1000000.0,0.9787 173 | 2018-09-12,3396.1163,978406.8563,975010.74,0.978407,1000000.0,0.9777 174 | 2018-09-13,3396.1163,981123.0063,977726.89,0.981123,1000000.0,0.9784 175 | 2018-09-14,3396.1163,981773.1063,978376.99,0.981773,1000000.0,0.9811 176 | 2018-09-17,532.2132,974619.3632,974087.15,0.974619,1000000.0,0.9818 177 | 2018-09-18,532.2132,977883.0632,977350.85,0.977883,1000000.0,0.9746 178 | 2018-09-19,532.2132,981646.5232,981114.31,0.981647,1000000.0,0.9779 179 | 2018-09-20,532.2132,982703.8132,982171.6,0.982704,1000000.0,0.9816 180 | 2018-09-21,532.2132,988586.5532,988054.34,0.988587,1000000.0,0.9827 181 | 2018-09-25,1591.473,987458.733,985867.26,0.987459,1000000.0,0.9886 182 | 2018-09-26,1591.473,989286.563,987695.09,0.989287,1000000.0,0.9875 183 | 2018-09-27,1591.473,980683.913,979092.44,0.980684,1000000.0,0.9893 184 | 2018-09-28,1591.473,983396.983,981805.51,0.983397,1000000.0,0.9807 185 | 2018-10-08,1737.8375,971506.6475,969768.81,0.971507,1000000.0,0.9834 186 | 2018-10-09,1737.8375,971607.9375,969870.1,0.971608,1000000.0,0.9715 187 | 2018-10-10,1737.8375,971247.3075,969509.47,0.971247,1000000.0,0.9716 188 | 2018-10-11,1737.8375,945744.7875,944006.95,0.945745,1000000.0,0.9712 189 | 2018-10-12,1737.8375,948608.6375,946870.8,0.948609,1000000.0,0.9457 190 | 2018-10-15,1070.042,944922.802,943852.76,0.944923,1000000.0,0.9486 191 | 2018-10-16,1070.042,938506.652,937436.61,0.938507,1000000.0,0.9449 192 | 2018-10-17,1070.042,936283.172,935213.13,0.936283,1000000.0,0.9385 193 | 2018-10-18,1070.042,926745.352,925675.31,0.926745,1000000.0,0.9363 194 | 2018-10-19,1070.042,933393.142,932323.1,0.933393,1000000.0,0.9267 195 | 2018-10-22,423.548,947873.438,947449.89,0.947873,1000000.0,0.9334 196 | 2018-10-23,423.548,945744.768,945321.22,0.945745,1000000.0,0.9479 197 | 2018-10-24,423.548,949453.598,949030.05,0.949454,1000000.0,0.9457 198 | 2018-10-25,423.548,949811.138,949387.59,0.949811,1000000.0,0.9495 199 | 2018-10-26,423.548,953181.598,952758.05,0.953182,1000000.0,0.9498 200 | 2018-10-29,2186.7116,948893.1116,946706.4,0.948893,1000000.0,0.9532 201 | 2018-10-30,2186.7116,951869.9816,949683.27,0.95187,1000000.0,0.9489 202 | 2018-10-31,2186.7116,955847.1416,953660.43,0.955847,1000000.0,0.9519 203 | 2018-11-01,2186.7116,960574.4016,958387.69,0.960574,1000000.0,0.9558 204 | 2018-11-02,2186.7116,978888.0316,976701.32,0.978888,1000000.0,0.9606 205 | 2018-11-05,2125.4489,981407.0289,979281.58,0.981407,1000000.0,0.9789 206 | 2018-11-06,2125.4489,977341.6189,975216.17,0.977342,1000000.0,0.9814 207 | 2018-11-07,2125.4489,978363.2889,976237.84,0.978363,1000000.0,0.9773 208 | 2018-11-08,2125.4489,976166.9689,974041.52,0.976167,1000000.0,0.9784 209 | 2018-11-09,2125.4489,974187.8889,972062.44,0.974188,1000000.0,0.9762 210 | 2018-11-12,1069.4321,982577.6021,981508.17,0.982578,1000000.0,0.9742 211 | 2018-11-13,1069.4321,990389.0221,989319.59,0.990389,1000000.0,0.9826 212 | 2018-11-14,1069.4321,991224.9921,990155.56,0.991225,1000000.0,0.9904 213 | 2018-11-15,1069.4321,1002513.0221,1001443.59,1.002513,1000000.0,0.9912 214 | 2018-11-16,1069.4321,1007399.9221,1006330.49,1.0074,1000000.0,1.0025 215 | 2018-11-19,383.6318,1009351.8018,1008968.17,1.009352,1000000.0,1.0074 216 | 2018-11-20,383.6318,994787.1918,994403.56,0.994787,1000000.0,1.0094 217 | 2018-11-21,383.6318,994780.8018,994397.17,0.994781,1000000.0,0.9948 218 | 2018-11-22,383.6318,996822.2218,996438.59,0.996822,1000000.0,0.9948 219 | 2018-11-23,383.6318,984452.5418,984068.91,0.984453,1000000.0,0.9968 220 | 2018-11-26,812.7236,984542.7636,983730.04,0.984543,1000000.0,0.9845 221 | 2018-11-27,812.7236,987202.9336,986390.21,0.987203,1000000.0,0.9845 222 | 2018-11-28,812.7236,995008.2936,994195.57,0.995008,1000000.0,0.9872 223 | 2018-11-29,812.7236,987271.5336,986458.81,0.987272,1000000.0,0.995 224 | 2018-11-30,812.7236,987702.0836,986889.36,0.987702,1000000.0,0.9873 225 | 2018-12-03,4680.1483,1003357.9583,998677.81,1.003358,1000000.0,0.9877 226 | 2018-12-04,4680.1483,1005830.7683,1001150.62,1.005831,1000000.0,1.0034 227 | 2018-12-05,4680.1483,1003933.8883,999253.74,1.003934,1000000.0,1.0058 228 | 2018-12-06,4680.1483,997282.8283,992602.68,0.997283,1000000.0,1.0039 229 | 2018-12-07,4680.1483,1000534.2683,995854.12,1.000534,1000000.0,0.9973 230 | 2018-12-10,5446.1897,993982.9697,988536.78,0.993983,1000000.0,1.0005 231 | 2018-12-11,5446.1897,994422.3397,988976.15,0.994422,1000000.0,0.994 232 | 2018-12-12,5446.1897,993585.6997,988139.51,0.993586,1000000.0,0.9944 233 | 2018-12-13,5446.1897,999719.6197,994273.43,0.99972,1000000.0,0.9936 234 | 2018-12-14,5446.1897,992059.7397,986613.55,0.99206,1000000.0,0.9997 235 | 2018-12-17,387.4918,990210.0218,989822.53,0.99021,1000000.0,0.9921 236 | 2018-12-18,387.4918,984734.9918,984347.5,0.984735,1000000.0,0.9902 237 | 2018-12-19,387.4918,983024.3318,982636.84,0.983024,1000000.0,0.9847 238 | 2018-12-20,387.4918,981503.8318,981116.34,0.981504,1000000.0,0.983 239 | 2018-12-21,387.4918,978520.4918,978133.0,0.97852,1000000.0,0.9815 240 | 2018-12-24,5191.4346,981931.9446,976740.51,0.981932,1000000.0,0.9785 241 | 2018-12-25,5191.4346,977891.1346,972699.7,0.977891,1000000.0,0.9819 242 | 2018-12-26,5191.4346,976708.9346,971517.5,0.976709,1000000.0,0.9779 243 | 2018-12-27,5191.4346,976039.2146,970847.78,0.976039,1000000.0,0.9767 244 | 2018-12-28,5191.4346,975151.9046,969960.47,0.975152,1000000.0,0.976 245 | 2019-01-02,6352.9239,975805.0639,969452.14,0.975805,1000000.0,0.9752 246 | 2019-01-03,6352.9239,976809.3739,970456.45,0.976809,1000000.0,0.9758 247 | 2019-01-04,6352.9239,988022.3339,981669.41,0.988022,1000000.0,0.9768 248 | 2019-01-07,5389.4982,1013982.6982,1008593.2,1.013983,1000000.0,0.988 249 | 2019-01-08,5389.4982,1015083.7682,1009694.27,1.015084,1000000.0,1.014 250 | 2019-01-09,5389.4982,1027290.2782,1021900.78,1.02729,1000000.0,1.0151 251 | 2019-01-10,5389.4982,1029524.1282,1024134.63,1.029524,1000000.0,1.0273 252 | 2019-01-11,5389.4982,1038115.8482,1032726.35,1.038116,1000000.0,1.0295 253 | 2019-01-14,7119.7169,1038493.2669,1031373.55,1.038493,1000000.0,1.0381 254 | 2019-01-15,7119.7169,1048022.6669,1040902.95,1.048023,1000000.0,1.0385 255 | 2019-01-16,7119.7169,1052408.2469,1045288.53,1.052408,1000000.0,1.048 256 | 2019-01-17,7119.7169,1046940.1269,1039820.41,1.04694,1000000.0,1.0524 257 | 2019-01-18,7119.7169,1044267.6669,1037147.95,1.044268,1000000.0,1.0469 258 | 2019-01-21,9038.1184,1046786.2384,1037748.12,1.046786,1000000.0,1.0443 259 | 2019-01-22,9038.1184,1042601.1784,1033563.06,1.042601,1000000.0,1.0468 260 | 2019-01-23,9038.1184,1043940.2884,1034902.17,1.04394,1000000.0,1.0426 261 | 2019-01-24,9038.1184,1048898.4084,1039860.29,1.048898,1000000.0,1.0439 262 | 2019-01-25,9038.1184,1053472.6384,1044434.52,1.053473,1000000.0,1.0489 263 | 2019-01-28,7567.68,1045661.14,1038093.46,1.045661,1000000.0,1.0535 264 | 2019-01-29,7567.68,1035682.79,1028115.11,1.035683,1000000.0,1.0457 265 | 2019-01-30,7567.68,1032681.74,1025114.06,1.032682,1000000.0,1.0357 266 | 2019-01-31,7567.68,1029760.99,1022193.31,1.029761,1000000.0,1.0327 267 | 2019-02-01,7567.68,1045220.87,1037653.19,1.045221,1000000.0,1.0298 268 | 2019-02-11,7847.811,1055638.581,1047790.77,1.055639,1000000.0,1.0452 269 | 2019-02-12,7847.811,1061567.901,1053720.09,1.061568,1000000.0,1.0556 270 | 2019-02-13,7847.811,1073115.421,1065267.61,1.073115,1000000.0,1.0616 271 | 2019-02-14,7847.811,1081623.511,1073775.7,1.081624,1000000.0,1.0731 272 | 2019-02-15,7847.811,1084187.671,1076339.86,1.084188,1000000.0,1.0816 273 | 2019-02-18,6585.377,1112483.847,1105898.47,1.112484,1000000.0,1.0842 274 | 2019-02-19,6585.377,1115038.947,1108453.57,1.115039,1000000.0,1.1125 275 | 2019-02-20,6585.377,1126312.017,1119726.64,1.126312,1000000.0,1.115 276 | 2019-02-21,6585.377,1127867.327,1121281.95,1.127867,1000000.0,1.1263 277 | 2019-02-22,6585.377,1137917.007,1131331.63,1.137917,1000000.0,1.1279 278 | 2019-02-25,4535.5033,1161670.8133,1157135.31,1.161671,1000000.0,1.1379 279 | 2019-02-26,4535.5033,1170961.0933,1166425.59,1.170961,1000000.0,1.1617 280 | 2019-02-27,4535.5033,1170544.3233,1166008.82,1.170544,1000000.0,1.171 281 | 2019-02-28,4535.5033,1173604.9933,1169069.49,1.173605,1000000.0,1.1705 282 | 2019-03-01,4535.5033,1181436.3433,1176900.84,1.181436,1000000.0,1.1736 283 | 2019-03-04,9805.087,1193919.537,1184114.45,1.19392,1000000.0,1.1814 284 | 2019-03-05,9805.087,1224998.007,1215192.92,1.224998,1000000.0,1.1939 285 | 2019-03-06,9805.087,1267286.097,1257481.01,1.267286,1000000.0,1.225 286 | 2019-03-07,9805.087,1289072.087,1279267.0,1.289072,1000000.0,1.2673 287 | 2019-03-08,9805.087,1267207.277,1257402.19,1.267207,1000000.0,1.2891 288 | 2019-03-11,6739.0495,1302638.8395,1295899.79,1.302639,1000000.0,1.2672 289 | 2019-03-12,6739.0495,1319171.2095,1312432.16,1.319171,1000000.0,1.3026 290 | 2019-03-13,6739.0495,1299095.6695,1292356.62,1.299096,1000000.0,1.3192 291 | 2019-03-14,6739.0495,1270341.2895,1263602.24,1.270341,1000000.0,1.2991 292 | 2019-03-15,6739.0495,1285369.5295,1278630.48,1.28537,1000000.0,1.2703 293 | 2019-03-18,5551.1131,1311628.7331,1306077.62,1.311629,1000000.0,1.2854 294 | 2019-03-19,5551.1131,1335105.6731,1329554.56,1.335106,1000000.0,1.3116 295 | 2019-03-20,5551.1131,1336897.9831,1331346.87,1.336898,1000000.0,1.3351 296 | 2019-03-21,5551.1131,1352242.6831,1346691.57,1.352243,1000000.0,1.3369 297 | 2019-03-22,5551.1131,1343254.2431,1337703.13,1.343254,1000000.0,1.3522 298 | 2019-03-25,4826.8963,1326768.8263,1321941.93,1.326769,1000000.0,1.3433 299 | 2019-03-26,4826.8963,1292055.2263,1287228.33,1.292055,1000000.0,1.3268 300 | 2019-03-27,4826.8963,1291764.6763,1286937.78,1.291765,1000000.0,1.2921 301 | 2019-03-28,4826.8963,1290472.0963,1285645.2,1.290472,1000000.0,1.2918 302 | 2019-03-29,4826.8963,1309904.3663,1305077.47,1.309904,1000000.0,1.2905 303 | 2019-04-01,6739.9242,1336774.1942,1330034.27,1.336774,1000000.0,1.3099 304 | 2019-04-02,6739.9242,1345222.2642,1338482.34,1.345222,1000000.0,1.3368 305 | 2019-04-03,6739.9242,1353776.7242,1347036.8,1.353777,1000000.0,1.3452 306 | 2019-04-04,6739.9242,1372204.8642,1365464.94,1.372205,1000000.0,1.3538 307 | 2019-04-08,8517.0827,1379295.8427,1370778.76,1.379296,1000000.0,1.3722 308 | 2019-04-09,8517.0827,1379483.4427,1370966.36,1.379483,1000000.0,1.3793 309 | 2019-04-10,8517.0827,1376182.5827,1367665.5,1.376183,1000000.0,1.3795 310 | 2019-04-11,8517.0827,1359375.9327,1350858.85,1.359376,1000000.0,1.3762 311 | 2019-04-12,8517.0827,1366954.8327,1358437.75,1.366955,1000000.0,1.3594 312 | 2019-04-15,8903.0824,1349305.8424,1340402.76,1.349306,1000000.0,1.367 313 | 2019-04-16,8903.0824,1354716.7924,1345813.71,1.354717,1000000.0,1.3493 314 | 2019-04-17,8903.0824,1361471.8624,1352568.78,1.361472,1000000.0,1.3547 315 | 2019-04-18,8903.0824,1369661.3324,1360758.25,1.369661,1000000.0,1.3615 316 | 2019-04-19,8903.0824,1366582.4324,1357679.35,1.366582,1000000.0,1.3697 317 | 2019-04-22,10457.0684,1380008.3884,1369551.32,1.380008,1000000.0,1.3666 318 | 2019-04-23,10457.0684,1360814.6284,1350357.56,1.360815,1000000.0,1.38 319 | 2019-04-24,10457.0684,1354501.5984,1344044.53,1.354502,1000000.0,1.3608 320 | 2019-04-25,10457.0684,1359030.9884,1348573.92,1.359031,1000000.0,1.3545 321 | 2019-04-26,10457.0684,1362485.8884,1352028.82,1.362486,1000000.0,1.359 322 | 2019-04-29,10709.8588,1332067.6888,1321357.83,1.332068,1000000.0,1.3625 323 | 2019-04-30,10709.8588,1340674.7288,1329964.87,1.340675,1000000.0,1.3321 324 | 2019-05-06,5424.0423,1280399.2823,1274975.24,1.280399,1000000.0,1.3407 325 | 2019-05-07,5424.0423,1296638.4823,1291214.44,1.296638,1000000.0,1.2804 326 | 2019-05-08,5424.0423,1313112.4623,1307688.42,1.313112,1000000.0,1.2966 327 | 2019-05-09,5424.0423,1310794.1423,1305370.1,1.310794,1000000.0,1.3131 328 | 2019-05-10,5424.0423,1339970.5623,1334546.52,1.339971,1000000.0,1.3108 329 | 2019-05-13,6425.1671,1336111.8071,1329686.64,1.336112,1000000.0,1.34 330 | 2019-05-14,6425.1671,1341183.4771,1334758.31,1.341183,1000000.0,1.3361 331 | 2019-05-15,6425.1671,1361066.0471,1354640.88,1.361066,1000000.0,1.3412 332 | 2019-05-16,6425.1671,1366287.3671,1359862.2,1.366287,1000000.0,1.3611 333 | 2019-05-17,6425.1671,1337918.2271,1331493.06,1.337918,1000000.0,1.3663 334 | 2019-05-20,6048.1966,1327225.4266,1321177.23,1.327225,1000000.0,1.3379 335 | 2019-05-21,6048.1966,1336005.9766,1329957.78,1.336006,1000000.0,1.3272 336 | 2019-05-22,6048.1966,1335675.2666,1329627.07,1.335675,1000000.0,1.336 337 | 2019-05-23,6048.1966,1327078.5066,1321030.31,1.327079,1000000.0,1.3357 338 | 2019-05-24,6048.1966,1327153.0866,1321104.89,1.327153,1000000.0,1.3271 339 | 2019-05-27,6298.7914,1333408.4414,1327109.65,1.333408,1000000.0,1.3272 340 | 2019-05-28,6298.7914,1333065.8414,1326767.05,1.333066,1000000.0,1.3334 341 | 2019-05-29,6298.7914,1333043.0414,1326744.25,1.333043,1000000.0,1.3331 342 | 2019-05-30,6298.7914,1326888.7714,1320589.98,1.326889,1000000.0,1.333 343 | 2019-05-31,6298.7914,1323181.9514,1316883.16,1.323182,1000000.0,1.3269 344 | 2019-06-03,1051.9434,1314386.4634,1313334.52,1.314386,1000000.0,1.3232 345 | 2019-06-04,1051.9434,1301337.4534,1300285.51,1.301337,1000000.0,1.3144 346 | 2019-06-05,1051.9434,1302024.8334,1300972.89,1.302025,1000000.0,1.3013 347 | 2019-06-06,1051.9434,1288956.4634,1287904.52,1.288956,1000000.0,1.302 348 | 2019-06-10,229.8682,1292559.2082,1292329.34,1.292559,1000000.0,1.289 349 | 2019-06-11,229.8682,1323652.5582,1323422.69,1.323653,1000000.0,1.2926 350 | 2019-06-12,229.8682,1318192.7182,1317962.85,1.318193,1000000.0,1.3237 351 | 2019-06-13,229.8682,1321665.0382,1321435.17,1.321665,1000000.0,1.3182 352 | 2019-06-14,229.8682,1311491.6982,1311261.83,1.311492,1000000.0,1.3217 353 | 2019-06-17,415.9894,1309627.0594,1309211.07,1.309627,1000000.0,1.3115 354 | 2019-06-18,415.9894,1306316.1794,1305900.19,1.306316,1000000.0,1.3096 355 | 2019-06-19,415.9894,1315228.2694,1314812.28,1.315228,1000000.0,1.3063 356 | 2019-06-20,415.9894,1335285.6294,1334869.64,1.335286,1000000.0,1.3152 357 | 2019-06-21,415.9894,1348033.1294,1347617.14,1.348033,1000000.0,1.3353 358 | 2019-06-24,10339.9148,1346434.3448,1336094.43,1.346434,1000000.0,1.348 359 | 2019-06-25,10339.9148,1346651.5948,1336311.68,1.346652,1000000.0,1.3464 360 | 2019-06-26,10339.9148,1353389.5848,1343049.67,1.35339,1000000.0,1.3467 361 | 2019-06-27,10339.9148,1358812.1848,1348472.27,1.358812,1000000.0,1.3534 362 | 2019-06-28,10339.9148,1370039.8548,1359699.94,1.37004,1000000.0,1.3588 363 | 2019-07-01,12591.6509,1413770.8309,1401179.18,1.413771,1000000.0,1.37 364 | 2019-07-02,12591.6509,1419897.4009,1407305.75,1.419897,1000000.0,1.4138 365 | 2019-07-03,12591.6509,1423376.2909,1410784.64,1.423376,1000000.0,1.4199 366 | 2019-07-04,12591.6509,1429161.4409,1416569.79,1.429161,1000000.0,1.4234 367 | 2019-07-05,12591.6509,1419524.8709,1406933.22,1.419525,1000000.0,1.4292 368 | 2019-07-08,8839.7903,1405515.6003,1396675.81,1.405516,1000000.0,1.4195 369 | 2019-07-09,8839.7903,1406687.3403,1397847.55,1.406687,1000000.0,1.4055 370 | 2019-07-10,8839.7903,1406128.0603,1397288.27,1.406128,1000000.0,1.4067 371 | 2019-07-11,8839.7903,1406560.2403,1397720.45,1.40656,1000000.0,1.4061 372 | 2019-07-12,8839.7903,1409154.9003,1400315.11,1.409155,1000000.0,1.4066 373 | 2019-07-15,4470.3711,1413845.3911,1409375.02,1.413845,1000000.0,1.4092 374 | 2019-07-16,4470.3711,1414762.7611,1410292.39,1.414763,1000000.0,1.4138 375 | 2019-07-17,4470.3711,1421414.0611,1416943.69,1.421414,1000000.0,1.4148 376 | 2019-07-18,4470.3711,1412315.2011,1407844.83,1.412315,1000000.0,1.4214 377 | 2019-07-19,4470.3711,1410787.2711,1406316.9,1.410787,1000000.0,1.4123 378 | 2019-07-22,861.9111,1390261.1711,1389399.26,1.390261,1000000.0,1.4108 379 | 2019-07-23,861.9111,1397700.3811,1396838.47,1.3977,1000000.0,1.3903 380 | 2019-07-24,861.9111,1401372.3911,1400510.48,1.401372,1000000.0,1.3977 381 | 2019-07-25,861.9111,1402846.8611,1401984.95,1.402847,1000000.0,1.4014 382 | 2019-07-26,861.9111,1407621.7011,1406759.79,1.407622,1000000.0,1.4028 383 | 2019-07-29,2546.8941,1411665.9041,1409119.01,1.411666,1000000.0,1.4076 384 | 2019-07-30,2546.8941,1421714.7741,1419167.88,1.421715,1000000.0,1.4117 385 | 2019-07-31,2546.8941,1421287.2641,1418740.37,1.421287,1000000.0,1.4217 386 | 2019-08-01,2546.8941,1417872.0541,1415325.16,1.417872,1000000.0,1.4213 387 | 2019-08-02,2546.8941,1412373.5841,1409826.69,1.412374,1000000.0,1.4179 388 | 2019-08-05,5084.6328,1403775.2328,1398690.6,1.403775,1000000.0,1.4124 389 | 2019-08-06,5084.6328,1391549.4328,1386464.8,1.391549,1000000.0,1.4038 390 | 2019-08-07,5084.6328,1400858.6528,1395774.02,1.400859,1000000.0,1.3915 391 | 2019-08-08,5084.6328,1402795.1528,1397710.52,1.402795,1000000.0,1.4009 392 | 2019-08-09,5084.6328,1403389.7328,1398305.1,1.40339,1000000.0,1.4028 393 | 2019-08-12,7018.6013,1406340.7113,1399322.11,1.406341,1000000.0,1.4034 394 | 2019-08-13,7018.6013,1405927.5413,1398908.94,1.405928,1000000.0,1.4063 395 | 2019-08-14,7018.6013,1408852.5813,1401833.98,1.408853,1000000.0,1.4059 396 | 2019-08-15,7018.6013,1408656.0313,1401637.43,1.408656,1000000.0,1.4089 397 | 2019-08-16,7018.6013,1417583.4413,1410564.84,1.417583,1000000.0,1.4087 398 | 2019-08-19,4863.6696,1437519.2196,1432655.55,1.437519,1000000.0,1.4176 399 | 2019-08-20,4863.6696,1446834.4696,1441970.8,1.446834,1000000.0,1.4375 400 | 2019-08-21,4863.6696,1444983.5896,1440119.92,1.444984,1000000.0,1.4468 401 | 2019-08-22,4863.6696,1445398.9796,1440535.31,1.445399,1000000.0,1.445 402 | 2019-08-23,4863.6696,1450816.1796,1445952.51,1.450816,1000000.0,1.4454 403 | 2019-08-26,5902.056,1443260.806,1437358.75,1.443261,1000000.0,1.4508 404 | 2019-08-27,5902.056,1457601.956,1451699.9,1.457602,1000000.0,1.4433 405 | 2019-08-28,5902.056,1456522.566,1450620.51,1.456523,1000000.0,1.4576 406 | 2019-08-29,5902.056,1461322.566,1455420.51,1.461323,1000000.0,1.4565 407 | 2019-08-30,5902.056,1455914.306,1450012.25,1.455914,1000000.0,1.4613 408 | 2019-09-02,7863.9128,1465142.9728,1457279.06,1.465143,1000000.0,1.4559 409 | 2019-09-03,7863.9128,1470984.1828,1463120.27,1.470984,1000000.0,1.4651 410 | 2019-09-04,7863.9128,1478283.9328,1470420.02,1.478284,1000000.0,1.471 411 | 2019-09-05,7863.9128,1487330.4628,1479466.55,1.48733,1000000.0,1.4783 412 | 2019-09-06,7863.9128,1494947.8228,1487083.91,1.494948,1000000.0,1.4873 413 | 2019-09-09,8609.1371,1511094.2371,1502485.1,1.511094,1000000.0,1.4949 414 | 2019-09-10,8609.1371,1528207.5671,1519598.43,1.528208,1000000.0,1.5111 415 | 2019-09-11,8609.1371,1520184.6671,1511575.53,1.520185,1000000.0,1.5282 416 | 2019-09-12,8609.1371,1512088.6371,1503479.5,1.512089,1000000.0,1.5202 417 | 2019-09-16,7359.892,1511482.622,1504122.73,1.511483,1000000.0,1.5121 418 | 2019-09-17,7359.892,1489911.862,1482551.97,1.489912,1000000.0,1.5115 419 | 2019-09-18,7359.892,1492393.382,1485033.49,1.492393,1000000.0,1.4899 420 | 2019-09-19,7359.892,1495515.962,1488156.07,1.495516,1000000.0,1.4924 421 | 2019-09-20,7359.892,1505593.272,1498233.38,1.505593,1000000.0,1.4955 422 | 2019-09-23,11086.6765,1514183.6965,1503097.02,1.514184,1000000.0,1.5056 423 | 2019-09-24,11086.6765,1510892.1265,1499805.45,1.510892,1000000.0,1.5142 424 | 2019-09-25,11086.6765,1501180.8665,1490094.19,1.501181,1000000.0,1.5109 425 | 2019-09-26,11086.6765,1494017.7865,1482931.11,1.494018,1000000.0,1.5012 426 | 2019-09-27,11086.6765,1498409.8665,1487323.19,1.49841,1000000.0,1.494 427 | 2019-09-30,5475.3829,1493549.2229,1488073.84,1.493549,1000000.0,1.4984 428 | 2019-10-08,3572.2104,1494569.9704,1490997.76,1.49457,1000000.0,1.4935 429 | 2019-10-09,3572.2104,1501001.8804,1497429.67,1.501002,1000000.0,1.4946 430 | 2019-10-10,3572.2104,1511718.9904,1508146.78,1.511719,1000000.0,1.501 431 | 2019-10-11,3572.2104,1518107.0304,1514534.82,1.518107,1000000.0,1.5117 432 | 2019-10-14,11389.706,1527488.066,1516098.36,1.527488,1000000.0,1.5181 433 | 2019-10-15,11389.706,1522361.426,1510971.72,1.522361,1000000.0,1.5275 434 | 2019-10-16,11389.706,1522296.066,1510906.36,1.522296,1000000.0,1.5224 435 | 2019-10-17,11389.706,1523329.776,1511940.07,1.52333,1000000.0,1.5223 436 | 2019-10-18,11389.706,1518520.846,1507131.14,1.518521,1000000.0,1.5233 437 | 2019-10-21,8953.5538,1508559.7538,1499606.2,1.50856,1000000.0,1.5185 438 | 2019-10-22,8953.5538,1512490.4138,1503536.86,1.51249,1000000.0,1.5086 439 | 2019-10-23,8953.5538,1516692.0138,1507738.46,1.516692,1000000.0,1.5125 440 | 2019-10-24,8953.5538,1511439.6338,1502486.08,1.51144,1000000.0,1.5167 441 | 2019-10-25,8953.5538,1511996.2038,1503042.65,1.511996,1000000.0,1.5114 442 | 2019-10-28,9004.2622,1524428.2022,1515423.94,1.524428,1000000.0,1.512 443 | 2019-10-29,9004.2622,1516145.0522,1507140.79,1.516145,1000000.0,1.5244 444 | 2019-10-30,9004.2622,1505465.3722,1496461.11,1.505465,1000000.0,1.5161 445 | 2019-10-31,9004.2622,1502180.1822,1493175.92,1.50218,1000000.0,1.5055 446 | 2019-11-01,9004.2622,1507256.8422,1498252.58,1.507257,1000000.0,1.5022 447 | 2019-11-04,6837.9663,1510393.8463,1503555.88,1.510394,1000000.0,1.5073 448 | 2019-11-05,6837.9663,1514675.0063,1507837.04,1.514675,1000000.0,1.5104 449 | 2019-11-06,6837.9663,1513981.7463,1507143.78,1.513982,1000000.0,1.5147 450 | 2019-11-07,6837.9663,1539940.8663,1533102.9,1.539941,1000000.0,1.514 451 | 2019-11-08,6837.9663,1526208.8063,1519370.84,1.526209,1000000.0,1.5399 452 | 2019-11-11,6659.5484,1515582.1484,1508922.6,1.515582,1000000.0,1.5262 453 | 2019-11-12,6659.5484,1516276.1584,1509616.61,1.516276,1000000.0,1.5156 454 | 2019-11-13,6659.5484,1511676.3684,1505016.82,1.511676,1000000.0,1.5163 455 | 2019-11-14,6659.5484,1513563.8684,1506904.32,1.513564,1000000.0,1.5117 456 | 2019-11-15,6659.5484,1501622.9784,1494963.43,1.501623,1000000.0,1.5136 457 | 2019-11-18,8215.1765,1506629.9665,1498414.79,1.50663,1000000.0,1.5016 458 | 2019-11-19,8215.1765,1519209.7865,1510994.61,1.51921,1000000.0,1.5066 459 | 2019-11-20,8215.1765,1524127.1265,1515911.95,1.524127,1000000.0,1.5192 460 | 2019-11-21,8215.1765,1519640.9965,1511425.82,1.519641,1000000.0,1.5241 461 | 2019-11-22,8215.1765,1513733.5965,1505518.42,1.513734,1000000.0,1.5196 462 | 2019-11-25,4777.6812,1512144.7312,1507367.05,1.512145,1000000.0,1.5137 463 | 2019-11-26,4777.6812,1517284.1912,1512506.51,1.517284,1000000.0,1.5121 464 | 2019-11-27,4777.6812,1515750.4912,1510972.81,1.51575,1000000.0,1.5173 465 | 2019-11-28,4777.6812,1513273.9212,1508496.24,1.513274,1000000.0,1.5158 466 | 2019-11-29,4777.6812,1511201.1612,1506423.48,1.511201,1000000.0,1.5133 467 | 2019-12-02,4782.1174,1510469.3674,1505687.25,1.510469,1000000.0,1.5112 468 | 2019-12-03,4782.1174,1513945.7474,1509163.63,1.513946,1000000.0,1.5105 469 | 2019-12-04,4782.1174,1520994.7174,1516212.6,1.520995,1000000.0,1.5139 470 | 2019-12-05,4782.1174,1525595.7674,1520813.65,1.525596,1000000.0,1.521 471 | 2019-12-06,4782.1174,1533997.1274,1529215.01,1.533997,1000000.0,1.5256 472 | 2019-12-09,2828.4024,1537322.2724,1534493.87,1.537322,1000000.0,1.534 473 | 2019-12-10,2828.4024,1555871.3824,1553042.98,1.555871,1000000.0,1.5373 474 | 2019-12-11,2828.4024,1553721.6824,1550893.28,1.553722,1000000.0,1.5559 475 | 2019-12-12,2828.4024,1552087.8924,1549259.49,1.552088,1000000.0,1.5537 476 | 2019-12-13,2828.4024,1561380.7524,1558552.35,1.561381,1000000.0,1.5521 477 | 2019-12-16,9219.202,1581219.582,1572000.38,1.58122,1000000.0,1.5614 478 | 2019-12-17,9219.202,1597345.342,1588126.14,1.597345,1000000.0,1.5812 479 | 2019-12-18,9219.202,1602072.952,1592853.75,1.602073,1000000.0,1.5973 480 | 2019-12-19,9219.202,1607927.862,1598708.66,1.607928,1000000.0,1.6021 481 | 2019-12-20,9219.202,1608618.642,1599399.44,1.608619,1000000.0,1.6079 482 | 2019-12-23,5036.0357,1588811.9357,1583775.9,1.588812,1000000.0,1.6086 483 | 2019-12-24,5036.0357,1612690.4857,1607654.45,1.61269,1000000.0,1.5888 484 | 2019-12-25,5036.0357,1614242.0957,1609206.06,1.614242,1000000.0,1.6127 485 | 2019-12-26,5036.0357,1617764.0157,1612727.98,1.617764,1000000.0,1.6142 486 | 2019-12-27,5036.0357,1617839.6557,1612803.62,1.61784,1000000.0,1.6178 487 | 2019-12-30,3943.8821,1620287.0721,1616343.19,1.620287,1000000.0,1.6178 488 | 2019-12-31,3943.8821,1626190.7621,1622246.88,1.626191,1000000.0,1.6203 489 | 2020-01-02,3943.8821,1650817.0121,1646873.13,1.650817,1000000.0,1.6262 490 | 2020-01-03,3943.8821,1659406.0921,1655462.21,1.659406,1000000.0,1.6508 491 | 2020-01-06,5620.6909,1666785.2009,1661164.51,1.666785,1000000.0,1.6594 492 | 2020-01-07,5620.6909,1678917.1709,1673296.48,1.678917,1000000.0,1.6668 493 | 2020-01-08,5620.6909,1663400.3909,1657779.7,1.6634,1000000.0,1.6789 494 | 2020-01-09,5620.6909,1692015.0709,1686394.38,1.692015,1000000.0,1.6634 495 | 2020-01-10,5620.6909,1685900.9709,1680280.28,1.685901,1000000.0,1.692 496 | 2020-01-13,7075.818,1685201.398,1678125.58,1.685201,1000000.0,1.6859 497 | 2020-01-14,7075.818,1693665.028,1686589.21,1.693665,1000000.0,1.6852 498 | 2020-01-15,7075.818,1690284.778,1683208.96,1.690285,1000000.0,1.6937 499 | 2020-01-16,7075.818,1677932.078,1670856.26,1.677932,1000000.0,1.6903 500 | 2020-01-17,7075.818,1670749.348,1663673.53,1.670749,1000000.0,1.6779 501 | 2020-01-20,1231.3477,1673565.7777,1672334.43,1.673566,1000000.0,1.6707 502 | 2020-01-21,1231.3477,1673099.7877,1671868.44,1.6731,1000000.0,1.6736 503 | 2020-01-22,1231.3477,1669855.7477,1668624.4,1.669856,1000000.0,1.6731 504 | 2020-01-23,1231.3477,1644576.2777,1643344.93,1.644576,1000000.0,1.6699 505 | 2020-02-03,11758.6401,1576349.1801,1564590.54,1.576349,1000000.0,1.6446 506 | 2020-02-04,11758.6401,1625110.0001,1613351.36,1.62511,1000000.0,1.5763 507 | 2020-02-05,11758.6401,1659156.0701,1647397.43,1.659156,1000000.0,1.6251 508 | 2020-02-06,11758.6401,1679671.3801,1667912.74,1.679671,1000000.0,1.6592 509 | 2020-02-07,11758.6401,1690832.0501,1679073.41,1.690832,1000000.0,1.6797 510 | 2020-02-10,9859.536,1706564.356,1696704.82,1.706564,1000000.0,1.6908 511 | 2020-02-11,9859.536,1708396.146,1698536.61,1.708396,1000000.0,1.7066 512 | 2020-02-12,9859.536,1723609.666,1713750.13,1.72361,1000000.0,1.7084 513 | 2020-02-13,9859.536,1721398.336,1711538.8,1.721398,1000000.0,1.7236 514 | 2020-02-14,9859.536,1726211.096,1716351.56,1.726211,1000000.0,1.7214 515 | 2020-02-17,6969.6123,1749631.4023,1742661.79,1.749631,1000000.0,1.7262 516 | 2020-02-18,6969.6123,1770015.4223,1763045.81,1.770015,1000000.0,1.7496 517 | 2020-02-19,6969.6123,1768964.7523,1761995.14,1.768965,1000000.0,1.77 518 | 2020-02-20,6969.6123,1792720.2123,1785750.6,1.79272,1000000.0,1.769 519 | 2020-02-21,6969.6123,1805955.8823,1798986.27,1.805956,1000000.0,1.7927 520 | 2020-02-24,7283.6259,1819900.0459,1812616.42,1.8199,1000000.0,1.806 521 | 2020-02-25,7283.6259,1813379.2559,1806095.63,1.813379,1000000.0,1.8199 522 | 2020-02-26,7283.6259,1788938.2559,1781654.63,1.788938,1000000.0,1.8134 523 | 2020-02-27,7283.6259,1785321.5159,1778037.89,1.785322,1000000.0,1.7889 524 | 2020-02-28,7283.6259,1746038.2859,1738754.66,1.746038,1000000.0,1.7853 525 | 2020-03-02,7228.0942,1780926.7242,1773698.63,1.780927,1000000.0,1.746 526 | 2020-03-03,7228.0942,1791357.8642,1784129.77,1.791358,1000000.0,1.7809 527 | 2020-03-04,7228.0942,1792868.8242,1785640.73,1.792869,1000000.0,1.7914 528 | 2020-03-05,7228.0942,1819483.8242,1812255.73,1.819484,1000000.0,1.7929 529 | 2020-03-06,7228.0942,1829334.8042,1822106.71,1.829335,1000000.0,1.8195 530 | 2020-03-09,2629.0103,1786392.4703,1783763.46,1.786392,1000000.0,1.8293 531 | 2020-03-10,2629.0103,1817008.7003,1814379.69,1.817009,1000000.0,1.7864 532 | 2020-03-11,2629.0103,1817678.7903,1815049.78,1.817679,1000000.0,1.817 533 | 2020-03-12,2629.0103,1831053.4403,1828424.43,1.831053,1000000.0,1.8177 534 | 2020-03-13,2629.0103,1916051.9103,1913422.9,1.916052,1000000.0,1.8311 535 | 2020-03-16,12423.0874,1977254.2374,1964831.15,1.977254,1000000.0,1.9161 536 | 2020-03-17,12423.0874,2044712.9574,2032289.87,2.044713,1000000.0,1.9773 537 | 2020-03-18,12423.0874,2017821.7374,2005398.65,2.017822,1000000.0,2.0447 538 | 2020-03-19,12423.0874,2066049.7074,2053626.62,2.06605,1000000.0,2.0178 539 | 2020-03-20,12423.0874,2181712.9674,2169289.88,2.181713,1000000.0,2.066 540 | 2020-03-23,9354.4186,2015062.8486,2005708.43,2.015063,1000000.0,2.1817 541 | 2020-03-24,9354.4186,2036075.5986,2026721.18,2.036076,1000000.0,2.0151 542 | 2020-03-25,9354.4186,2085161.4286,2075807.01,2.085161,1000000.0,2.0361 543 | 2020-03-26,9354.4186,2077683.9886,2068329.57,2.077684,1000000.0,2.0852 544 | 2020-03-27,9354.4186,2052273.4586,2042919.04,2.052273,1000000.0,2.0777 545 | 2020-03-30,6859.7565,2044911.7065,2038051.95,2.044912,1000000.0,2.0523 546 | 2020-03-31,6859.7565,2040400.1665,2033540.41,2.0404,1000000.0,2.0449 547 | 2020-04-01,6859.7565,2043748.3965,2036888.64,2.043748,1000000.0,2.0404 548 | 2020-04-02,6859.7565,2052834.7065,2045974.95,2.052835,1000000.0,2.0437 549 | 2020-04-03,6859.7565,2033437.0565,2026577.3,2.033437,1000000.0,2.0528 550 | 2020-04-07,9800.747,2059282.507,2049481.76,2.059283,1000000.0,2.0334 551 | 2020-04-08,9800.747,2046201.987,2036401.24,2.046202,1000000.0,2.0593 552 | 2020-04-09,9800.747,2051158.047,2041357.3,2.051158,1000000.0,2.0462 553 | 2020-04-10,9800.747,2015841.857,2006041.11,2.015842,1000000.0,2.0512 554 | 2020-04-13,9312.8582,1984685.3582,1975372.5,1.984685,1000000.0,2.0158 555 | 2020-04-14,9312.8582,2024684.1982,2015371.34,2.024684,1000000.0,1.9847 556 | 2020-04-15,9312.8582,2046399.0182,2037086.16,2.046399,1000000.0,2.0247 557 | 2020-04-16,9312.8582,2089794.9982,2080482.14,2.089795,1000000.0,2.0464 558 | 2020-04-17,9312.8582,2068025.5782,2058712.72,2.068026,1000000.0,2.0898 559 | 2020-04-20,10081.2774,2097899.4174,2087818.14,2.097899,1000000.0,2.068 560 | 2020-04-21,10081.2774,2091684.7574,2081603.48,2.091685,1000000.0,2.0979 561 | 2020-04-22,10081.2774,2101967.3574,2091886.08,2.101967,1000000.0,2.0917 562 | 2020-04-23,10081.2774,2116290.7174,2106209.44,2.116291,1000000.0,2.102 563 | 2020-04-24,10081.2774,2097709.2474,2087627.97,2.097709,1000000.0,2.1163 564 | 2020-04-27,7638.5119,2092979.2219,2085340.71,2.092979,1000000.0,2.0977 565 | 2020-04-28,7638.5119,2073964.2019,2066325.69,2.073964,1000000.0,2.093 566 | 2020-04-29,7638.5119,2064747.4219,2057108.91,2.064747,1000000.0,2.074 567 | 2020-04-30,7638.5119,2081497.8519,2073859.34,2.081498,1000000.0,2.0647 568 | 2020-05-06,1923.4763,2089027.7363,2087104.26,2.089028,1000000.0,2.0815 569 | 2020-05-07,1923.4763,2077148.3863,2075224.91,2.077148,1000000.0,2.089 570 | 2020-05-08,1923.4763,2084071.2763,2082147.8,2.084071,1000000.0,2.0771 571 | 2020-05-11,4063.6412,2083450.9812,2079387.34,2.083451,1000000.0,2.0841 572 | 2020-05-12,4063.6412,2079554.9212,2075491.28,2.079555,1000000.0,2.0835 573 | 2020-05-13,4063.6412,2080486.6212,2076422.98,2.080487,1000000.0,2.0796 574 | 2020-05-14,4063.6412,2062068.0312,2058004.39,2.062068,1000000.0,2.0805 575 | 2020-05-15,4063.6412,2046912.1812,2042848.54,2.046912,1000000.0,2.0621 576 | 2020-05-18,3708.7458,2019707.5658,2015998.82,2.019708,1000000.0,2.0469 577 | 2020-05-19,3708.7458,2026519.5258,2022810.78,2.02652,1000000.0,2.0197 578 | 2020-05-20,3708.7458,2003891.0558,2000182.31,2.003891,1000000.0,2.0265 579 | 2020-05-21,3708.7458,1999166.2358,1995457.49,1.999166,1000000.0,2.0039 580 | 2020-05-22,3708.7458,1984004.0858,1980295.34,1.984004,1000000.0,1.9992 581 | 2020-05-25,1111.2774,1974172.5774,1973061.3,1.974173,1000000.0,1.984 582 | 2020-05-26,1111.2774,1994718.6274,1993607.35,1.994719,1000000.0,1.9742 583 | 2020-05-27,1111.2774,2003485.0874,2002373.81,2.003485,1000000.0,1.9947 584 | 2020-05-28,1111.2774,2001411.4074,2000300.13,2.001411,1000000.0,2.0035 585 | 2020-05-29,1111.2774,2016412.6874,2015301.41,2.016413,1000000.0,2.0014 586 | 2020-06-01,1852.9938,2044874.8638,2043021.87,2.044875,1000000.0,2.0164 587 | 2020-06-02,1852.9938,2052078.7038,2050225.71,2.052079,1000000.0,2.0449 588 | 2020-06-03,1852.9938,2040292.3638,2038439.37,2.040292,1000000.0,2.0521 589 | 2020-06-04,1852.9938,2043876.0038,2042023.01,2.043876,1000000.0,2.0403 590 | 2020-06-05,1852.9938,2057948.9138,2056095.92,2.057949,1000000.0,2.0439 591 | 2020-06-08,6691.1571,2057374.1071,2050682.95,2.057374,1000000.0,2.0579 592 | 2020-06-09,6691.1571,2059039.7271,2052348.57,2.05904,1000000.0,2.0574 593 | 2020-06-10,6691.1571,2055781.3271,2049090.17,2.055781,1000000.0,2.059 594 | 2020-06-11,6691.1571,2052949.2071,2046258.05,2.052949,1000000.0,2.0558 595 | 2020-06-12,6691.1571,2055010.1971,2048319.04,2.05501,1000000.0,2.0529 596 | 2020-06-15,6103.7472,2055809.3672,2049705.62,2.055809,1000000.0,2.055 597 | 2020-06-16,6103.7472,2068053.6472,2061949.9,2.068054,1000000.0,2.0558 598 | 2020-06-17,6103.7472,2076617.5872,2070513.84,2.076618,1000000.0,2.0681 599 | 2020-06-18,6103.7472,2073629.0672,2067525.32,2.073629,1000000.0,2.0766 600 | 2020-06-19,6103.7472,2072540.3172,2066436.57,2.07254,1000000.0,2.0736 601 | 2020-06-22,7264.0911,2067443.7511,2060179.66,2.067444,1000000.0,2.0725 602 | 2020-06-23,7264.0911,2060394.0011,2053129.91,2.060394,1000000.0,2.0674 603 | 2020-06-24,7264.0911,2053114.8811,2045850.79,2.053115,1000000.0,2.0604 604 | 2020-06-29,8057.4996,2041954.4896,2033896.99,2.041954,1000000.0,2.0531 605 | 2020-06-30,8057.4996,2050161.7196,2042104.22,2.050162,1000000.0,2.042 606 | 2020-07-01,8057.4996,2056920.0596,2048862.56,2.05692,1000000.0,2.0502 607 | 2020-07-02,8057.4996,2085766.4296,2077708.93,2.085766,1000000.0,2.0569 608 | 2020-07-03,8057.4996,2111134.8396,2103077.34,2.111135,1000000.0,2.0858 609 | 2020-07-06,9795.2961,2171323.6961,2161528.4,2.171324,1000000.0,2.1111 610 | 2020-07-07,9795.2961,2176239.8161,2166444.52,2.17624,1000000.0,2.1713 611 | 2020-07-08,9795.2961,2186791.5461,2176996.25,2.186792,1000000.0,2.1762 612 | 2020-07-09,9795.2961,2204786.8961,2194991.6,2.204787,1000000.0,2.1868 613 | 2020-07-10,9795.2961,2190617.2161,2180821.92,2.190617,1000000.0,2.2048 614 | 2020-07-13,7363.8941,2230019.2641,2222655.37,2.230019,1000000.0,2.1906 615 | 2020-07-14,7363.8941,2220566.2441,2213202.35,2.220566,1000000.0,2.23 616 | 2020-07-15,7363.8941,2202465.4841,2195101.59,2.202465,1000000.0,2.2206 617 | 2020-07-16,7363.8941,2143070.3141,2135706.42,2.14307,1000000.0,2.2025 618 | 2020-07-17,7363.8941,2147635.8741,2140271.98,2.147636,1000000.0,2.1431 619 | 2020-07-20,13047.8807,2228584.6407,2215536.76,2.228585,1000000.0,2.1476 620 | 2020-07-21,13047.8807,2237585.5907,2224537.71,2.237586,1000000.0,2.2286 621 | 2020-07-22,13047.8807,2259680.8907,2246633.01,2.259681,1000000.0,2.2376 622 | 2020-07-23,13047.8807,2251209.9207,2238162.04,2.25121,1000000.0,2.2597 623 | 2020-07-24,13047.8807,2213238.3607,2200190.48,2.213238,1000000.0,2.2512 624 | 2020-07-27,4122.0108,2206613.6808,2202491.67,2.206614,1000000.0,2.2132 625 | 2020-07-28,4122.0108,2225390.1808,2221268.17,2.22539,1000000.0,2.2066 626 | 2020-07-29,4122.0108,2248598.4108,2244476.4,2.248598,1000000.0,2.2254 627 | 2020-07-30,4122.0108,2256499.9908,2252377.98,2.2565,1000000.0,2.2486 628 | 2020-07-31,4122.0108,2272429.2608,2268307.25,2.272429,1000000.0,2.2565 629 | 2020-08-03,7681.3306,2304827.1806,2297145.85,2.304827,1000000.0,2.2724 630 | 2020-08-04,7681.3306,2298797.8806,2291116.55,2.298798,1000000.0,2.3048 631 | 2020-08-05,7681.3306,2302723.6206,2295042.29,2.302724,1000000.0,2.2988 632 | 2020-08-06,7681.3306,2289860.9306,2282179.6,2.289861,1000000.0,2.3027 633 | 2020-08-07,7681.3306,2291038.2406,2283356.91,2.291038,1000000.0,2.2899 634 | 2020-08-10,9378.7379,2314731.2879,2305352.55,2.314731,1000000.0,2.291 635 | 2020-08-11,9378.7379,2296136.4679,2286757.73,2.296136,1000000.0,2.3147 636 | 2020-08-12,9378.7379,2302685.0079,2293306.27,2.302685,1000000.0,2.2961 637 | 2020-08-13,9378.7379,2304358.0679,2294979.33,2.304358,1000000.0,2.3027 638 | 2020-08-14,9378.7379,2308466.3479,2299087.61,2.308466,1000000.0,2.3044 639 | 2020-08-17,3169.6829,2325335.7329,2322166.05,2.325336,1000000.0,2.3085 640 | 2020-08-18,3169.6829,2343670.6429,2340500.96,2.343671,1000000.0,2.3253 641 | 2020-08-19,3169.6829,2336117.1529,2332947.47,2.336117,1000000.0,2.3437 642 | 2020-08-20,3169.6829,2321201.4029,2318031.72,2.321201,1000000.0,2.3361 643 | 2020-08-21,3169.6829,2332755.4129,2329585.73,2.332755,1000000.0,2.3212 644 | 2020-08-24,5353.8017,2333431.4417,2328077.64,2.333431,1000000.0,2.3328 645 | 2020-08-25,5353.8017,2333471.9617,2328118.16,2.333472,1000000.0,2.3334 646 | 2020-08-26,5353.8017,2329231.4117,2323877.61,2.329231,1000000.0,2.3335 647 | 2020-08-27,5353.8017,2320943.2217,2315589.42,2.320943,1000000.0,2.3292 648 | 2020-08-28,5353.8017,2324746.5017,2319392.7,2.324747,1000000.0,2.3209 649 | 2020-08-31,6180.4393,2325333.1793,2319152.74,2.325333,1000000.0,2.3247 650 | 2020-09-01,6180.4393,2340141.1793,2333960.74,2.340141,1000000.0,2.3253 651 | 2020-09-02,6180.4393,2357116.7793,2350936.34,2.357117,1000000.0,2.3401 652 | 2020-09-03,6180.4393,2358060.2093,2351879.77,2.35806,1000000.0,2.3571 653 | 2020-09-04,6180.4393,2364746.8993,2358566.46,2.364747,1000000.0,2.3581 654 | 2020-09-07,5970.953,2350419.403,2344448.45,2.350419,1000000.0,2.3647 655 | 2020-09-08,5970.953,2367908.723,2361937.77,2.367909,1000000.0,2.3504 656 | 2020-09-09,5970.953,2339172.323,2333201.37,2.339172,1000000.0,2.3679 657 | 2020-09-10,5970.953,2293663.653,2287692.7,2.293664,1000000.0,2.3392 658 | 2020-09-11,5970.953,2302120.453,2296149.5,2.30212,1000000.0,2.2937 659 | 2020-09-14,7281.7685,2313789.3185,2306507.55,2.313789,1000000.0,2.3021 660 | 2020-09-15,7281.7685,2304064.1485,2296782.38,2.304064,1000000.0,2.3138 661 | 2020-09-16,7281.7685,2292946.1985,2285664.43,2.292946,1000000.0,2.3041 662 | 2020-09-17,7281.7685,2316126.9385,2308845.17,2.316127,1000000.0,2.2929 663 | 2020-09-18,7281.7685,2354126.7385,2346844.97,2.354127,1000000.0,2.3161 664 | 2020-09-21,11252.5068,2375138.4468,2363885.94,2.375138,1000000.0,2.3541 665 | 2020-09-22,11252.5068,2362178.0468,2350925.54,2.362178,1000000.0,2.3751 666 | 2020-09-23,11252.5068,2366916.4668,2355663.96,2.366916,1000000.0,2.3622 667 | 2020-09-24,11252.5068,2336367.0568,2325114.55,2.336367,1000000.0,2.3669 668 | 2020-09-25,11252.5068,2323395.8268,2312143.32,2.323396,1000000.0,2.3364 669 | 2020-09-28,5938.3388,2282586.1888,2276647.85,2.282586,1000000.0,2.3234 670 | 2020-09-29,5938.3388,2297411.7988,2291473.46,2.297412,1000000.0,2.2826 671 | 2020-09-30,5938.3388,2303725.8688,2297787.53,2.303726,1000000.0,2.2974 672 | 2020-10-09,4576.7511,2342051.5211,2337474.77,2.342052,1000000.0,2.3037 673 | 2020-10-12,5258.5334,2380075.3634,2374816.83,2.380075,1000000.0,2.3421 674 | 2020-10-13,5258.5334,2389901.5734,2384643.04,2.389902,1000000.0,2.3801 675 | 2020-10-14,5258.5334,2381897.3434,2376638.81,2.381897,1000000.0,2.3899 676 | 2020-10-15,5258.5334,2376838.9734,2371580.44,2.376839,1000000.0,2.3819 677 | 2020-10-16,5258.5334,2387167.1334,2381908.6,2.387167,1000000.0,2.3768 678 | 2020-10-19,6540.8702,2386395.1602,2379854.29,2.386395,1000000.0,2.3872 679 | 2020-10-20,6540.8702,2405768.8302,2399227.96,2.405769,1000000.0,2.3864 680 | 2020-10-21,6540.8702,2402643.0402,2396102.17,2.402643,1000000.0,2.4058 681 | 2020-10-22,6540.8702,2442900.9102,2436360.04,2.442901,1000000.0,2.4026 682 | 2020-10-23,6540.8702,2432504.3802,2425963.51,2.432504,1000000.0,2.4429 683 | 2020-10-26,12429.2663,2482526.7863,2470097.52,2.482527,1000000.0,2.4325 684 | 2020-10-27,12429.2663,2481591.5863,2469162.32,2.481592,1000000.0,2.4825 685 | 2020-10-28,12429.2663,2482476.0163,2470046.75,2.482476,1000000.0,2.4816 686 | 2020-10-29,12429.2663,2478363.1263,2465933.86,2.478363,1000000.0,2.4825 687 | 2020-10-30,12429.2663,2442176.7663,2429747.5,2.442177,1000000.0,2.4784 688 | 2020-11-02,8053.488,2433040.078,2424986.59,2.43304,1000000.0,2.4422 689 | 2020-11-03,8053.488,2451317.538,2443264.05,2.451318,1000000.0,2.433 690 | 2020-11-04,8053.488,2452866.168,2444812.68,2.452866,1000000.0,2.4513 691 | 2020-11-05,8053.488,2474177.958,2466124.47,2.474178,1000000.0,2.4529 692 | 2020-11-06,8053.488,2473128.178,2465074.69,2.473128,1000000.0,2.4742 693 | 2020-11-09,6176.6834,2492826.6134,2486649.93,2.492827,1000000.0,2.4731 694 | 2020-11-10,6176.6834,2491846.0534,2485669.37,2.491846,1000000.0,2.4928 695 | 2020-11-11,6176.6834,2471088.7734,2464912.09,2.471089,1000000.0,2.4918 696 | 2020-11-12,6176.6834,2476596.2934,2470419.61,2.476596,1000000.0,2.4711 697 | 2020-11-13,6176.6834,2498914.0534,2492737.37,2.498914,1000000.0,2.4766 698 | 2020-11-16,9409.8728,2490260.8128,2480850.94,2.490261,1000000.0,2.4989 699 | 2020-11-17,9409.8728,2476062.5527,2466652.68,2.476063,1000000.0,2.4903 700 | 2020-11-18,9409.8728,2486598.3928,2477188.52,2.486598,1000000.0,2.4761 701 | 2020-11-19,9409.8728,2480097.7227,2470687.85,2.480098,1000000.0,2.4866 702 | 2020-11-20,9409.8728,2483008.6028,2473598.73,2.483009,1000000.0,2.4801 703 | 2020-11-23,3941.9726,2493612.1426,2489670.17,2.493612,1000000.0,2.483 704 | 2020-11-24,3941.9726,2504538.9726,2500597.0,2.504539,1000000.0,2.4936 705 | 2020-11-25,3941.9726,2516456.7926,2512514.82,2.516457,1000000.0,2.5045 706 | 2020-11-26,3941.9726,2497566.8326,2493624.86,2.497567,1000000.0,2.5165 707 | 2020-11-27,3941.9726,2495943.8326,2492001.86,2.495944,1000000.0,2.4976 708 | 2020-11-30,2743.0162,2492702.8862,2489959.87,2.492703,1000000.0,2.4959 709 | 2020-12-01,2743.0162,2509467.0262,2506724.01,2.509467,1000000.0,2.4927 710 | 2020-12-02,2743.0162,2542369.5362,2539626.52,2.54237,1000000.0,2.5095 711 | 2020-12-03,2743.0162,2512987.4162,2510244.4,2.512987,1000000.0,2.5424 712 | 2020-12-04,2743.0162,2500336.4562,2497593.44,2.500336,1000000.0,2.513 713 | 2020-12-07,5892.2461,2503549.4861,2497657.24,2.503549,1000000.0,2.5003 714 | 2020-12-08,5892.2461,2511764.9261,2505872.68,2.511765,1000000.0,2.5035 715 | 2020-12-09,5892.2461,2483313.2561,2477421.01,2.483313,1000000.0,2.5118 716 | 2020-12-10,5892.2461,2483312.9661,2477420.72,2.483313,1000000.0,2.4833 717 | 2020-12-11,5892.2461,2471242.9861,2465350.74,2.471243,1000000.0,2.4833 718 | 2020-12-14,8741.8414,2474743.8914,2466002.05,2.474744,1000000.0,2.4712 719 | 2020-12-15,8741.8414,2417861.4614,2409119.62,2.417861,1000000.0,2.4747 720 | 2020-12-16,8741.8414,2403677.1214,2394935.28,2.403677,1000000.0,2.4179 721 | 2020-12-17,8741.8414,2419705.2114,2410963.37,2.419705,1000000.0,2.4037 722 | 2020-12-18,8741.8414,2404812.1514,2396070.31,2.404812,1000000.0,2.4197 723 | 2020-12-21,4044.3343,2413295.8343,2409251.5,2.413296,1000000.0,2.4048 724 | 2020-12-22,4044.3343,2385208.8343,2381164.5,2.385209,1000000.0,2.4133 725 | 2020-12-23,4044.3343,2374478.0643,2370433.73,2.374478,1000000.0,2.3852 726 | 2020-12-24,4044.3343,2307047.7243,2303003.39,2.307048,1000000.0,2.3745 727 | 2020-12-25,4044.3343,2325880.0243,2321835.69,2.32588,1000000.0,2.307 728 | 2020-12-28,5109.1132,2307554.1132,2302445.0,2.307554,1000000.0,2.3259 729 | 2020-12-29,5109.1132,2315093.0332,2309983.92,2.315093,1000000.0,2.3076 730 | 2020-12-30,5109.1132,2341749.4532,2336640.34,2.341749,1000000.0,2.3151 731 | 2020-12-31,5109.1132,2370429.2432,2365320.13,2.370429,1000000.0,2.3417 732 | 2021-01-04,2637.0936,2385171.3036,2382534.21,2.385171,1000000.0,2.3704 733 | 2021-01-05,2637.0936,2376901.8836,2374264.79,2.376902,1000000.0,2.3852 734 | 2021-01-06,2637.0936,2381918.8336,2379281.74,2.381919,1000000.0,2.3769 735 | 2021-01-07,2637.0936,2336398.1736,2333761.08,2.336398,1000000.0,2.3819 736 | 2021-01-08,2637.0936,2322751.7236,2320114.63,2.322752,1000000.0,2.3364 737 | 2021-01-11,1214.628,2288949.698,2287735.07,2.28895,1000000.0,2.3228 738 | 2021-01-12,1214.628,2290825.118,2289610.49,2.290825,1000000.0,2.2889 739 | 2021-01-13,1214.628,2245775.668,2244561.04,2.245776,1000000.0,2.2908 740 | 2021-01-14,1214.628,2270990.858,2269776.23,2.270991,1000000.0,2.2458 741 | 2021-01-15,1214.628,2284988.228,2283773.6,2.284988,1000000.0,2.271 742 | 2021-01-18,3124.7638,2298347.8238,2295223.06,2.298348,1000000.0,2.285 743 | 2021-01-19,3124.7638,2311021.8638,2307897.1,2.311022,1000000.0,2.2983 744 | 2021-01-20,3124.7638,2310590.9238,2307466.16,2.310591,1000000.0,2.311 745 | 2021-01-21,3124.7638,2310480.6238,2307355.86,2.310481,1000000.0,2.3106 746 | 2021-01-22,3124.7638,2301331.8838,2298207.12,2.301332,1000000.0,2.3105 747 | 2021-01-25,4108.5242,2279649.5242,2275541.0,2.27965,1000000.0,2.3013 748 | 2021-01-26,4108.5242,2268623.0242,2264514.5,2.268623,1000000.0,2.2796 749 | 2021-01-27,4108.5242,2255583.9642,2251475.44,2.255584,1000000.0,2.2686 750 | 2021-01-28,4108.5242,2240357.5542,2236249.03,2.240358,1000000.0,2.2556 751 | 2021-01-29,4108.5242,2208148.6442,2204040.12,2.208149,1000000.0,2.2404 752 | 2021-02-01,730.3141,2196070.4541,2195340.14,2.19607,1000000.0,2.2081 753 | 2021-02-02,730.3141,2173391.5641,2172661.25,2.173392,1000000.0,2.1961 754 | 2021-02-03,730.3141,2170372.9341,2169642.62,2.170373,1000000.0,2.1734 755 | 2021-02-04,730.3141,2130087.3241,2129357.01,2.130087,1000000.0,2.1704 756 | 2021-02-05,730.3141,2117587.0841,2116856.77,2.117587,1000000.0,2.1301 757 | 2021-02-08,4187.3952,2091910.7752,2087723.38,2.091911,1000000.0,2.1176 758 | 2021-02-09,4187.3952,2132577.0952,2128389.7,2.132577,1000000.0,2.0919 759 | 2021-02-10,4187.3952,2161589.4652,2157402.07,2.161589,1000000.0,2.1326 760 | 2021-02-18,3192.7533,2201888.2833,2198695.53,2.201888,1000000.0,2.1616 761 | 2021-02-19,3192.7533,2261719.5433,2258526.79,2.26172,1000000.0,2.2019 762 | 2021-02-22,5494.718,2300506.818,2295012.1,2.300507,1000000.0,2.2617 763 | 2021-02-23,5494.718,2286466.838,2280972.12,2.286467,1000000.0,2.3005 764 | 2021-02-24,5494.718,2277880.818,2272386.1,2.277881,1000000.0,2.2865 765 | 2021-02-25,5494.718,2265424.218,2259929.5,2.265424,1000000.0,2.2779 766 | 2021-02-26,5494.718,2277180.228,2271685.51,2.27718,1000000.0,2.2654 767 | 2021-03-01,4598.0307,2297929.6007,2293331.57,2.29793,1000000.0,2.2772 768 | 2021-03-02,4598.0307,2300273.2707,2295675.24,2.300273,1000000.0,2.2979 769 | 2021-03-03,4598.0307,2326340.9307,2321742.9,2.326341,1000000.0,2.3003 770 | 2021-03-04,4598.0307,2327222.1907,2322624.16,2.327222,1000000.0,2.3263 771 | 2021-03-05,4598.0307,2372374.5407,2367776.51,2.372375,1000000.0,2.3272 772 | 2021-03-08,8060.4177,2375996.4877,2367936.07,2.375996,1000000.0,2.3724 773 | 2021-03-09,8060.4177,2355471.0577,2347410.64,2.355471,1000000.0,2.376 774 | 2021-03-10,8060.4177,2358136.2177,2350075.8,2.358136,1000000.0,2.3555 775 | 2021-03-11,8060.4177,2381158.6377,2373098.22,2.381159,1000000.0,2.3581 776 | 2021-03-12,8060.4177,2400122.0077,2392061.59,2.400122,1000000.0,2.3812 777 | 2021-03-15,6910.9653,2415156.6553,2408245.69,2.415157,1000000.0,2.4001 778 | 2021-03-16,6910.9653,2424688.5953,2417777.63,2.424689,1000000.0,2.4152 779 | 2021-03-17,6910.9653,2438012.4753,2431101.51,2.438012,1000000.0,2.4247 780 | 2021-03-18,6910.9653,2446250.5153,2439339.55,2.446251,1000000.0,2.438 781 | 2021-03-19,6910.9653,2449798.8053,2442887.84,2.449799,1000000.0,2.4463 782 | 2021-03-22,2481.8549,2483889.1449,2481407.29,2.483889,1000000.0,2.4498 783 | 2021-03-23,2481.8549,2456500.5149,2454018.66,2.456501,1000000.0,2.4839 784 | 2021-03-24,2481.8549,2452040.8849,2449559.03,2.452041,1000000.0,2.4565 785 | 2021-03-25,2481.8549,2429619.9449,2427138.09,2.42962,1000000.0,2.452 786 | 2021-03-26,2481.8549,2447952.4049,2445470.55,2.447952,1000000.0,2.4296 787 | 2021-03-29,3488.5031,2444505.6131,2441017.11,2.444506,1000000.0,2.448 788 | 2021-03-30,3488.5031,2426969.0031,2423480.5,2.426969,1000000.0,2.4445 789 | 2021-03-31,3488.5031,2416997.6531,2413509.15,2.416998,1000000.0,2.427 790 | 2021-04-01,3488.5031,2438884.1631,2435395.66,2.438884,1000000.0,2.417 791 | 2021-04-02,3488.5031,2428578.6231,2425090.12,2.428579,1000000.0,2.4389 792 | 2021-04-06,3547.519,2460384.669,2456837.15,2.460385,1000000.0,2.4286 793 | 2021-04-07,3547.519,2479686.639,2476139.12,2.479687,1000000.0,2.4604 794 | 2021-04-08,3547.519,2492852.579,2489305.06,2.492853,1000000.0,2.4797 795 | 2021-04-09,3547.519,2516181.619,2512634.1,2.516182,1000000.0,2.4929 796 | 2021-04-12,5217.3093,2499585.9393,2494368.63,2.499586,1000000.0,2.5162 797 | 2021-04-13,5217.3093,2474153.0393,2468935.73,2.474153,1000000.0,2.4996 798 | 2021-04-14,5217.3093,2490925.3093,2485708.0,2.490925,1000000.0,2.4742 799 | 2021-04-15,5217.3093,2484925.7393,2479708.43,2.484926,1000000.0,2.4909 800 | 2021-04-16,5217.3093,2510725.6693,2505508.36,2.510726,1000000.0,2.4849 801 | 2021-04-19,3829.3987,2533222.5787,2529393.18,2.533223,1000000.0,2.5107 802 | 2021-04-20,3829.3987,2545988.3487,2542158.95,2.545988,1000000.0,2.5332 803 | 2021-04-21,3829.3987,2541332.6187,2537503.22,2.541333,1000000.0,2.546 804 | 2021-04-22,3829.3987,2547257.6487,2543428.25,2.547258,1000000.0,2.5413 805 | 2021-04-23,3829.3987,2547347.2087,2543517.81,2.547347,1000000.0,2.5473 806 | 2021-04-26,2484.1269,2555462.4169,2552978.29,2.555462,1000000.0,2.5473 807 | 2021-04-27,2484.1269,2539028.6069,2536544.48,2.539029,1000000.0,2.5555 808 | 2021-04-28,2484.1269,2543131.0069,2540646.88,2.543131,1000000.0,2.539 809 | 2021-04-29,2484.1269,2542347.4569,2539863.33,2.542347,1000000.0,2.5431 810 | 2021-04-30,2484.1269,2541245.3769,2538761.25,2.541245,1000000.0,2.5423 811 | 2021-05-06,603.4648,2555738.2048,2555134.74,2.555738,1000000.0,2.5412 812 | 2021-05-07,603.4648,2563759.7348,2563156.27,2.56376,1000000.0,2.5557 813 | 2021-05-10,3418.297,2568106.807,2564688.51,2.568107,1000000.0,2.5638 814 | 2021-05-11,3418.297,2575180.267,2571761.97,2.57518,1000000.0,2.5681 815 | 2021-05-12,3418.297,2589748.527,2586330.23,2.589749,1000000.0,2.5752 816 | 2021-05-13,3418.297,2586747.217,2583328.92,2.586747,1000000.0,2.5897 817 | 2021-05-14,3418.297,2595030.397,2591612.1,2.59503,1000000.0,2.5867 818 | 2021-05-17,2369.1992,2564632.6192,2562263.42,2.564633,1000000.0,2.595 819 | 2021-05-18,2369.1992,2584867.9392,2582498.74,2.584868,1000000.0,2.5646 820 | 2021-05-19,2369.1992,2589135.8192,2586766.62,2.589136,1000000.0,2.5849 821 | 2021-05-20,2369.1992,2589847.1292,2587477.93,2.589847,1000000.0,2.5891 822 | 2021-05-21,2369.1992,2601037.0592,2598667.86,2.601037,1000000.0,2.5898 823 | 2021-05-24,3421.4485,2608259.8985,2604838.45,2.60826,1000000.0,2.601 824 | 2021-05-25,3421.4485,2622267.3885,2618845.94,2.622267,1000000.0,2.6083 825 | 2021-05-26,3421.4485,2637656.0285,2634234.58,2.637656,1000000.0,2.6223 826 | 2021-05-27,3421.4485,2656576.0285,2653154.58,2.656576,1000000.0,2.6377 827 | 2021-05-28,3421.4485,2647413.1885,2643991.74,2.647413,1000000.0,2.6566 828 | 2021-05-31,6264.6586,2665248.1286,2658983.47,2.665248,1000000.0,2.6474 829 | 2021-06-01,6264.6586,2673221.3786,2666956.72,2.673221,1000000.0,2.6652 830 | 2021-06-02,6264.6586,2675065.4486,2668800.79,2.675065,1000000.0,2.6732 831 | 2021-06-03,6264.6586,2678295.4286,2672030.77,2.678295,1000000.0,2.6751 832 | 2021-06-04,6264.6586,2688626.9186,2682362.26,2.688627,1000000.0,2.6783 833 | 2021-06-07,6676.902,2677242.382,2670565.48,2.677242,1000000.0,2.6886 834 | 2021-06-08,6676.902,2663829.452,2657152.55,2.663829,1000000.0,2.6772 835 | 2021-06-09,6676.902,2667607.512,2660930.61,2.667608,1000000.0,2.6638 836 | 2021-06-10,6676.902,2672237.102,2665560.2,2.672237,1000000.0,2.6676 837 | 2021-06-11,6676.902,2677177.942,2670501.04,2.677178,1000000.0,2.6722 838 | 2021-06-15,443.8201,2650115.1101,2649671.29,2.650115,1000000.0,2.6772 839 | 2021-06-16,443.8201,2653330.3501,2652886.53,2.65333,1000000.0,2.6501 840 | 2021-06-17,443.8201,2651602.5801,2651158.76,2.651603,1000000.0,2.6533 841 | 2021-06-18,443.8201,2640791.1001,2640347.28,2.640791,1000000.0,2.6516 842 | 2021-06-21,8441.9721,2671771.3821,2663329.41,2.671771,1000000.0,2.6408 843 | 2021-06-22,8441.9721,2693045.5721,2684603.6,2.693046,1000000.0,2.6718 844 | 2021-06-23,8441.9721,2703868.9921,2695427.02,2.703869,1000000.0,2.693 845 | 2021-06-24,8441.9721,2718653.6021,2710211.63,2.718654,1000000.0,2.7039 846 | 2021-06-25,8441.9721,2728643.9421,2720201.97,2.728644,1000000.0,2.7187 847 | 2021-06-28,4600.2635,2728009.3835,2723409.12,2.728009,1000000.0,2.7286 848 | 2021-06-29,4600.2635,2712320.0235,2707719.76,2.71232,1000000.0,2.728 849 | 2021-06-30,4600.2635,2714631.3935,2710031.13,2.714631,1000000.0,2.7123 850 | 2021-07-01,4600.2635,2697360.7635,2692760.5,2.697361,1000000.0,2.7146 851 | 2021-07-02,4600.2635,2686897.4335,2682297.17,2.686897,1000000.0,2.6974 852 | 2021-07-05,9122.9516,2710939.9016,2701816.95,2.71094,1000000.0,2.6869 853 | 2021-07-06,9122.9516,2717069.1516,2707946.2,2.717069,1000000.0,2.7109 854 | 2021-07-07,9122.9516,2727774.4316,2718651.48,2.727774,1000000.0,2.7171 855 | 2021-07-08,9122.9516,2740838.4016,2731715.45,2.740838,1000000.0,2.7278 856 | 2021-07-09,9122.9516,2758804.4716,2749681.52,2.758804,1000000.0,2.7408 857 | 2021-07-12,9919.3789,2786166.9689,2776247.59,2.786167,1000000.0,2.7588 858 | 2021-07-13,9919.3789,2802503.8089,2792584.43,2.802504,1000000.0,2.7862 859 | 2021-07-14,9919.3789,2790573.0089,2780653.63,2.790573,1000000.0,2.8025 860 | 2021-07-15,9919.3789,2795477.9289,2785558.55,2.795478,1000000.0,2.7906 861 | 2021-07-16,9919.3789,2808129.6289,2798210.25,2.80813,1000000.0,2.7955 862 | 2021-07-19,4894.8523,2807018.6223,2802123.77,2.807019,1000000.0,2.8081 863 | 2021-07-20,4894.8523,2807911.5823,2803016.73,2.807912,1000000.0,2.807 864 | 2021-07-21,4894.8523,2820145.4823,2815250.63,2.820145,1000000.0,2.8079 865 | 2021-07-22,4894.8523,2846196.1623,2841301.31,2.846196,1000000.0,2.8201 866 | 2021-07-23,4894.8523,2875303.1523,2870408.3,2.875303,1000000.0,2.8462 867 | 2021-07-26,9174.7665,2837667.5365,2828492.77,2.837668,1000000.0,2.8753 868 | 2021-07-27,9174.7665,2792019.9765,2782845.21,2.79202,1000000.0,2.8377 869 | 2021-07-28,9174.7665,2766797.2365,2757622.47,2.766797,1000000.0,2.792 870 | 2021-07-29,9174.7665,2794518.6165,2785343.85,2.794519,1000000.0,2.7668 871 | 2021-07-30,9174.7665,2829769.1565,2820594.39,2.829769,1000000.0,2.7945 872 | 2021-08-02,7087.4727,2882115.9127,2875028.44,2.882116,1000000.0,2.8298 873 | 2021-08-03,7087.4727,2886330.7627,2879243.29,2.886331,1000000.0,2.8821 874 | 2021-08-04,7087.4727,2908525.3427,2901437.87,2.908525,1000000.0,2.8863 875 | 2021-08-05,7087.4727,2916593.9827,2909506.51,2.916594,1000000.0,2.9085 876 | 2021-08-06,7087.4727,2927904.2527,2920816.78,2.927904,1000000.0,2.9166 877 | 2021-08-09,8186.7824,2944151.8524,2935965.07,2.944152,1000000.0,2.9279 878 | 2021-08-10,8186.7824,2953014.5524,2944827.77,2.953015,1000000.0,2.9442 879 | 2021-08-11,8186.7824,2982047.6024,2973860.82,2.982048,1000000.0,2.953 880 | 2021-08-12,8186.7824,2981918.2724,2973731.49,2.981918,1000000.0,2.982 881 | 2021-08-13,8186.7824,2988525.7724,2980338.99,2.988526,1000000.0,2.9819 882 | 2021-08-16,7615.6579,3003087.7179,2995472.06,3.003088,1000000.0,2.9885 883 | 2021-08-17,7615.6579,2979783.7979,2972168.14,2.979784,1000000.0,3.0031 884 | 2021-08-18,7615.6579,2992994.0879,2985378.43,2.992994,1000000.0,2.9798 885 | 2021-08-19,7615.6579,2989028.3479,2981412.69,2.989028,1000000.0,2.993 886 | 2021-08-20,7615.6579,2980017.4979,2972401.84,2.980017,1000000.0,2.989 887 | 2021-08-23,4328.4251,2997445.2551,2993116.83,2.997445,1000000.0,2.98 888 | 2021-08-24,4328.4251,3002577.1951,2998248.77,3.002577,1000000.0,2.9974 889 | 2021-08-25,4328.4251,3035748.2451,3031419.82,3.035748,1000000.0,3.0026 890 | 2021-08-26,4328.4251,3042731.7051,3038403.28,3.042732,1000000.0,3.0357 891 | 2021-08-27,4328.4251,3046812.2551,3042483.83,3.046812,1000000.0,3.0427 892 | 2021-08-30,3290.0952,3056296.6252,3053006.53,3.056297,1000000.0,3.0468 893 | 2021-08-31,3290.0952,3078265.5752,3074975.48,3.078266,1000000.0,3.0563 894 | 2021-09-01,3290.0952,3094863.8252,3091573.73,3.094864,1000000.0,3.0783 895 | 2021-09-02,3290.0952,3138993.4652,3135703.37,3.138993,1000000.0,3.0949 896 | 2021-09-03,3290.0952,3148172.7452,3144882.65,3.148173,1000000.0,3.139 897 | 2021-09-06,4068.2253,3161708.8853,3157640.66,3.161709,1000000.0,3.1482 898 | 2021-09-07,4068.2253,3202492.1453,3198423.92,3.202492,1000000.0,3.1617 899 | 2021-09-08,4068.2253,3236931.8153,3232863.59,3.236932,1000000.0,3.2025 900 | 2021-09-09,4068.2253,3235967.3053,3231899.08,3.235967,1000000.0,3.2369 901 | 2021-09-10,4068.2253,3214358.7753,3210290.55,3.214359,1000000.0,3.236 902 | 2021-09-13,7413.8313,3227705.5813,3220291.75,3.227706,1000000.0,3.2144 903 | 2021-09-14,7413.8313,3175983.7813,3168569.95,3.175984,1000000.0,3.2277 904 | 2021-09-15,7413.8313,3162633.2613,3155219.43,3.162633,1000000.0,3.176 905 | 2021-09-16,7413.8313,3123195.9613,3115782.13,3.123196,1000000.0,3.1626 906 | 2021-09-17,7413.8313,3103243.9013,3095830.07,3.103244,1000000.0,3.1232 907 | 2021-09-22,5073.7198,3108214.5798,3103140.86,3.108215,1000000.0,3.1032 908 | 2021-09-23,5073.7198,3176620.0598,3171546.34,3.17662,1000000.0,3.1082 909 | 2021-09-24,5073.7198,3149155.5698,3144081.85,3.149156,1000000.0,3.1766 910 | --------------------------------------------------------------------------------