├── .gitignore ├── LICENSE ├── README.md ├── mechafil ├── __init__.py ├── data.py ├── data_spacescope.py ├── data_starboard.py ├── locking.py ├── minting.py ├── power.py ├── sim.py ├── supply.py ├── utils.py └── vesting.py ├── notebooks ├── backtest.ipynb ├── backtest_variable_renewal_rate.ipynb ├── spacescope_port.ipynb └── time_dependent_powerforecast_inputs.ipynb ├── offline_info ├── Daily_Active_Deal_PiB_Statistics.csv ├── Scheduled_Expiration_by_Date_Breakdown_in_FIL.csv ├── Sector_Onboarding_Breakdown_by_Sector_Size.csv ├── chain_rewards.csv └── df_distributions_for_power_model_parameters.csv ├── requirements.txt ├── setup.py └── specs └── .gitkeep /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Protocol Labs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Filecoin Mechanistic Twin 2 | 3 | Mechanistic model for the Filecoin Economy. You can use this model to forecast all the components underlying Filecoin's circulating supply (i.e., minting, vesting, locking and burning), based on a set of parameters that encode storage provider behavior. The model uses the following assumptions: 4 | 5 | * Forecasting is done daily. This means that each forecasting step corresponds to a day and the forecasted metrics correspond to the value we expect to see at the end of that day. 6 | * The model uses the current sector states (i.e. known schedule expirations) and it estimates future onboardings and future renewals. 7 | * The daily power onboarded is provided as a tunable parameter. 8 | * The sector renewal rates are provided as a tunable parameter. 9 | * Sector duration is a constant provided as a tunable parameter. 10 | * Filecoin Plus sectors have the same renewal rates and sector durations as other sectors. 11 | * The model uses the current pledge metrics (i.e. known scheduled expiration in pledge) to measure known active sectors, and it estimates pledge metrics coming from future onboardings and renewals using the same assumptions as the ones used to model storage power. 12 | * The model ignores storage deal collateral when computing the total locked FIL. 13 | 14 | To learn more about how the model is designed, check the specifications linked at the end of this readme. 15 | 16 | 17 | ## Prerequisites 18 | 19 | ``` 20 | numpy>=1.22 21 | pandas>=1.4 22 | requests>=2.28 23 | matplotlib>=3.5.2 24 | seaborn>=0.11.2 25 | ``` 26 | 27 | ## Installing 28 | 29 | This package is available on PyPI and thus can be directly installed with pip: 30 | 31 | ``` 32 | pip install mechaFIL 33 | ``` 34 | 35 | Alternatively, this package can be installed from source by cloning this repository and installing it manually with the command: 36 | 37 | ``` 38 | python setup.py install 39 | ``` 40 | 41 | ## Setup for Data Access 42 | `mechaFIL` uses historical data from Spacescope to provide Filecoin network econometric forecasts. Spacescope requires users to register for a unique token in order to request the historical data. Thus, each user of `mechaFIL` needs to register for a unique token to enable data access - this is a prerequisite to use `mechaFIL`. 43 | 44 | ### Steps: 45 | 1. Follow the instructions [here](https://spacescope.io/sign/up/email) to get your own unique bearer token for data access. 46 | 2. Store your token in a json configuration file with the key `auth_key`. An example is: 47 | ```json 48 | { 49 | "auth_key": "Bearer ghp_xJtTSVcNRJINLWMmfDangcIFCjqPUNZenoVe" 50 | } 51 | ``` 52 | 53 | ## Usage 54 | There is a high-level function that can be used to run a forecast/simulation of circulating supply and its components. First you need to import the relevant packages: 55 | 56 | ```python 57 | import mechafil 58 | import datetime 59 | ``` 60 | 61 | Now, you need to define some parameters: 62 | 63 | ```python 64 | # Starting date for the simulation 65 | start_date = datetime.date(2021, 3, 15) 66 | # Current date 67 | current_date = datetime.date(2022, 11, 1) 68 | # Number of days to run the simulation (after current_rate) 69 | forecast_length = 365 70 | # Renewal rate of all sectors (percentage of raw-byte that will renew) 71 | renewal_rate= 0.6 72 | # Raw-byte power (in PiB) that is onboarded every day 73 | rb_onboard_power = 12.0 74 | # Percentage of raw-byte power onboarded that contains FIL+ deals 75 | fil_plus_rate = 0.098 76 | # Sector duration of newly onboarding sectors 77 | duration = 360 78 | # Pointer to Authentication Token 79 | auth_config = "" 80 | # Method of computing QAP 81 | qap_method = 'basic' 82 | ``` 83 | 84 | A few important notes regarding the inputs: 85 | * Due to data availability, the start date cannot be earlier than 2021-03-15. 86 | * The current date needs to be at least 2 days after the start date. 87 | * The current date needs to be at least 1 day before the actual current date. i.e. if you are running the simulation on 2023-01-15, then the maximum current date that is supported is 2023-01-14. 88 | * The parameters `renewal_rate`, `rb_onboard_power` and `fil_plus_rate` can be a single number or a vector of numbers. If they are a number, the model assumes that number as a constant throughout the simulation. If a vector is provided, then the vector needs to have the same size as the simulation length. The vector option gives the user the most flexibility since they can apply different constants throughout the simulation. 89 | * The optional parameter `qap_method` determines how network QAP will be computed. Two approaches are provided in the library, which we term `basic` and `tunable`. Setting this value to `tunable` will enable QAP to be computed with tunable sector duration multipliers, but note that this is an approximation. The other method is `basic` which does not support sector duration multipliers. See [here](https://hackmd.io/O6HmAb--SgmxkjLWSpbN_A?view) for more details. 90 | 91 | Now, you can call the simulation function and collect the data in a DataFrame: 92 | 93 | ```python 94 | cil_df = mechafil.run_simple_sim(start_date, 95 | current_date, 96 | forecast_length, 97 | renewal_rate, 98 | rb_onboard_power, 99 | fil_plus_rate, 100 | duration, 101 | auth_config, 102 | qap_method='tunable') 103 | 104 | cil_df.head() 105 | ``` 106 | 107 | Please check [this](https://colab.research.google.com/drive/1qaLM2Fm27kQ07jIGBPdkdoTvo9-YAAtq?usp=sharing) Google Colab notebook for a complete example. 108 | 109 | You can also run part of the simulation separately. To see more examples, check the available [notebooks](https://github.com/protocol/filecoin-mecha-twin/tree/main/notebooks). 110 | 111 | ## Note for Developers 112 | If you use `mechaFIL` in expert mode (i.e. don't use `run_simple_sim`) directly, then you will need to ensure that you setup your data access properly by running the following code 113 | ```python 114 | import mechafil.data as mecha_data 115 | path_to_auth_cfg="" 116 | mecha_data.setup_spacecope(path_to_auth_cfg) 117 | ``` 118 | 119 | ## References 120 | 121 | * [Power model spec](https://hackmd.io/@cryptoecon/SkapZkrdc) 122 | * [Locking model spec](https://hackmd.io/@cryptoecon/SJv_CGvY9) 123 | -------------------------------------------------------------------------------- /mechafil/__init__.py: -------------------------------------------------------------------------------- 1 | """MechaFIL: Mechanistic model for the Filecoin Economy""" 2 | 3 | __version__ = "1.7" 4 | __author__ = "Maria Silva , Tom Mellan , Kiran Karra " 5 | __all__ = [] 6 | 7 | import pandas 8 | 9 | pandas.set_option("mode.chained_assignment", None) 10 | from .sim import run_simple_sim 11 | -------------------------------------------------------------------------------- /mechafil/data.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | import datetime 4 | from typing import Tuple 5 | 6 | DEFAULT_DATA_BACKEND = 'spacescope' 7 | NETWORK_START = datetime.datetime(2020, 10, 15) 8 | 9 | from . import data_spacescope, data_starboard 10 | 11 | spacescope_obj = None 12 | def setup_spacescope(auth_config_or_token): 13 | global spacescope_obj 14 | spacescope_obj = data_spacescope.SpacescopeDataConnection(auth_config_or_token) 15 | 16 | def check_if_spacescope_configured(): 17 | if spacescope_obj is None: 18 | raise ValueError("Spacescope object not configured. Please run setup_spacescope() with an bearer token configuration first!") 19 | 20 | def get_historical_network_stats( 21 | start_date: datetime.date, 22 | current_date: datetime.date, 23 | end_date: datetime.date, 24 | data_backend: str = DEFAULT_DATA_BACKEND 25 | ) -> pd.DataFrame: 26 | if data_backend.lower() == 'spacescope': 27 | check_if_spacescope_configured() 28 | return spacescope_obj.get_historical_network_stats(start_date, current_date, end_date) 29 | elif data_backend.lower() == 'starboard': 30 | return data_starboard.get_historical_network_stats(start_date, current_date, end_date) 31 | else: 32 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 33 | 34 | def get_sector_expiration_stats( 35 | start_date: datetime.date, 36 | current_date: datetime.date, 37 | end_date: datetime.date, 38 | data_backend: str = DEFAULT_DATA_BACKEND 39 | ) -> pd.DataFrame: 40 | if data_backend.lower() == 'spacescope': 41 | check_if_spacescope_configured() 42 | return spacescope_obj.get_sector_expiration_stats(start_date, current_date, end_date) 43 | elif data_backend.lower() == 'starboard': 44 | return data_starboard.get_sector_expiration_stats(start_date, current_date, end_date) 45 | else: 46 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 47 | 48 | def get_day_renewed_power_stats( 49 | start_date: datetime.date, 50 | current_date: datetime.date, 51 | end_date: datetime.date, 52 | data_backend: str = DEFAULT_DATA_BACKEND 53 | ) -> Tuple[np.array, np.array]: 54 | if data_backend.lower() == 'spacescope': 55 | check_if_spacescope_configured() 56 | return spacescope_obj.get_day_renewed_power_stats(start_date, current_date, end_date) 57 | elif data_backend.lower() == 'starboard': 58 | return data_starboard.get_day_renewed_power_stats(start_date, current_date, end_date) 59 | else: 60 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 61 | 62 | def query_sector_expirations( 63 | start_date: datetime.date, 64 | end_date: datetime.date, 65 | data_backend: str = DEFAULT_DATA_BACKEND 66 | ) -> pd.DataFrame: 67 | if data_backend.lower() == 'spacescope': 68 | check_if_spacescope_configured() 69 | return spacescope_obj.query_spacescope_sector_expirations(start_date, end_date) 70 | elif data_backend.lower() == 'starboard': 71 | return data_starboard.query_starboard_sector_expirations(start_date, end_date) 72 | else: 73 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 74 | 75 | 76 | def query_supply_stats( 77 | start_date: datetime.date, 78 | end_date: datetime.date, 79 | data_backend: str = DEFAULT_DATA_BACKEND 80 | ) -> pd.DataFrame: 81 | if data_backend.lower() == 'spacescope': 82 | check_if_spacescope_configured() 83 | return spacescope_obj.query_spacescope_supply_stats(start_date, end_date) 84 | elif data_backend.lower() == 'starboard': 85 | return data_starboard.query_starboard_supply_stats(start_date, end_date) 86 | else: 87 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 88 | 89 | 90 | def query_power_stats( 91 | start_date: datetime.date, 92 | end_date: datetime.date, 93 | data_backend: str = DEFAULT_DATA_BACKEND 94 | ) -> pd.DataFrame: 95 | if data_backend.lower() == 'spacescope': 96 | check_if_spacescope_configured() 97 | return spacescope_obj.query_spacescope_power_stats(start_date, end_date) 98 | elif data_backend.lower() == 'starboard': 99 | return data_starboard.query_starboard_power_stats(start_date, end_date) 100 | else: 101 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 102 | 103 | 104 | def query_daily_power_onboarded( 105 | start_date: datetime.date, 106 | end_date: datetime.date, 107 | data_backend: str = DEFAULT_DATA_BACKEND 108 | ) -> pd.DataFrame: 109 | if data_backend.lower() == 'spacescope': 110 | check_if_spacescope_configured() 111 | return spacescope_obj.query_spacescope_daily_power_onboarded(start_date, end_date) 112 | elif data_backend.lower() == 'starboard': 113 | return data_starboard.query_starboard_daily_power_onboarded(start_date, end_date) 114 | else: 115 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 116 | 117 | 118 | def query_supply_stats( 119 | start_date: datetime.date, 120 | end_date: datetime.date, 121 | data_backend: str = DEFAULT_DATA_BACKEND 122 | ) -> pd.DataFrame: 123 | if data_backend.lower() == 'spacescope': 124 | check_if_spacescope_configured() 125 | return spacescope_obj.query_spacescope_supply_stats(start_date, end_date) 126 | elif data_backend.lower() == 'starboard': 127 | return data_starboard.query_starboard_supply_stats(start_date, end_date) 128 | else: 129 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 130 | 131 | 132 | def query_sector_expirations( 133 | start_date: datetime.date, 134 | end_date: datetime.date, 135 | data_backend: str = DEFAULT_DATA_BACKEND 136 | ) -> pd.DataFrame: 137 | if data_backend.lower() == 'spacescope': 138 | check_if_spacescope_configured() 139 | return spacescope_obj.query_spacescope_sector_expirations(start_date, end_date) 140 | elif data_backend.lower() == 'starboard': 141 | return data_starboard.query_starboard_sector_expirations(start_date, end_date) 142 | else: 143 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 144 | 145 | 146 | def get_storage_baseline_value( 147 | date: datetime.date, 148 | data_backend: str = DEFAULT_DATA_BACKEND 149 | ) -> float: 150 | # Get baseline values from Starboard API 151 | bp_df = query_historical_baseline_power(data_backend) 152 | # Extract baseline value at date 153 | init_baseline_bytes = bp_df[bp_df["date"] >= pd.to_datetime(date, utc="UTC")].iloc[ 154 | 0, 1 155 | ] 156 | return init_baseline_bytes 157 | 158 | 159 | def get_cum_capped_rb_power( 160 | date: datetime.date, 161 | data_backend: str = DEFAULT_DATA_BACKEND 162 | ) -> float: 163 | # Query data sources and join 164 | rbp_df = query_historical_rb_power(data_backend) 165 | bp_df = query_historical_baseline_power(data_backend) 166 | df = pd.merge(rbp_df, bp_df, on="date", how="inner") 167 | # Compute cumulative capped RB power 168 | df["capped_power"] = np.min(df[["baseline", "rb_power"]].values, axis=1) 169 | df["cum_capped_power"] = df["capped_power"].cumsum() 170 | date_df = df[df["date"] >= pd.to_datetime(date, utc="UTC")] 171 | init_cum_capped_power = date_df["cum_capped_power"].iloc[0] 172 | return init_cum_capped_power 173 | 174 | 175 | def get_cum_capped_qa_power( 176 | date: datetime.date, 177 | data_backend: str = DEFAULT_DATA_BACKEND 178 | ) -> float: 179 | # Query data sources and join 180 | qap_df = query_historical_qa_power(data_backend) 181 | bp_df = query_historical_baseline_power(data_backend) 182 | df = pd.merge(qap_df, bp_df, on="date", how="inner") 183 | # Compute cumulative capped RB power 184 | df["capped_power"] = np.min(df[["baseline", "qa_power"]].values, axis=1) 185 | df["cum_capped_power"] = df["capped_power"].cumsum() 186 | date_df = df[df["date"] >= pd.to_datetime(date, utc="UTC")] 187 | init_cum_capped_power = date_df["cum_capped_power"].iloc[0] 188 | return init_cum_capped_power 189 | 190 | 191 | def get_vested_amount( 192 | date: datetime.date, 193 | data_backend: str = DEFAULT_DATA_BACKEND 194 | ) -> float: 195 | start_date = date - datetime.timedelta(days=1) 196 | end_date = date + datetime.timedelta(days=1) 197 | stats_df = query_supply_stats(start_date, end_date, data_backend) 198 | date_stats = stats_df[stats_df["date"] == date] 199 | return date_stats["vested_fil"].iloc[0] 200 | 201 | 202 | def query_historical_baseline_power( 203 | data_backend: str = DEFAULT_DATA_BACKEND 204 | ) -> pd.DataFrame: 205 | if data_backend.lower() == 'spacescope': 206 | check_if_spacescope_configured() 207 | return spacescope_obj.query_historical_baseline_power() 208 | elif data_backend.lower() == 'starboard': 209 | return data_starboard.query_historical_baseline_power() 210 | else: 211 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 212 | 213 | 214 | def query_historical_rb_power( 215 | data_backend: str = DEFAULT_DATA_BACKEND 216 | ) -> pd.DataFrame: 217 | if data_backend.lower() == 'spacescope': 218 | check_if_spacescope_configured() 219 | return spacescope_obj.query_historical_rb_power() 220 | elif data_backend.lower() == 'starboard': 221 | return data_starboard.query_historical_rb_power() 222 | else: 223 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 224 | 225 | 226 | def query_historical_qa_power( 227 | data_backend: str = DEFAULT_DATA_BACKEND 228 | ) -> pd.DataFrame: 229 | if data_backend.lower() == 'spacescope': 230 | check_if_spacescope_configured() 231 | return spacescope_obj.query_historical_qa_power() 232 | elif data_backend.lower() == 'starboard': 233 | return data_starboard.query_historical_qa_power() 234 | else: 235 | raise ValueError("Data Backend: %s not supported!" % (data_backend,)) 236 | -------------------------------------------------------------------------------- /mechafil/data_spacescope.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import pandas as pd 3 | import numpy as np 4 | import datetime 5 | from typing import Tuple, List 6 | import os 7 | import json 8 | 9 | EXBI = 2**60 10 | PIB = 2**50 11 | 12 | DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS = 90 13 | DEFAULT_AUTH_CONFIG = os.path.join(os.path.dirname(__file__), 'cfg', 'spacescope_auth.json') 14 | 15 | from .data import NETWORK_START 16 | 17 | class SpacescopeDataConnection: 18 | auth_token = "" 19 | 20 | def __init__(self, auth_config_or_token: str): 21 | if os.path.isfile(auth_config_or_token): 22 | # assume it is a JSON config file with key: auth_key 23 | try: 24 | with open(auth_config_or_token, 'r') as f: 25 | config = json.load(f) 26 | SpacescopeDataConnection.auth_token = config['auth_key'] 27 | except: 28 | raise ValueError("Invalid auth config file: %s" % (auth_config_or_token,)) 29 | else: 30 | SpacescopeDataConnection.auth_token = auth_config_or_token 31 | 32 | @classmethod 33 | def spacescope_query_to_df(cls, url): 34 | payload={} 35 | headers = { 36 | 'authorization': cls.auth_token 37 | } 38 | response = requests.request("GET", url, headers=headers, data=payload) 39 | df = pd.DataFrame(response.json()['data']) 40 | return df 41 | 42 | @staticmethod 43 | def get_historical_network_stats( 44 | start_date: datetime.date, current_date: datetime.date, end_date: datetime.date 45 | ) -> pd.DataFrame: 46 | power_df = SpacescopeDataConnection.query_spacescope_power_stats(start_date, current_date) 47 | onboards_df = SpacescopeDataConnection.query_spacescope_daily_power_onboarded(start_date, current_date) 48 | stats_df = SpacescopeDataConnection.query_spacescope_supply_stats(start_date, current_date) 49 | stats_df = stats_df.merge(power_df, on="date", how="inner").merge( 50 | onboards_df, on="date", how="inner" 51 | ) 52 | renewal_df = SpacescopeDataConnection.get_day_renewed_power_stats( 53 | start_date, current_date, end_date 54 | ) 55 | stats_df = stats_df.merge(renewal_df, on='date', how='inner') 56 | return stats_df 57 | 58 | @staticmethod 59 | def get_sector_expiration_stats( 60 | start_date: datetime.date, 61 | current_date: datetime.date, 62 | end_date: datetime.date, 63 | ) -> pd.DataFrame: 64 | scheduled_df = SpacescopeDataConnection.query_spacescope_sector_expirations(start_date, end_date) 65 | filter_scheduled_df = scheduled_df[ 66 | scheduled_df["date"] >= pd.to_datetime(current_date, utc="UTC") 67 | ] 68 | rbp_expire_vec = filter_scheduled_df["total_rb"].values 69 | qap_expire_vec = filter_scheduled_df["total_qa"].values 70 | # we need the entire history of known_scheduled_pledge_release, so get the 71 | # data from the entire time-window, not just from current-date onwards 72 | pledge_release_vec = scheduled_df["total_pledge"].values 73 | return rbp_expire_vec, qap_expire_vec, pledge_release_vec 74 | 75 | @staticmethod 76 | def get_day_renewed_power_stats( 77 | start_date: datetime.date, 78 | current_date: datetime.date, 79 | end_date: datetime.date, 80 | ) -> Tuple[np.array, np.array]: 81 | scheduled_df = SpacescopeDataConnection.query_spacescope_sector_expirations(start_date, end_date) 82 | filter_scheduled_df = scheduled_df[ 83 | scheduled_df["date"] <= pd.to_datetime(current_date, utc="UTC") 84 | ] 85 | rb_renewal_rate = ( 86 | filter_scheduled_df["extended_rb"] / filter_scheduled_df["total_rb"] 87 | ).values 88 | day_renewed_qa_power = filter_scheduled_df["extended_qa"].values 89 | renewal_df = pd.DataFrame( 90 | { 91 | 'date': pd.to_datetime(filter_scheduled_df['date']).dt.date, 92 | 'rb_renewal_rate': rb_renewal_rate, 93 | 'day_renewed_qa_power_pib': day_renewed_qa_power 94 | } 95 | ) 96 | return renewal_df 97 | 98 | @staticmethod 99 | def chunk_dates(start_date: datetime.date, 100 | end_date: datetime.date, 101 | chunks_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS) -> List: 102 | chunk_start = start_date 103 | dates_chunked = [] 104 | while chunk_start <= end_date: 105 | chunk_end = min(chunk_start + datetime.timedelta(days=chunks_days), end_date) 106 | dates_chunked.append((chunk_start, chunk_end)) 107 | 108 | chunk_start = chunk_end + datetime.timedelta(days=1) 109 | 110 | return dates_chunked 111 | 112 | @staticmethod 113 | def query_spacescope_sector_expirations( 114 | start_date: datetime.date, 115 | end_date: datetime.date, 116 | ) -> pd.DataFrame: 117 | # See: https://docs.spacescope.io/network_core/power/#request-url-4 118 | # NOTE: this is a bit weird compared to the rest of the Spacescope API, where scheduled expirations 119 | # does not need a start/end date and returns the entire dataset. For now, we use this and filter 120 | # but this may need to change in the future if Spacescope changes their API. 121 | url = "https://api.spacescope.io/v2/power/sectors_schedule_expiration" 122 | scheduled_df = SpacescopeDataConnection.spacescope_query_to_df(url) 123 | 124 | # Convert bytes to pebibytes 125 | scheduled_df["extended_rb"] = scheduled_df["extended_bytes"].astype(float) / PIB 126 | scheduled_df["expired_rb"] = scheduled_df["expired_bytes"].astype(float) / PIB 127 | scheduled_df["terminated_rb"] = scheduled_df["terminated_bytes"].astype(float) / PIB 128 | scheduled_df['schedule_expire_rb'] = scheduled_df["schedule_expire_bytes"].astype(float) / PIB 129 | 130 | scheduled_df["extended_qa"] = scheduled_df["extended_bytes_qap"].astype(float) / PIB 131 | scheduled_df["expired_qa"] = scheduled_df["expired_bytes_qap"].astype(float) / PIB 132 | scheduled_df['terminated_qa'] = scheduled_df['terminated_bytes_qap'].astype(float) / PIB 133 | scheduled_df["schedule_expire_qa"] = scheduled_df["schedule_expire_bytes_qap"].astype(float) / PIB 134 | 135 | scheduled_df["extended_pledge"] = scheduled_df["extended_pledge"].astype(float) 136 | scheduled_df["expired_pledge"] = scheduled_df["expired_pledge"].astype(float) 137 | scheduled_df["terminated_pledge"] = scheduled_df["terminated_pledge"].astype(float) 138 | scheduled_df["schedule_expire_pledge"] = scheduled_df["schedule_expire_pledge"].astype(float) 139 | 140 | # Total scheduled to expire, excluding terminated. Exclude terminated because 141 | scheduled_df["total_rb"] = ( 142 | scheduled_df["schedule_expire_rb"] - scheduled_df['terminated_rb'] 143 | ) 144 | scheduled_df["total_qa"] = ( 145 | scheduled_df["schedule_expire_qa"] - scheduled_df['terminated_qa'] 146 | ) 147 | scheduled_df["total_pledge"] = ( 148 | scheduled_df["schedule_expire_pledge"] - scheduled_df['terminated_pledge'] 149 | ) 150 | # Convert interest date to datetime 151 | scheduled_df["date"] = pd.to_datetime(scheduled_df["interest_date"]) 152 | # Filter dates 153 | scheduled_df = scheduled_df[ 154 | scheduled_df["date"] >= pd.to_datetime(start_date, utc="UTC") 155 | ] 156 | scheduled_df = scheduled_df[ 157 | scheduled_df["date"] < pd.to_datetime(end_date, utc="UTC") 158 | ] 159 | return scheduled_df 160 | 161 | @staticmethod 162 | def query_spacescope_daily_power_onboarded( 163 | start_date: datetime.date, 164 | end_date: datetime.date, 165 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS 166 | ) -> pd.DataFrame: 167 | url_template = "https://api.spacescope.io/v2/power/daily_power_onboarding_by_sector_size?end_date=%s&start_date=%s" 168 | df = SpacescopeDataConnection.spacescope_query(start_date, end_date, url_template, chunk_days) 169 | df['day_onboarded_rb_power_pib'] = (df['commit_rbp_32gib'] + df['commit_rbp_64gib']) / PIB 170 | df['day_onboarded_qa_power_pib'] = (df['commit_qap_32gib'] + df['commit_qap_64gib']) / PIB 171 | df['date'] = pd.to_datetime(df['stat_date']).dt.date 172 | 173 | # Filter columns 174 | onboards_df = df[ 175 | ["date", "day_onboarded_rb_power_pib", "day_onboarded_qa_power_pib"] 176 | ] 177 | return onboards_df 178 | 179 | @staticmethod 180 | def query_spacescope_supply_stats( 181 | start_date: datetime.date, 182 | end_date: datetime.date, 183 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS 184 | ) -> pd.DataFrame: 185 | url_template = "https://api.spacescope.io/v2/circulating_supply/circulating_supply?end_date=%s&start_date=%s" 186 | raw_stats_df = SpacescopeDataConnection.spacescope_query(start_date, end_date, url_template, chunk_days) 187 | # Convert metrics to float 188 | stats_df = raw_stats_df[ 189 | [ 190 | "circulating_fil", 191 | "mined_fil", 192 | "vested_fil", 193 | "locked_fil", 194 | "burnt_fil", 195 | "reserve_disbursed_fil" 196 | ] 197 | ].astype(float) 198 | # Convert dates to datetime dates 199 | stats_df["date"] = pd.to_datetime(raw_stats_df["stat_date"]).dt.date 200 | # Filter dates 201 | stats_df = stats_df[ 202 | (stats_df["date"] >= start_date) & (stats_df["date"] <= end_date) 203 | ] 204 | return stats_df 205 | 206 | @staticmethod 207 | def spacescope_query(start_date: datetime.date, 208 | end_date: datetime.date, 209 | url_template: str, 210 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS) -> pd.DataFrame: 211 | dates_chunked = SpacescopeDataConnection.chunk_dates(start_date, end_date, chunks_days=chunk_days) 212 | df_list = [] 213 | for d in dates_chunked: 214 | chunk_start = d[0].strftime('%Y-%m-%d') 215 | chunk_end = d[1].strftime('%Y-%m-%d') 216 | url = url_template % (chunk_end, chunk_start) 217 | df = SpacescopeDataConnection.spacescope_query_to_df(url) 218 | df_list.append(df) 219 | 220 | df_all = pd.concat(df_list, ignore_index=True) 221 | return df_all 222 | 223 | @staticmethod 224 | def query_historical_power(start_date: datetime.date, 225 | end_date: datetime.date, 226 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS) -> pd.DataFrame: 227 | url_template = "https://api.spacescope.io/v2/power/network_storage_capacity?end_date=%s&start_date=%s" 228 | df = SpacescopeDataConnection.spacescope_query(start_date, end_date, url_template, chunk_days) 229 | 230 | df['date'] = pd.to_datetime(df['stat_date']).dt.date 231 | df['total_qa_bytes_power'] = df['total_qa_bytes_power'].astype(float) 232 | df['total_raw_bytes_power'] = df['total_raw_bytes_power'].astype(float) 233 | df['baseline_power'] = df['baseline_power'].astype(float) 234 | 235 | return df 236 | 237 | @staticmethod 238 | def query_spacescope_power_stats( 239 | start_date: datetime.date, end_date: datetime.date, 240 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS 241 | ) -> pd.DataFrame: 242 | power_df = SpacescopeDataConnection.query_historical_power( 243 | start_date, end_date, chunk_days=chunk_days 244 | ) 245 | # Convert power stats to exibytes 246 | power_df["total_raw_power_eib"] = ( 247 | power_df["total_raw_bytes_power"] / EXBI 248 | ) 249 | power_df["total_qa_power_eib"] = ( 250 | power_df["total_qa_bytes_power"] / EXBI 251 | ) 252 | # Select final columns 253 | power_df = power_df[["date", "total_raw_power_eib", "total_qa_power_eib"]] 254 | return power_df 255 | 256 | @staticmethod 257 | def query_historical_baseline_power(start_date: datetime.date = None, 258 | end_date: datetime.date = None, 259 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS) -> pd.DataFrame: 260 | if start_date is None: 261 | start_date = NETWORK_START 262 | if end_date is None: 263 | end_date = datetime.datetime.today()-datetime.timedelta(days=2) 264 | 265 | historical_power_df = SpacescopeDataConnection.query_historical_power( 266 | start_date, end_date, chunk_days=chunk_days 267 | ) 268 | 269 | bp_df = historical_power_df[['date', 'baseline_power']] 270 | bp_df = bp_df.rename(columns={'baseline_power': 'baseline'}) 271 | return bp_df 272 | 273 | @staticmethod 274 | def query_historical_rb_power(start_date: datetime.date = None, 275 | end_date: datetime.date = None, 276 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS) -> pd.DataFrame: 277 | if start_date is None: 278 | start_date = NETWORK_START 279 | if end_date is None: 280 | end_date = datetime.datetime.today()-datetime.timedelta(days=2) 281 | 282 | historical_power_df = SpacescopeDataConnection.query_historical_power( 283 | start_date, end_date, chunk_days=chunk_days 284 | ) 285 | 286 | rbp_df = historical_power_df[['date', 'total_raw_bytes_power']] 287 | rbp_df = rbp_df.rename(columns={'total_raw_bytes_power': 'rb_power'}) 288 | return rbp_df 289 | 290 | @staticmethod 291 | def query_historical_qa_power(start_date: datetime.date = None, 292 | end_date: datetime.date = None, 293 | chunk_days: int = DEFAULT_SPACESCOPE_CHUNK_SIZE_IN_DAYS) -> pd.DataFrame: 294 | if start_date is None: 295 | start_date = NETWORK_START 296 | if end_date is None: 297 | end_date = datetime.datetime.today()-datetime.timedelta(days=2) 298 | 299 | historical_power_df = SpacescopeDataConnection.query_historical_power( 300 | start_date, end_date, chunk_days=chunk_days 301 | ) 302 | qap_df = historical_power_df[['date', 'total_raw_bytes_power']] 303 | qap_df = qap_df.rename(columns={'total_qa_bytes_power': 'qa_power'}) 304 | 305 | return qap_df 306 | -------------------------------------------------------------------------------- /mechafil/data_starboard.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import pandas as pd 3 | import numpy as np 4 | import datetime 5 | from typing import Tuple 6 | 7 | EXBI = 2**60 8 | PIB = 2**50 9 | 10 | 11 | def get_historical_network_stats( 12 | start_date: datetime.date, current_date: datetime.date, end_date: datetime.date 13 | ) -> pd.DataFrame: 14 | power_df = query_starboard_power_stats(start_date, current_date) 15 | onboards_df = query_starboard_daily_power_onboarded(start_date, current_date) 16 | stats_df = query_starboard_supply_stats(start_date, current_date) 17 | stats_df = stats_df.merge(power_df, on="date", how="inner").merge( 18 | onboards_df, on="date", how="inner" 19 | ) 20 | rb_renewal_rate, day_renewed_qa_power = get_day_renewed_power_stats( 21 | start_date, current_date, end_date 22 | ) 23 | stats_df["rb_renewal_rate"] = rb_renewal_rate 24 | stats_df["day_renewed_qa_power_pib"] = day_renewed_qa_power 25 | return stats_df 26 | 27 | 28 | def get_sector_expiration_stats( 29 | start_date: datetime.date, 30 | current_date: datetime.date, 31 | end_date: datetime.date, 32 | ) -> pd.DataFrame: 33 | scheduled_df = query_starboard_sector_expirations(start_date, end_date) 34 | filter_scheduled_df = scheduled_df[ 35 | scheduled_df["date"] >= pd.to_datetime(current_date, utc="UTC") 36 | ] 37 | rbp_expire_vec = filter_scheduled_df["total_rb"].values 38 | qap_expire_vec = filter_scheduled_df["total_qa"].values 39 | # we need the entire history of known_scheduled_pledge_release, so get the 40 | # data from the entire time-window, not just from current-date onwards 41 | pledge_release_vec = scheduled_df["total_pledge"].values 42 | return rbp_expire_vec, qap_expire_vec, pledge_release_vec 43 | 44 | 45 | def get_day_renewed_power_stats( 46 | start_date: datetime.date, 47 | current_date: datetime.date, 48 | end_date: datetime.date, 49 | ) -> Tuple[np.array, np.array]: 50 | scheduled_df = query_starboard_sector_expirations(start_date, end_date) 51 | filter_scheduled_df = scheduled_df[ 52 | scheduled_df["date"] < pd.to_datetime(current_date, utc="UTC") 53 | ] 54 | rb_renewal_rate = ( 55 | filter_scheduled_df["extended_rb"] / filter_scheduled_df["total_rb"] 56 | ).values 57 | day_renewed_qa_power = filter_scheduled_df["extended_qa"].values 58 | return rb_renewal_rate, day_renewed_qa_power 59 | 60 | 61 | def query_starboard_sector_expirations( 62 | start_date: datetime.date, end_date: datetime.date 63 | ) -> pd.DataFrame: 64 | url = f"https://observable-api.starboard.ventures/getdata/sectors_schedule_expiration_full?start={str(start_date)}&end={str(end_date)}" 65 | r = requests.get(url) 66 | # Put data in dataframe 67 | scheduled_df = pd.DataFrame(r.json()["data"]) 68 | # Convert bytes to pebibytes 69 | scheduled_df["extended_rb"] = scheduled_df["extended_bytes"].astype(float) / PIB 70 | scheduled_df["expired_rb"] = scheduled_df["expired_bytes"].astype(float) / PIB 71 | scheduled_df["open_rb"] = scheduled_df["potential_expire_bytes"].astype(float) / PIB 72 | scheduled_df["extended_qa"] = scheduled_df["extended_bytes_qap"].astype(float) / PIB 73 | scheduled_df["expired_qa"] = scheduled_df["expired_bytes_qap"].astype(float) / PIB 74 | scheduled_df["open_qa"] = ( 75 | scheduled_df["potential_expire_bytes_qap"].astype(float) / PIB 76 | ) 77 | # Total scheduled to expire, excluding terminated 78 | scheduled_df["total_rb"] = ( 79 | scheduled_df["extended_rb"] 80 | + scheduled_df["expired_rb"] 81 | + scheduled_df["open_rb"] 82 | ) 83 | scheduled_df["total_qa"] = ( 84 | scheduled_df["extended_qa"] 85 | + scheduled_df["expired_qa"] 86 | + scheduled_df["open_qa"] 87 | ) 88 | scheduled_df["total_pledge"] = ( 89 | scheduled_df["extended_pledge"].astype(float) 90 | + scheduled_df["expired_pledge"].astype(float) 91 | + scheduled_df["potential_expire_pledge"].astype(float) 92 | ) 93 | 94 | scheduled_df["schedule_expire_rb"] = scheduled_df["schedule_expire_bytes"].astype(float) / PIB 95 | scheduled_df["schedule_expire_qa"] = scheduled_df["schedule_expire_bytes_qap"].astype(float) / PIB 96 | scheduled_df["schedule_expire_pledge"] = scheduled_df["schedule_expire_pledge"].astype(float) 97 | 98 | # Convert interest date to datetime 99 | scheduled_df["date"] = pd.to_datetime(scheduled_df["interest_date"]) 100 | # Filter dates 101 | scheduled_df = scheduled_df[ 102 | scheduled_df["date"] >= pd.to_datetime(start_date, utc="UTC") 103 | ] 104 | scheduled_df = scheduled_df[ 105 | scheduled_df["date"] < pd.to_datetime(end_date, utc="UTC") 106 | ] 107 | return scheduled_df 108 | 109 | 110 | def query_starboard_daily_power_onboarded( 111 | start_date: datetime.date, 112 | end_date: datetime.date, 113 | ) -> pd.DataFrame: 114 | # Get data from prove-commit-split-d API 115 | url = f"https://observable-api.starboard.ventures/api/v1/observable/prove-commit-split-d-v2?start={str(start_date)}&end={str(end_date)}" 116 | r = requests.get(url) 117 | onboards_df = pd.DataFrame(r.json()["data"]) 118 | # Compute total onboardings 119 | onboards_df["day_onboarded_rb_power_pib"] = ( 120 | onboards_df["half_size_byte"].astype(float) 121 | + onboards_df["size_byte"].astype(float) 122 | ) / PIB 123 | onboards_df["day_onboarded_qa_power_pib"] = ( 124 | onboards_df["half_size_byte_qap"].astype(float) 125 | + onboards_df["size_byte_qap"].astype(float) 126 | ) / PIB 127 | # Convert dates to datetime 128 | onboards_df["date"] = pd.to_datetime(onboards_df["stat_date"]).dt.date 129 | # Filter dates 130 | onboards_df = onboards_df[ 131 | (onboards_df["date"] >= start_date) & (onboards_df["date"] <= end_date) 132 | ] 133 | # Filter columns 134 | onboards_df = onboards_df[ 135 | ["date", "day_onboarded_rb_power_pib", "day_onboarded_qa_power_pib"] 136 | ] 137 | return onboards_df 138 | 139 | 140 | def query_starboard_supply_stats( 141 | start_date: datetime.date, 142 | end_date: datetime.date, 143 | ) -> pd.DataFrame: 144 | url = f"https://observable-api.starboard.ventures/api/v1/observable/circulating-supply?start={str(start_date)}&end={str(end_date)}" 145 | r = requests.get(url) 146 | raw_stats_df = pd.DataFrame(r.json()["data"]) 147 | # Convert metrics to float 148 | stats_df = raw_stats_df[ 149 | [ 150 | "circulating_fil", 151 | "mined_fil", 152 | "vested_fil", 153 | "locked_fil", 154 | "burnt_fil", 155 | ] 156 | ].astype(float) 157 | # Convert dates to datetime dates 158 | stats_df["date"] = pd.to_datetime(raw_stats_df["stat_date"]).dt.date 159 | # Filter dates 160 | stats_df = stats_df[ 161 | (stats_df["date"] >= start_date) & (stats_df["date"] <= end_date) 162 | ] 163 | return stats_df 164 | 165 | 166 | def query_starboard_power_stats( 167 | start_date: datetime.date, end_date: datetime.date 168 | ) -> pd.DataFrame: 169 | url = f"https://observable-api.starboard.ventures/network_storage_capacity?start={str(start_date)}&end={str(end_date)}" 170 | r = requests.get(url) 171 | power_df = pd.DataFrame(r.json()["data"]) 172 | # Convert dates to datetime dates 173 | power_df["date"] = pd.to_datetime(power_df["stat_date"]).dt.date 174 | # Filter dates 175 | power_df = power_df[ 176 | (power_df["date"] >= start_date) & (power_df["date"] <= end_date) 177 | ] 178 | # Convert power stats to exibytes 179 | power_df["total_raw_power_eib"] = ( 180 | power_df["total_raw_bytes_power"].astype(float) / EXBI 181 | ) 182 | power_df["total_qa_power_eib"] = ( 183 | power_df["total_qa_bytes_power"].astype(float) / EXBI 184 | ) 185 | # Select final columns 186 | power_df = power_df[["date", "total_raw_power_eib", "total_qa_power_eib"]] 187 | return power_df 188 | 189 | 190 | def query_historical_baseline_power() -> pd.DataFrame: 191 | url = f"https://observable-api.starboard.ventures/api/v1/observable/network-storage-capacity/new_baseline_power" 192 | r = requests.get(url) 193 | bp_df = pd.DataFrame(r.json()["data"]) 194 | bp_df["date"] = pd.to_datetime(bp_df["stat_date"]) 195 | bp_df["baseline"] = bp_df["new_baseline_power"].astype(float) 196 | bp_df = bp_df[["date", "baseline"]] 197 | return bp_df 198 | 199 | 200 | def query_historical_rb_power() -> pd.DataFrame: 201 | url = f"https://observable-api.starboard.ventures/network_storage_capacity/total_raw_bytes_power" 202 | r = requests.get(url) 203 | rbp_df = pd.DataFrame(r.json()["data"]) 204 | rbp_df["date"] = pd.to_datetime(rbp_df["stat_date"]) 205 | rbp_df["rb_power"] = rbp_df["total_raw_bytes_power"].astype(float) 206 | rbp_df = rbp_df[["date", "rb_power"]] 207 | return rbp_df 208 | 209 | 210 | def query_historical_qa_power() -> pd.DataFrame: 211 | url = f"https://observable-api.starboard.ventures/network_storage_capacity/total_qa_bytes_power" 212 | r = requests.get(url) 213 | qap_df = pd.DataFrame(r.json()["data"]) 214 | qap_df["date"] = pd.to_datetime(qap_df["stat_date"]) 215 | qap_df["qa_power"] = qap_df["total_qa_bytes_power"].astype(float) 216 | qap_df = qap_df[["date", "qa_power"]] 217 | return qap_df 218 | -------------------------------------------------------------------------------- /mechafil/locking.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | GIB = 2**30 4 | 5 | # Block reward collateral 6 | def compute_day_locked_rewards(day_network_reward: float) -> float: 7 | return 0.75 * day_network_reward 8 | 9 | 10 | def compute_day_reward_release(prev_network_locked_reward: float) -> float: 11 | return prev_network_locked_reward / 180.0 12 | 13 | 14 | # Initial pledge collateral 15 | def compute_day_delta_pledge( 16 | day_network_reward: float, 17 | prev_circ_supply: float, 18 | day_onboarded_qa_power: float, 19 | day_renewed_qa_power: float, 20 | total_qa_power: float, 21 | baseline_power: float, 22 | renewal_rate: float, 23 | scheduled_pledge_release: float, 24 | lock_target: float = 0.3, 25 | ) -> float: 26 | onboards_delta = compute_new_pledge_for_added_power( 27 | day_network_reward, 28 | prev_circ_supply, 29 | day_onboarded_qa_power, 30 | total_qa_power, 31 | baseline_power, 32 | lock_target, 33 | ) 34 | renews_delta = compute_renewals_delta_pledge( 35 | day_network_reward, 36 | prev_circ_supply, 37 | day_renewed_qa_power, 38 | total_qa_power, 39 | baseline_power, 40 | renewal_rate, 41 | scheduled_pledge_release, 42 | lock_target, 43 | ) 44 | return onboards_delta + renews_delta 45 | 46 | 47 | def compute_day_locked_pledge( 48 | day_network_reward: float, 49 | prev_circ_supply: float, 50 | day_onboarded_qa_power: float, 51 | day_renewed_qa_power: float, 52 | total_qa_power: float, 53 | baseline_power: float, 54 | renewal_rate: float, 55 | scheduled_pledge_release: float, 56 | lock_target: float = 0.3, 57 | ) -> float: 58 | # Total locked from new onboards 59 | onboards_locked = compute_new_pledge_for_added_power( 60 | day_network_reward, 61 | prev_circ_supply, 62 | day_onboarded_qa_power, 63 | total_qa_power, 64 | baseline_power, 65 | lock_target, 66 | ) 67 | # Total locked from renewals 68 | original_pledge = renewal_rate * scheduled_pledge_release 69 | new_pledge = compute_new_pledge_for_added_power( 70 | day_network_reward, 71 | prev_circ_supply, 72 | day_renewed_qa_power, 73 | total_qa_power, 74 | baseline_power, 75 | lock_target, 76 | ) 77 | renews_locked = max(original_pledge, new_pledge) 78 | # Total locked pledge 79 | locked = onboards_locked + renews_locked 80 | return locked, renews_locked 81 | 82 | 83 | def compute_renewals_delta_pledge( 84 | day_network_reward: float, 85 | prev_circ_supply: float, 86 | day_renewed_qa_power: float, 87 | total_qa_power: float, 88 | baseline_power: float, 89 | renewal_rate: float, 90 | scheduled_pledge_release: float, 91 | lock_target: float, 92 | ) -> float: 93 | # Delta from sectors expiring 94 | expire_delta = -(1 - renewal_rate) * scheduled_pledge_release 95 | # Delta from sector renewing 96 | original_pledge = renewal_rate * scheduled_pledge_release 97 | new_pledge = compute_new_pledge_for_added_power( 98 | day_network_reward, 99 | prev_circ_supply, 100 | day_renewed_qa_power, 101 | total_qa_power, 102 | baseline_power, 103 | lock_target, 104 | ) 105 | renew_delta = max(0.0, new_pledge - original_pledge) 106 | # Delta for all scheduled sectors 107 | delta = expire_delta + renew_delta 108 | return delta 109 | 110 | 111 | def compute_new_pledge_for_added_power( 112 | day_network_reward: float, 113 | prev_circ_supply: float, 114 | day_added_qa_power: float, 115 | total_qa_power: float, 116 | baseline_power: float, 117 | lock_target: float, 118 | ) -> float: 119 | # storage collateral 120 | storage_pledge = 20.0 * day_network_reward * (day_added_qa_power / total_qa_power) 121 | # consensus collateral 122 | normalized_qap_growth = day_added_qa_power / max(total_qa_power, baseline_power) 123 | consensus_pledge = max(lock_target * prev_circ_supply * normalized_qap_growth, 0) 124 | # total added pledge 125 | added_pledge = storage_pledge + consensus_pledge 126 | 127 | pledge_cap = day_added_qa_power * 1.0 / GIB # The # of bytes in a GiB (Gibibyte) 128 | return min(pledge_cap, added_pledge) 129 | 130 | 131 | def get_day_schedule_pledge_release( 132 | day_i, 133 | current_day_i, 134 | day_pledge_locked_vec: np.array, 135 | known_scheduled_pledge_release_vec: np.array, 136 | duration: int, 137 | ) -> float: 138 | # scheduled releases coming from known active sectors 139 | if day_i > len(known_scheduled_pledge_release_vec) - 1: 140 | known_day_release = 0.0 141 | else: 142 | known_day_release = known_scheduled_pledge_release_vec[day_i] 143 | # schedule releases coming from modeled sectors 144 | if day_i - duration >= current_day_i: 145 | model_day_release = day_pledge_locked_vec[day_i - duration] 146 | else: 147 | model_day_release = 0.0 148 | # Total pledge schedule releases 149 | day_pledge_schedules_release = known_day_release + model_day_release 150 | return day_pledge_schedules_release 151 | -------------------------------------------------------------------------------- /mechafil/minting.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import numpy as np 3 | import pandas as pd 4 | 5 | from .data import get_storage_baseline_value, \ 6 | get_cum_capped_rb_power, get_cum_capped_qa_power 7 | 8 | EXBI = 2**60 9 | PIB = 2**50 10 | LAMBDA = np.log(2) / ( 11 | 6.0 * 365 12 | ) # minting exponential reward decay rate (6yrs half-life) 13 | FIL_BASE = 2_000_000_000.0 14 | STORAGE_MINING = 0.55 * FIL_BASE 15 | SIMPLE_ALLOC = 0.3 * STORAGE_MINING # total simple minting allocation 16 | BASELINE_ALLOC = 0.7 * STORAGE_MINING # total baseline minting allocation 17 | GROWTH_RATE = float( 18 | np.log(2) / 365.0 19 | ) # daily baseline growth rate (the "g" from https://spec.filecoin.io/#section-systems.filecoin_token) 20 | BASELINE_STORAGE = ( 21 | 2.766213637444971 22 | * EXBI 23 | # the b_0 from https://spec.filecoin.io/#section-systems.filecoin_token 24 | ) 25 | # TODO: understand why the baseline value from startboard differs from the spec! 26 | # 3189227188947035000 from https://observable-api.starboard.ventures/api/v1/observable/network-storage-capacity/new_baseline_power 27 | 28 | def compute_minting_trajectory_df( 29 | start_date: datetime.date, 30 | end_date: datetime.date, 31 | rb_total_power_eib: np.array, 32 | qa_total_power_eib: np.array, 33 | qa_day_onboarded_power_pib: np.array, 34 | qa_day_renewed_power_pib: np.array, 35 | minting_base: str = 'RBP' 36 | ) -> pd.DataFrame: 37 | # we assume minting started at main net launch, in 2020-10-15 38 | start_day = (start_date - datetime.date(2020, 10, 15)).days 39 | end_day = (end_date - datetime.date(2020, 10, 15)).days 40 | 41 | minting_base = minting_base.lower() 42 | capped_power_reference = 'network_RBP' if minting_base == 'rbp' else 'network_QAP' 43 | 44 | # Init dataframe 45 | df = pd.DataFrame( 46 | { 47 | "days": np.arange(start_day, end_day), 48 | "date": pd.date_range(start_date, end_date, freq="d")[:-1], 49 | "network_RBP": rb_total_power_eib * EXBI, 50 | "network_QAP": qa_total_power_eib * EXBI, 51 | "day_onboarded_power_QAP": qa_day_onboarded_power_pib * PIB, 52 | "day_renewed_power_QAP": qa_day_renewed_power_pib * PIB, 53 | } 54 | ) 55 | df["date"] = df["date"].dt.date 56 | # Compute cumulative rewards due to simple minting 57 | df["cum_simple_reward"] = df["days"].pipe(cum_simple_minting) 58 | # Compute cumulative rewards due to baseline minting 59 | df["network_baseline"] = compute_baseline_power_array(start_date, end_date) 60 | 61 | df["capped_power"] = np.min(df[["network_baseline", capped_power_reference]].values, axis=1) 62 | zero_cum_capped_power = get_cum_capped_rb_power(start_date) 63 | df["cum_capped_power"] = df["capped_power"].cumsum() + zero_cum_capped_power 64 | df["network_time"] = df["cum_capped_power"].pipe(network_time) 65 | df["cum_baseline_reward"] = df["network_time"].pipe(cum_baseline_reward) 66 | # Add cumulative rewards and get daily rewards minted 67 | df["cum_network_reward"] = df["cum_baseline_reward"] + df["cum_simple_reward"] 68 | df["day_network_reward"] = df["cum_network_reward"].diff().fillna(method="backfill") 69 | 70 | return df 71 | 72 | 73 | def cum_simple_minting(day: int) -> float: 74 | """ 75 | Simple minting - the total number of tokens that should have been emitted 76 | by simple minting up until date provided. 77 | """ 78 | return SIMPLE_ALLOC * (1 - np.exp(-LAMBDA * day)) 79 | 80 | 81 | def compute_baseline_power_array( 82 | start_date: datetime.date, end_date: datetime.date 83 | ) -> np.array: 84 | arr_len = (end_date - start_date).days 85 | exponents = np.arange(0, arr_len) 86 | init_baseline = get_storage_baseline_value(start_date) 87 | baseline_power_arr = init_baseline * np.exp(GROWTH_RATE * exponents) 88 | return baseline_power_arr 89 | 90 | 91 | def network_time(cum_capped_power: float) -> float: 92 | EXA_TO_EIB = (10**18) / (2**60) 93 | b0 = BASELINE_STORAGE * EXA_TO_EIB 94 | g = GROWTH_RATE 95 | return (1 / g) * np.log(((g * cum_capped_power) / b0) + 1) 96 | 97 | 98 | def cum_baseline_reward(network_time: float) -> float: 99 | return BASELINE_ALLOC * (1 - np.exp(-LAMBDA * network_time)) 100 | -------------------------------------------------------------------------------- /mechafil/power.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import datetime 4 | from typing import Callable, Tuple, Union 5 | import numbers 6 | 7 | from .utils import validate_qap_method 8 | 9 | # -------------------------------------------------------------------------------------- 10 | # Utility functions 11 | # -------------------------------------------------------------------------------------- 12 | def scalar_or_vector_to_vector( 13 | input_x: Union[np.array, float], expected_len: int, err_msg: str = None 14 | ) -> np.array: 15 | if isinstance(input_x, numbers.Number): 16 | return np.ones(expected_len) * input_x 17 | else: 18 | err_msg_out = ( 19 | "vector input does not match expected length!" 20 | if err_msg is None 21 | else err_msg 22 | ) 23 | assert len(input_x) == expected_len, err_msg_out 24 | return input_x 25 | 26 | 27 | # -------------------------------------------------------------------------------------- 28 | # QA Multiplier functions 29 | # -------------------------------------------------------------------------------------- 30 | def compute_qa_factor( 31 | fil_plus_rate: Union[np.array, float], 32 | fil_plus_m: float = 10.0, 33 | duration_m: Callable = None, 34 | duration: int = None, 35 | ) -> Union[np.array, float]: 36 | fil_plus_multipler = 1.0 + (fil_plus_m - 1) * fil_plus_rate 37 | if duration_m is None: 38 | return fil_plus_multipler 39 | else: 40 | return duration_m(duration) * fil_plus_multipler 41 | 42 | 43 | # -------------------------------------------------------------------------------------- 44 | # Onboardings 45 | # -------------------------------------------------------------------------------------- 46 | def forecast_rb_daily_onboardings( 47 | rb_onboard_power: float, forecast_lenght: int 48 | ) -> np.array: 49 | rb_onboarded_power_vec = scalar_or_vector_to_vector( 50 | rb_onboard_power, 51 | forecast_lenght, 52 | err_msg="If rb_onboard_power is provided as a vector, it must be the same length as the forecast length", 53 | ) 54 | return rb_onboarded_power_vec 55 | 56 | 57 | def forecast_qa_daily_onboardings( 58 | rb_onboard_power: Union[np.array, float], 59 | fil_plus_rate: Union[np.array, float], 60 | forecast_lenght: int, 61 | fil_plus_m: float = 10.0, 62 | duration_m: Callable = None, 63 | duration: int = None, 64 | ) -> np.array: 65 | # If duration_m is not provided, qa_factor = 1.0 + 9.0 * fil_plus_rate 66 | qa_factor = compute_qa_factor(fil_plus_rate, fil_plus_m, duration_m, duration) 67 | qa_onboard_power = qa_factor * rb_onboard_power 68 | qa_onboard_power_vec = scalar_or_vector_to_vector( 69 | qa_onboard_power, 70 | forecast_lenght, 71 | err_msg="If qa_onboard_power is provided as a vector, it must be the same length as the forecast length", 72 | ) 73 | return qa_onboard_power_vec 74 | 75 | 76 | # -------------------------------------------------------------------------------------- 77 | # Renewals 78 | # -------------------------------------------------------------------------------------- 79 | def compute_basic_day_renewed_power( 80 | day_i: int, 81 | day_scheduled_expire_power_vec: np.array, 82 | renewal_rate_vec: np.array, 83 | ) -> float: 84 | day_renewed_power = renewal_rate_vec[day_i] * day_scheduled_expire_power_vec[day_i] 85 | return day_renewed_power 86 | 87 | 88 | def compute_day_qa_renewed_power( 89 | day_i: int, 90 | day_rb_scheduled_expire_power_vec: np.array, 91 | renewal_rate_vec: np.array, 92 | fil_plus_rate: float, 93 | fil_plus_m: float = 10.0, 94 | duration_m: Callable = None, 95 | duration: int = None, 96 | ) -> float: 97 | fpr = ( 98 | fil_plus_rate 99 | if isinstance(fil_plus_rate, numbers.Number) 100 | else fil_plus_rate[day_i] 101 | ) 102 | qa_factor = compute_qa_factor(fpr, fil_plus_m, duration_m, duration) 103 | day_renewed_power = ( 104 | qa_factor * renewal_rate_vec[day_i] * day_rb_scheduled_expire_power_vec[day_i] 105 | ) 106 | return day_renewed_power 107 | 108 | 109 | # -------------------------------------------------------------------------------------- 110 | # Scheduled expirations 111 | # -------------------------------------------------------------------------------------- 112 | def compute_day_se_power( 113 | day_i: int, 114 | known_scheduled_expire_vec: np.array, 115 | day_onboard_vec: np.array, 116 | day_renewed_vec: np.array, 117 | duration: int, 118 | ) -> float: 119 | # Scheduled expirations coming from known active sectors 120 | if day_i > len(known_scheduled_expire_vec) - 1: 121 | known_day_se_power = 0.0 122 | else: 123 | known_day_se_power = known_scheduled_expire_vec[day_i] 124 | # Scheduled expirations coming from modeled sectors 125 | if day_i - duration >= 0: 126 | model_day_se_power = ( 127 | day_onboard_vec[day_i - duration] + day_renewed_vec[day_i - duration] 128 | ) 129 | else: 130 | model_day_se_power = 0.0 131 | # Total scheduled expirations 132 | day_se_power = known_day_se_power + model_day_se_power 133 | return day_se_power 134 | 135 | 136 | # -------------------------------------------------------------------------------------- 137 | # Forecast Power stats 138 | # -------------------------------------------------------------------------------------- 139 | def forecast_power_stats( 140 | rb_power_zero: float, 141 | qa_power_zero: float, 142 | rb_onboard_power: Union[np.array, float], 143 | rb_known_scheduled_expire_vec: np.array, 144 | qa_known_scheduled_expire_vec: np.array, 145 | renewal_rate: Union[np.array, float], 146 | fil_plus_rate: Union[np.array, float], 147 | duration: int, 148 | forecast_lenght: int, 149 | fil_plus_m: float = 10.0, 150 | duration_m: Callable = None, 151 | qap_method: str = 'tunable' # can be set to tunable or basic 152 | # see: https://hackmd.io/O6HmAb--SgmxkjLWSpbN_A?view 153 | ) -> Tuple[pd.DataFrame, pd.DataFrame]: 154 | validate_qap_method(qap_method) 155 | 156 | # Forecast onboards 157 | renewal_rate_vec = scalar_or_vector_to_vector( 158 | renewal_rate, 159 | forecast_lenght, 160 | err_msg="If renewal_rate is provided as a vector, it must be the same length as the forecast length", 161 | ) 162 | 163 | day_rb_onboarded_power = forecast_rb_daily_onboardings( 164 | rb_onboard_power, forecast_lenght 165 | ) 166 | 167 | total_rb_onboarded_power = day_rb_onboarded_power.cumsum() 168 | day_qa_onboarded_power = forecast_qa_daily_onboardings( 169 | rb_onboard_power, 170 | fil_plus_rate, 171 | forecast_lenght, 172 | fil_plus_m, 173 | duration_m, 174 | duration, 175 | ) 176 | total_qa_onboarded_power = day_qa_onboarded_power.cumsum() 177 | # Initialize scheduled expirations and renewals 178 | day_rb_scheduled_expire_power = np.zeros(forecast_lenght) 179 | day_rb_renewed_power = np.zeros(forecast_lenght) 180 | day_qa_scheduled_expire_power = np.zeros(forecast_lenght) 181 | day_qa_renewed_power = np.zeros(forecast_lenght) 182 | # Run loop to forecast daily scheduled expirations and renewals 183 | for day_i in range(forecast_lenght): 184 | # Raw-power stats 185 | day_rb_scheduled_expire_power[day_i] = compute_day_se_power( 186 | day_i, 187 | rb_known_scheduled_expire_vec, 188 | day_rb_onboarded_power, 189 | day_rb_renewed_power, 190 | duration, 191 | ) 192 | day_rb_renewed_power[day_i] = compute_basic_day_renewed_power( 193 | day_i, day_rb_scheduled_expire_power, renewal_rate_vec 194 | ) 195 | # Quality-adjusted stats 196 | day_qa_scheduled_expire_power[day_i] = compute_day_se_power( 197 | day_i, 198 | qa_known_scheduled_expire_vec, 199 | day_qa_onboarded_power, 200 | day_qa_renewed_power, 201 | duration, 202 | ) 203 | 204 | # see https://hackmd.io/O6HmAb--SgmxkjLWSpbN_A?view for more details 205 | if qap_method == 'tunable': 206 | day_qa_renewed_power[day_i] = compute_day_qa_renewed_power( 207 | day_i, 208 | day_rb_scheduled_expire_power, 209 | renewal_rate_vec, 210 | fil_plus_rate, 211 | fil_plus_m, 212 | duration_m, 213 | duration, 214 | ) 215 | elif qap_method == 'basic': 216 | day_qa_renewed_power[day_i] = compute_basic_day_renewed_power( 217 | day_i, day_qa_scheduled_expire_power, renewal_rate_vec 218 | ) 219 | # Compute total scheduled expirations and renewals 220 | total_rb_scheduled_expire_power = day_rb_scheduled_expire_power.cumsum() 221 | total_rb_renewed_power = day_rb_renewed_power.cumsum() 222 | total_qa_scheduled_expire_power = day_qa_scheduled_expire_power.cumsum() 223 | total_qa_renewed_power = day_qa_renewed_power.cumsum() 224 | # Total RB power 225 | rb_power_zero_vec = np.ones(forecast_lenght) * rb_power_zero 226 | rb_total_power = ( 227 | rb_power_zero_vec 228 | + total_rb_onboarded_power 229 | - total_rb_scheduled_expire_power 230 | + total_rb_renewed_power 231 | ) 232 | # Total QA power 233 | qa_power_zero_vec = np.ones(forecast_lenght) * qa_power_zero 234 | qa_total_power = ( 235 | qa_power_zero_vec 236 | + total_qa_onboarded_power 237 | - total_qa_scheduled_expire_power 238 | + total_qa_renewed_power 239 | ) 240 | # Build DataFrames 241 | rb_df = pd.DataFrame( 242 | { 243 | "forecasting_step": np.arange(forecast_lenght), 244 | "onboarded_power": day_rb_onboarded_power, 245 | "cum_onboarded_power": total_rb_onboarded_power, 246 | "expire_scheduled_power": day_rb_scheduled_expire_power, 247 | "cum_expire_scheduled_power": total_rb_scheduled_expire_power, 248 | "renewed_power": day_rb_renewed_power, 249 | "cum_renewed_power": total_rb_renewed_power, 250 | "total_power": rb_total_power, 251 | } 252 | ) 253 | rb_df["power_type"] = "raw-byte" 254 | qa_df = pd.DataFrame( 255 | { 256 | "forecasting_step": np.arange(forecast_lenght), 257 | "onboarded_power": day_qa_onboarded_power, 258 | "cum_onboarded_power": total_qa_onboarded_power, 259 | "expire_scheduled_power": day_qa_scheduled_expire_power, 260 | "cum_expire_scheduled_power": total_qa_scheduled_expire_power, 261 | "renewed_power": day_qa_renewed_power, 262 | "cum_renewed_power": total_qa_renewed_power, 263 | "total_power": qa_total_power, 264 | } 265 | ) 266 | qa_df["power_type"] = "quality-adjusted" 267 | return rb_df, qa_df 268 | 269 | 270 | # -------------------------------------------------------------------------------------- 271 | # Build power stats DataFrame 272 | # -------------------------------------------------------------------------------------- 273 | def build_full_power_stats_df( 274 | stats_df: pd.DataFrame, 275 | rb_power_df: pd.DataFrame, 276 | qa_power_df: pd.DataFrame, 277 | start_date: datetime.date, 278 | current_date: datetime.date, 279 | end_date: datetime.date, 280 | ) -> pd.DataFrame: 281 | # Past power 282 | past_power_df = stats_df[ 283 | [ 284 | "date", 285 | "total_raw_power_eib", 286 | "total_qa_power_eib", 287 | "day_onboarded_qa_power_pib", 288 | "day_renewed_qa_power_pib", 289 | ] 290 | ] 291 | # Forecasted power 292 | forecast_power_df = rb_power_df[["total_raw_power_eib"]] 293 | forecast_power_df.loc[:, "total_qa_power_eib"] = qa_power_df["total_qa_power_eib"] 294 | forecast_power_df.loc[:, "day_onboarded_qa_power_pib"] = qa_power_df[ 295 | "onboarded_power" 296 | ] 297 | forecast_power_df.loc[:, "day_renewed_qa_power_pib"] = qa_power_df["renewed_power"] 298 | forecast_start_date = current_date + datetime.timedelta(days=1) 299 | forecast_power_df.loc[:, "date"] = pd.date_range( 300 | start=forecast_start_date, end=end_date, freq="d" 301 | ) 302 | forecast_power_df["date"] = forecast_power_df["date"].dt.date 303 | # All power stats 304 | concat_df = pd.concat([past_power_df, forecast_power_df]) 305 | power_df = pd.DataFrame( 306 | {"date": pd.date_range(start=start_date, end=end_date, freq="d")} 307 | ) 308 | power_df["date"] = power_df["date"].dt.date 309 | power_df = power_df.merge(concat_df, on="date", how="left").fillna( 310 | method="backfill" 311 | ) 312 | power_df = power_df.iloc[:-1] 313 | return power_df 314 | -------------------------------------------------------------------------------- /mechafil/sim.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import pandas as pd 4 | import numpy as np 5 | import datetime 6 | from typing import Union 7 | 8 | from .data import get_historical_network_stats, get_sector_expiration_stats, setup_spacescope 9 | from .power import ( 10 | forecast_power_stats, 11 | build_full_power_stats_df, 12 | scalar_or_vector_to_vector, 13 | ) 14 | from .vesting import compute_vesting_trajectory_df 15 | from .minting import compute_minting_trajectory_df 16 | from .supply import forecast_circulating_supply_df 17 | 18 | from .utils import validate_qap_method 19 | 20 | def setup_data_access(bearer_token_or_cfg: str): 21 | setup_spacescope(bearer_token_or_cfg) 22 | 23 | def validate_current_date(current_date: datetime.date): 24 | if current_date > (datetime.date.today() - datetime.timedelta(days=2)): 25 | raise ValueError("Current date must be at least 2 days in the past!") 26 | 27 | def run_simple_sim( 28 | start_date: datetime.date, 29 | current_date: datetime.date, 30 | forecast_length: int, 31 | renewal_rate: Union[np.array, float], 32 | rb_onboard_power: Union[np.array, float], 33 | fil_plus_rate: Union[np.array, float], 34 | duration: int, 35 | bearer_token_or_cfg: str, 36 | qap_method: str = 'basic' # can be set to tunable or basic 37 | # see: https://hackmd.io/O6HmAb--SgmxkjLWSpbN_A?view 38 | ) -> pd.DataFrame: 39 | validate_qap_method(qap_method) 40 | setup_data_access(bearer_token_or_cfg) 41 | validate_current_date(current_date) 42 | 43 | end_date = current_date + datetime.timedelta(days=forecast_length) 44 | # Get sector scheduled expirations 45 | res = get_sector_expiration_stats(start_date, current_date, end_date) 46 | rb_known_scheduled_expire_vec = res[0] 47 | qa_known_scheduled_expire_vec = res[1] 48 | known_scheduled_pledge_release_full_vec = res[2] 49 | # Get daily stats 50 | fil_stats_df = get_historical_network_stats(start_date, current_date, end_date) 51 | current_day_stats = fil_stats_df[fil_stats_df["date"] >= current_date].iloc[0] 52 | # Forecast power stats 53 | rb_power_zero = current_day_stats["total_raw_power_eib"] * 1024.0 54 | qa_power_zero = current_day_stats["total_qa_power_eib"] * 1024.0 55 | rb_power_df, qa_power_df = forecast_power_stats( 56 | rb_power_zero, 57 | qa_power_zero, 58 | rb_onboard_power, 59 | rb_known_scheduled_expire_vec, 60 | qa_known_scheduled_expire_vec, 61 | renewal_rate, 62 | fil_plus_rate, 63 | duration, 64 | forecast_length, 65 | qap_method=qap_method 66 | ) 67 | rb_power_df["total_raw_power_eib"] = rb_power_df["total_power"] / 1024.0 68 | qa_power_df["total_qa_power_eib"] = qa_power_df["total_power"] / 1024.0 69 | power_df = build_full_power_stats_df( 70 | fil_stats_df, 71 | rb_power_df, 72 | qa_power_df, 73 | start_date, 74 | current_date, 75 | end_date, 76 | ) 77 | # Forecast Vesting 78 | vest_df = compute_vesting_trajectory_df(start_date, end_date) 79 | # Forecast minting stats and baseline 80 | rb_total_power_eib = power_df["total_raw_power_eib"].values 81 | qa_total_power_eib = power_df["total_qa_power_eib"].values 82 | qa_day_onboarded_power_pib = power_df["day_onboarded_qa_power_pib"].values 83 | qa_day_renewed_power_pib = power_df["day_renewed_qa_power_pib"].values 84 | mint_df = compute_minting_trajectory_df( 85 | start_date, 86 | end_date, 87 | rb_total_power_eib, 88 | qa_total_power_eib, 89 | qa_day_onboarded_power_pib, 90 | qa_day_renewed_power_pib, 91 | ) 92 | # Forecast circulating supply 93 | start_day_stats = fil_stats_df.iloc[0] 94 | circ_supply_zero = start_day_stats["circulating_fil"] 95 | locked_fil_zero = start_day_stats["locked_fil"] 96 | daily_burnt_fil = fil_stats_df["burnt_fil"].diff().mean() 97 | burnt_fil_vec = fil_stats_df["burnt_fil"].values 98 | forecast_renewal_rate_vec = scalar_or_vector_to_vector( 99 | renewal_rate, forecast_length 100 | ) 101 | past_renewal_rate_vec = fil_stats_df["rb_renewal_rate"].values[:-1] 102 | renewal_rate_vec = np.concatenate( 103 | [past_renewal_rate_vec, forecast_renewal_rate_vec] 104 | ) 105 | cil_df = forecast_circulating_supply_df( 106 | start_date, 107 | current_date, 108 | end_date, 109 | circ_supply_zero, 110 | locked_fil_zero, 111 | daily_burnt_fil, 112 | duration, 113 | renewal_rate_vec, 114 | burnt_fil_vec, 115 | vest_df, 116 | mint_df, 117 | known_scheduled_pledge_release_full_vec, 118 | ) 119 | return cil_df 120 | -------------------------------------------------------------------------------- /mechafil/supply.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import datetime 4 | from typing import Union 5 | 6 | from .locking import ( 7 | get_day_schedule_pledge_release, 8 | compute_day_reward_release, 9 | compute_day_delta_pledge, 10 | compute_day_locked_rewards, 11 | compute_day_locked_pledge, 12 | ) 13 | from .power import scalar_or_vector_to_vector 14 | from .data import NETWORK_START 15 | 16 | """ 17 | There is still a small discrepancy between the actual locked FIL and forecasted 18 | locked FIL. We believe that it could be due to the following reasons: 19 | a) Sector durations are not unlocked after exactly 1y. In general they're distributed and slightly longer. But in that case I’d expect the sign of the error to be the opposite to observed. 20 | b) The error between actual and forecasted locked FIL is 0 for day_idx=1. This might imply that a build up of errors due to an error in `day_locked_pledge` sounds more like it could be the issue. 21 | c) If we're sure the locking discrepancy is not a bug but rather a deficiency in the model popping up via the approximations used, we may way want to include a learnable factor to correct the difference 22 | """ 23 | 24 | 25 | def forecast_circulating_supply_df( 26 | start_date: datetime.date, 27 | current_date: datetime.date, 28 | end_date: datetime.date, 29 | circ_supply_zero: float, 30 | locked_fil_zero: float, 31 | daily_burnt_fil: float, 32 | duration: int, 33 | renewal_rate: Union[np.array, float], 34 | burnt_fil_vec: np.array, 35 | vest_df: pd.DataFrame, 36 | mint_df: pd.DataFrame, 37 | known_scheduled_pledge_release_vec: np.array, 38 | lock_target: float = 0.3, 39 | ) -> pd.DataFrame: 40 | # we assume all stats started at main net launch, in 2020-10-15 41 | start_day = (start_date - NETWORK_START.date()).days 42 | current_day = (current_date - NETWORK_START.date()).days 43 | end_day = (end_date - NETWORK_START.date()).days 44 | # initialise dataframe and auxilialy variables 45 | df = initialise_circulating_supply_df( 46 | start_date, 47 | end_date, 48 | circ_supply_zero, 49 | locked_fil_zero, 50 | burnt_fil_vec, 51 | vest_df, 52 | mint_df, 53 | ) 54 | circ_supply = circ_supply_zero 55 | sim_len = end_day - start_day 56 | renewal_rate_vec = scalar_or_vector_to_vector(renewal_rate, sim_len) 57 | 58 | # Simulation for loop 59 | current_day_idx = current_day - start_day 60 | for day_idx in range(1, sim_len): 61 | # Compute daily change in initial pledge collateral 62 | day_pledge_locked_vec = df["day_locked_pledge"].values 63 | scheduled_pledge_release = get_day_schedule_pledge_release( 64 | day_idx, 65 | current_day_idx, 66 | day_pledge_locked_vec, 67 | known_scheduled_pledge_release_vec, 68 | duration, 69 | ) 70 | pledge_delta = compute_day_delta_pledge( 71 | df["day_network_reward"].iloc[day_idx], 72 | circ_supply, 73 | df["day_onboarded_power_QAP"].iloc[day_idx], 74 | df["day_renewed_power_QAP"].iloc[day_idx], 75 | df["network_QAP"].iloc[day_idx], 76 | df["network_baseline"].iloc[day_idx], 77 | renewal_rate_vec[day_idx], 78 | scheduled_pledge_release, 79 | lock_target, 80 | ) 81 | # Get total locked pledge (needed for future day_locked_pledge) 82 | day_locked_pledge, day_renewed_pledge = compute_day_locked_pledge( 83 | df["day_network_reward"].iloc[day_idx], 84 | circ_supply, 85 | df["day_onboarded_power_QAP"].iloc[day_idx], 86 | df["day_renewed_power_QAP"].iloc[day_idx], 87 | df["network_QAP"].iloc[day_idx], 88 | df["network_baseline"].iloc[day_idx], 89 | renewal_rate_vec[day_idx], 90 | scheduled_pledge_release, 91 | lock_target, 92 | ) 93 | # Compute daily change in block rewards collateral 94 | day_locked_rewards = compute_day_locked_rewards( 95 | df["day_network_reward"].iloc[day_idx] 96 | ) 97 | day_reward_release = compute_day_reward_release( 98 | df["network_locked_reward"].iloc[day_idx - 1] 99 | ) 100 | reward_delta = day_locked_rewards - day_reward_release 101 | # Update dataframe 102 | df["day_locked_pledge"].iloc[day_idx] = day_locked_pledge 103 | df["day_renewed_pledge"].iloc[day_idx] = day_renewed_pledge 104 | df["network_locked_pledge"].iloc[day_idx] = ( 105 | df["network_locked_pledge"].iloc[day_idx - 1] + pledge_delta 106 | ) 107 | df["network_locked_reward"].iloc[day_idx] = ( 108 | df["network_locked_reward"].iloc[day_idx - 1] + reward_delta 109 | ) 110 | df["network_locked"].iloc[day_idx] = ( 111 | df["network_locked"].iloc[day_idx - 1] + pledge_delta + reward_delta 112 | ) 113 | # Update gas burnt 114 | if df["network_gas_burn"].iloc[day_idx] == 0.0: 115 | df["network_gas_burn"].iloc[day_idx] = ( 116 | df["network_gas_burn"].iloc[day_idx - 1] + daily_burnt_fil 117 | ) 118 | # Find circulating supply balance and update 119 | circ_supply = ( 120 | df["disbursed_reserve"].iloc[ 121 | day_idx 122 | ] # from initialise_circulating_supply_df 123 | + df["cum_network_reward"].iloc[day_idx] # from the minting_model 124 | + df["total_vest"].iloc[day_idx] # from vesting_model 125 | - df["network_locked"].iloc[day_idx] # from simulation loop 126 | - df["network_gas_burn"].iloc[day_idx] # comes from user inputs 127 | ) 128 | df["circ_supply"].iloc[day_idx] = max(circ_supply, 0) 129 | return df 130 | 131 | 132 | def initialise_circulating_supply_df( 133 | start_date: datetime.date, 134 | end_date: datetime.date, 135 | circ_supply_zero: float, 136 | locked_fil_zero: float, 137 | burnt_fil_vec: np.array, 138 | vest_df: pd.DataFrame, 139 | mint_df: pd.DataFrame, 140 | ) -> pd.DataFrame: 141 | # we assume days start at main net launch, in 2020-10-15 142 | start_day = (start_date - datetime.date(2020, 10, 15)).days 143 | end_day = (end_date - datetime.date(2020, 10, 15)).days 144 | len_sim = end_day - start_day 145 | df = pd.DataFrame( 146 | { 147 | "days": np.arange(start_day, end_day), 148 | "date": pd.date_range(start_date, end_date, freq="d")[:-1], 149 | "circ_supply": np.zeros(len_sim), 150 | "network_gas_burn": np.pad( 151 | burnt_fil_vec, (0, len_sim - len(burnt_fil_vec)) 152 | ), 153 | "day_locked_pledge": np.zeros(len_sim), 154 | "day_renewed_pledge": np.zeros(len_sim), 155 | "network_locked_pledge": np.zeros(len_sim), 156 | "network_locked": np.zeros(len_sim), 157 | "network_locked_reward": np.zeros(len_sim), 158 | "disbursed_reserve": np.ones(len_sim) 159 | * (17066618961773411890063046 * 10**-18), 160 | } 161 | ) 162 | df["date"] = df["date"].dt.date 163 | df["network_locked_pledge"].iloc[0] = locked_fil_zero / 2.0 164 | df["network_locked_reward"].iloc[0] = locked_fil_zero / 2.0 165 | df["network_locked"].iloc[0] = locked_fil_zero 166 | df["circ_supply"].iloc[0] = circ_supply_zero 167 | df = df.merge(vest_df, on="date", how="inner") 168 | df = df.merge(mint_df.drop(columns=["days"]), on="date", how="inner") 169 | return df 170 | -------------------------------------------------------------------------------- /mechafil/utils.py: -------------------------------------------------------------------------------- 1 | def validate_qap_method(user_input): 2 | user_input = user_input.lower() 3 | if not (user_input == 'basic' or user_input == 'tunable'): 4 | raise ValueError("qap_method must be either basic or tunable!") -------------------------------------------------------------------------------- /mechafil/vesting.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import datetime 4 | 5 | from .data import get_vested_amount 6 | 7 | FIL_BASE = 2_000_000_000.0 8 | PL_AMOUNT = 0.15 * FIL_BASE 9 | FOUNDATION_AMOUNT = 0.05 * FIL_BASE 10 | STORAGE_MINING = 0.55 * FIL_BASE 11 | MINING_RESERVE = 0.15 * FIL_BASE 12 | 13 | 14 | def compute_vesting_trajectory_df( 15 | start_date: datetime.date, end_date: datetime.date 16 | ) -> pd.DataFrame: 17 | """ 18 | 15% to PL -> 6-year linear vesting 19 | 5% to FIlecoin foundation -> 6-year linear vesting 20 | 10% to Investors -> Linear vesting with different durations (taken from lotus): 21 | - 0 days: 10_632_000 22 | - 6 months: 19_015_887 + 32_787_700 23 | - 1 yrs: 22_421_712 + 9_400_000 24 | - 2 yrs: 7_223_364 25 | - 3 yrs: 87_637_883 + 898_958 26 | - 6 yrs: 9_805_053 27 | (total of 199_822_557) 28 | 29 | Info taken from: 30 | - https://coinlist.co/assets/index/filecoin_2017_index/Filecoin-Sale-Economics-e3f703f8cd5f644aecd7ae3860ce932064ce014dd60de115d67ff1e9047ffa8e.pdf 31 | - https://spec.filecoin.io/#section-systems.filecoin_token.token_allocation 32 | - https://filecoin.io/blog/filecoin-circulating-supply/ 33 | - https://github.com/filecoin-project/lotus/blob/e65fae28de2a44947dd24af8c7dafcade29af1a4/chain/stmgr/supply.go#L148 34 | """ 35 | # we assume vesting started at main net launch, in 2020-10-15 36 | launch_date = datetime.date(2020, 10, 15) 37 | end_day = (end_date - launch_date).days 38 | # Get entire daily vesting trajectory 39 | full_vest_df = pd.DataFrame( 40 | { 41 | "date": pd.date_range(launch_date, end_date, freq="d")[:-1], 42 | "six_month_vest_saft": vest(19_015_887 + 32_787_700, 183, end_day), 43 | "one_year_vest_saft": vest(22_421_712 + 9_400_000, 365 * 1, end_day), 44 | "two_year_vest_saft": vest(7_223_364, 365 * 2, end_day), 45 | "three_year_vest_saft": vest(87_637_883 + 898_958, 365 * 3, end_day), 46 | "six_year_vest_saft": vest(9_805_053, 365 * 6, end_day), 47 | "six_year_vest_pl": vest(PL_AMOUNT, 365 * 6, end_day), 48 | "six_year_vest_foundation": vest(FOUNDATION_AMOUNT, 365 * 6, end_day), 49 | } 50 | ) 51 | full_vest_df["date"] = full_vest_df["date"].dt.date 52 | # Filter vesting trajectory for desired dates 53 | vest_df = full_vest_df[full_vest_df["date"] >= start_date] 54 | # Compute total cumulative vesting 55 | vest_df.loc[:, "total_day_vest"] = vest_df.drop(columns=["date"]).sum(axis=1) 56 | start_vested_amt = get_vested_amount(start_date) 57 | vest_df.loc[:, "total_vest"] = vest_df["total_day_vest"].cumsum() + start_vested_amt 58 | vest_df = vest_df[["date", "total_vest"]] 59 | return vest_df 60 | 61 | 62 | def vest(amount: float, time: int, end_day: int) -> np.array: 63 | """ 64 | amount -- total amount e.g 300M FIL for SAFT 65 | time -- vesting time in days 66 | end_day -- end day for the vesting trajectory 67 | """ 68 | ones_ = np.ones(int(time))[:end_day] 69 | extra_to_pad_ = max(0, end_day - int(time)) 70 | ones_padded_ = np.pad(ones_, (0, extra_to_pad_)) 71 | vest_ = ones_padded_ / time 72 | return amount * vest_ 73 | -------------------------------------------------------------------------------- /offline_info/Daily_Active_Deal_PiB_Statistics.csv: -------------------------------------------------------------------------------- 1 | stateTime,Regular,Filecoin Plus,Total 2 | "2020-10-15","0.23","0.00","0.23" 3 | "2020-10-16","0.26","0.00","0.26" 4 | "2020-10-17","0.29","0.00","0.29" 5 | "2020-10-18","0.33","0.00","0.33" 6 | "2020-10-19","0.37","0.00","0.37" 7 | "2020-10-20","0.41","0.00","0.41" 8 | "2020-10-21","0.44","0.00","0.44" 9 | "2020-10-22","0.47","0.00","0.47" 10 | "2020-10-23","0.51","0.00","0.51" 11 | "2020-10-24","0.54","0.00","0.54" 12 | "2020-10-25","0.56","0.00","0.56" 13 | "2020-10-26","0.58","0.00","0.58" 14 | "2020-10-27","0.59","0.00","0.59" 15 | "2020-10-28","0.60","0.00","0.60" 16 | "2020-10-29","0.60","0.00","0.60" 17 | "2020-10-30","0.61","0.00","0.61" 18 | "2020-10-31","0.61","0.00","0.61" 19 | "2020-11-01","0.62","0.00","0.62" 20 | "2020-11-02","0.63","0.00","0.63" 21 | "2020-11-03","0.64","0.00","0.64" 22 | "2020-11-04","0.65","0.00","0.65" 23 | "2020-11-05","0.67","0.00","0.67" 24 | "2020-11-06","0.69","0.00","0.69" 25 | "2020-11-07","0.69","0.00","0.69" 26 | "2020-11-08","0.70","0.00","0.70" 27 | "2020-11-09","0.70","0.00","0.70" 28 | "2020-11-10","0.71","0.00","0.71" 29 | "2020-11-11","0.72","0.00","0.72" 30 | "2020-11-12","0.72","0.00","0.72" 31 | "2020-11-13","0.73","0.00","0.73" 32 | "2020-11-14","0.74","0.00","0.74" 33 | "2020-11-15","0.74","0.00","0.74" 34 | "2020-11-16","0.74","0.00","0.74" 35 | "2020-11-17","0.75","0.00","0.75" 36 | "2020-11-18","0.75","0.00","0.75" 37 | "2020-11-19","0.76","0.00","0.76" 38 | "2020-11-20","0.78","0.00","0.78" 39 | "2020-11-21","0.79","0.00","0.79" 40 | "2020-11-22","0.80","0.00","0.80" 41 | "2020-11-23","0.81","0.00","0.81" 42 | "2020-11-24","0.81","0.00","0.81" 43 | "2020-11-25","0.83","0.00","0.83" 44 | "2020-11-26","0.85","0.00","0.85" 45 | "2020-11-27","0.87","0.00","0.87" 46 | "2020-11-28","0.88","0.00","0.88" 47 | "2020-11-29","0.89","0.00","0.89" 48 | "2020-11-30","0.91","0.00","0.91" 49 | "2020-12-01","0.91","0.00","0.91" 50 | "2020-12-02","0.92","0.00","0.92" 51 | "2020-12-03","0.93","0.00","0.93" 52 | "2020-12-04","0.94","0.00","0.94" 53 | "2020-12-05","0.95","0.00","0.95" 54 | "2020-12-06","0.97","0.00","0.97" 55 | "2020-12-07","1.00","0.00","1.00" 56 | "2020-12-08","1.04","0.00","1.04" 57 | "2020-12-09","1.09","0.00","1.09" 58 | "2020-12-10","1.15","0.00","1.15" 59 | "2020-12-11","1.18","0.00","1.18" 60 | "2020-12-12","1.22","0.00","1.22" 61 | "2020-12-13","1.26","0.00","1.26" 62 | "2020-12-14","1.28","0.00","1.28" 63 | "2020-12-15","1.30","0.00","1.30" 64 | "2020-12-16","1.33","0.00","1.33" 65 | "2020-12-17","1.34","0.00","1.34" 66 | "2020-12-18","1.35","0.01","1.36" 67 | "2020-12-19","1.35","0.01","1.36" 68 | "2020-12-20","1.37","0.01","1.38" 69 | "2020-12-21","1.41","0.01","1.42" 70 | "2020-12-22","1.42","0.01","1.43" 71 | "2020-12-23","1.47","0.01","1.48" 72 | "2020-12-24","1.49","0.01","1.50" 73 | "2020-12-25","1.51","0.01","1.52" 74 | "2020-12-26","1.52","0.01","1.53" 75 | "2020-12-27","1.52","0.01","1.53" 76 | "2020-12-28","1.53","0.01","1.54" 77 | "2020-12-29","1.54","0.01","1.55" 78 | "2020-12-30","1.54","0.01","1.55" 79 | "2020-12-31","1.56","0.01","1.57" 80 | "2021-01-01","1.57","0.01","1.58" 81 | "2021-01-02","1.58","0.01","1.59" 82 | "2021-01-03","1.60","0.01","1.61" 83 | "2021-01-04","1.62","0.01","1.63" 84 | "2021-01-05","1.64","0.01","1.65" 85 | "2021-01-06","1.66","0.01","1.67" 86 | "2021-01-07","1.69","0.02","1.71" 87 | "2021-01-08","1.76","0.02","1.78" 88 | "2021-01-09","1.82","0.02","1.84" 89 | "2021-01-10","1.87","0.02","1.89" 90 | "2021-01-11","1.96","0.02","1.98" 91 | "2021-01-12","2.06","0.02","2.08" 92 | "2021-01-13","2.13","0.02","2.15" 93 | "2021-01-14","2.19","0.02","2.21" 94 | "2021-01-15","2.25","0.02","2.27" 95 | "2021-01-16","2.32","0.02","2.34" 96 | "2021-01-17","2.39","0.03","2.42" 97 | "2021-01-18","2.43","0.03","2.46" 98 | "2021-01-19","2.50","0.03","2.53" 99 | "2021-01-20","2.59","0.03","2.62" 100 | "2021-01-21","2.69","0.03","2.72" 101 | "2021-01-22","2.79","0.03","2.82" 102 | "2021-01-23","2.91","0.03","2.94" 103 | "2021-01-24","3.02","0.03","3.05" 104 | "2021-01-25","3.13","0.03","3.16" 105 | "2021-01-26","3.25","0.03","3.28" 106 | "2021-01-27","3.45","0.03","3.48" 107 | "2021-01-28","3.64","0.04","3.68" 108 | "2021-01-29","3.82","0.04","3.86" 109 | "2021-01-30","3.97","0.04","4.01" 110 | "2021-01-31","4.13","0.04","4.17" 111 | "2021-02-01","4.25","0.04","4.29" 112 | "2021-02-02","4.34","0.04","4.38" 113 | "2021-02-03","4.37","0.04","4.41" 114 | "2021-02-04","4.38","0.05","4.43" 115 | "2021-02-05","4.38","0.05","4.43" 116 | "2021-02-06","4.39","0.05","4.44" 117 | "2021-02-07","4.40","0.05","4.45" 118 | "2021-02-08","4.40","0.05","4.45" 119 | "2021-02-09","4.42","0.05","4.47" 120 | "2021-02-10","4.44","0.06","4.50" 121 | "2021-02-11","4.44","0.06","4.50" 122 | "2021-02-12","4.44","0.06","4.50" 123 | "2021-02-13","4.45","0.06","4.51" 124 | "2021-02-14","4.47","0.06","4.53" 125 | "2021-02-15","4.47","0.06","4.53" 126 | "2021-02-16","4.49","0.06","4.55" 127 | "2021-02-17","4.49","0.06","4.55" 128 | "2021-02-18","4.49","0.07","4.56" 129 | "2021-02-19","4.49","0.07","4.56" 130 | "2021-02-20","4.49","0.07","4.56" 131 | "2021-02-21","4.49","0.07","4.56" 132 | "2021-02-22","4.49","0.08","4.57" 133 | "2021-02-23","4.51","0.08","4.59" 134 | "2021-02-24","4.54","0.08","4.62" 135 | "2021-02-25","4.54","0.08","4.62" 136 | "2021-02-26","4.54","0.08","4.62" 137 | "2021-02-27","4.54","0.09","4.63" 138 | "2021-02-28","4.54","0.09","4.63" 139 | "2021-03-01","4.54","0.09","4.63" 140 | "2021-03-02","4.54","0.09","4.63" 141 | "2021-03-03","4.55","0.09","4.64" 142 | "2021-03-04","4.55","0.09","4.64" 143 | "2021-03-05","4.55","0.09","4.64" 144 | "2021-03-06","4.56","0.09","4.65" 145 | "2021-03-07","4.58","0.09","4.67" 146 | "2021-03-08","4.61","0.09","4.70" 147 | "2021-03-09","4.62","0.09","4.71" 148 | "2021-03-10","4.63","0.10","4.73" 149 | "2021-03-11","4.65","0.10","4.75" 150 | "2021-03-12","4.67","0.10","4.77" 151 | "2021-03-13","4.67","0.10","4.77" 152 | "2021-03-14","4.68","0.10","4.78" 153 | "2021-03-15","4.69","0.10","4.79" 154 | "2021-03-16","4.70","0.10","4.80" 155 | "2021-03-17","4.72","0.10","4.82" 156 | "2021-03-18","4.75","0.10","4.85" 157 | "2021-03-19","4.82","0.10","4.92" 158 | "2021-03-20","4.87","0.10","4.97" 159 | "2021-03-21","4.91","0.10","5.01" 160 | "2021-03-22","4.97","0.10","5.07" 161 | "2021-03-23","5.00","0.10","5.10" 162 | "2021-03-24","5.07","0.11","5.18" 163 | "2021-03-25","5.14","0.11","5.25" 164 | "2021-03-26","5.23","0.11","5.34" 165 | "2021-03-27","5.29","0.11","5.40" 166 | "2021-03-28","5.33","0.11","5.44" 167 | "2021-03-29","5.44","0.11","5.55" 168 | "2021-03-30","5.47","0.11","5.58" 169 | "2021-03-31","5.52","0.11","5.63" 170 | "2021-04-01","5.70","0.12","5.82" 171 | "2021-04-02","5.75","0.12","5.87" 172 | "2021-04-03","5.84","0.12","5.96" 173 | "2021-04-04","5.90","0.12","6.02" 174 | "2021-04-05","5.96","0.12","6.08" 175 | "2021-04-06","6.13","0.12","6.25" 176 | "2021-04-07","6.19","0.12","6.31" 177 | "2021-04-08","6.24","0.12","6.36" 178 | "2021-04-09","6.34","0.12","6.46" 179 | "2021-04-10","6.45","0.12","6.57" 180 | "2021-04-11","6.51","0.12","6.63" 181 | "2021-04-12","6.57","0.12","6.69" 182 | "2021-04-13","6.67","0.12","6.79" 183 | "2021-04-14","6.82","0.12","6.94" 184 | "2021-04-15","7.02","0.13","7.15" 185 | "2021-04-16","7.18","0.13","7.31" 186 | "2021-04-17","7.28","0.13","7.41" 187 | "2021-04-18","7.48","0.13","7.61" 188 | "2021-04-19","7.89","0.13","8.02" 189 | "2021-04-20","8.09","0.13","8.22" 190 | "2021-04-21","8.25","0.14","8.39" 191 | "2021-04-22","8.49","0.14","8.63" 192 | "2021-04-23","8.56","0.14","8.70" 193 | "2021-04-24","8.67","0.14","8.81" 194 | "2021-04-25","8.85","0.14","8.99" 195 | "2021-04-26","9.19","0.14","9.33" 196 | "2021-04-27","9.37","0.14","9.51" 197 | "2021-04-28","9.64","0.14","9.78" 198 | "2021-04-29","9.85","0.14","9.99" 199 | "2021-04-30","10.02","0.15","10.17" 200 | "2021-05-01","10.37","0.15","10.52" 201 | "2021-05-02","10.74","0.15","10.89" 202 | "2021-05-03","10.88","0.16","11.04" 203 | "2021-05-04","11.01","0.16","11.17" 204 | "2021-05-05","11.33","0.17","11.50" 205 | "2021-05-06","11.67","0.17","11.84" 206 | "2021-05-07","11.77","0.18","11.95" 207 | "2021-05-08","11.88","0.19","12.07" 208 | "2021-05-09","12.00","0.19","12.19" 209 | "2021-05-10","12.48","0.19","12.67" 210 | "2021-05-11","12.72","0.19","12.91" 211 | "2021-05-12","12.81","0.20","13.01" 212 | "2021-05-13","12.97","0.20","13.17" 213 | "2021-05-14","13.16","0.20","13.36" 214 | "2021-05-15","13.32","0.20","13.52" 215 | "2021-05-16","13.46","0.20","13.66" 216 | "2021-05-17","13.47","0.21","13.68" 217 | "2021-05-18","13.52","0.21","13.73" 218 | "2021-05-19","13.59","0.21","13.80" 219 | "2021-05-20","13.65","0.21","13.86" 220 | "2021-05-21","13.65","0.21","13.86" 221 | "2021-05-22","13.64","0.21","13.85" 222 | "2021-05-23","13.63","0.21","13.84" 223 | "2021-05-24","13.62","0.21","13.83" 224 | "2021-05-25","13.62","0.21","13.83" 225 | "2021-05-26","13.61","0.21","13.82" 226 | "2021-05-27","13.63","0.21","13.84" 227 | "2021-05-28","13.67","0.21","13.88" 228 | "2021-05-29","13.70","0.21","13.91" 229 | "2021-05-30","13.74","0.21","13.95" 230 | "2021-05-31","13.76","0.21","13.97" 231 | "2021-06-01","13.79","0.22","14.01" 232 | "2021-06-02","13.88","0.22","14.10" 233 | "2021-06-03","13.96","0.22","14.18" 234 | "2021-06-04","14.00","0.22","14.22" 235 | "2021-06-05","14.00","0.22","14.22" 236 | "2021-06-06","13.98","0.22","14.20" 237 | "2021-06-07","13.94","0.22","14.16" 238 | "2021-06-08","13.95","0.22","14.17" 239 | "2021-06-09","14.02","0.22","14.24" 240 | "2021-06-10","14.08","0.22","14.30" 241 | "2021-06-11","14.17","0.23","14.40" 242 | "2021-06-12","14.35","0.23","14.58" 243 | "2021-06-13","14.47","0.23","14.70" 244 | "2021-06-14","14.62","0.23","14.85" 245 | "2021-06-15","14.85","0.23","15.08" 246 | "2021-06-16","15.16","0.23","15.39" 247 | "2021-06-17","15.44","0.24","15.68" 248 | "2021-06-18","15.76","0.24","16.00" 249 | "2021-06-19","16.09","0.24","16.33" 250 | "2021-06-20","16.36","0.24","16.60" 251 | "2021-06-21","16.58","0.24","16.82" 252 | "2021-06-22","16.87","0.25","17.12" 253 | "2021-06-23","17.14","0.25","17.39" 254 | "2021-06-24","17.41","0.25","17.66" 255 | "2021-06-25","17.68","0.25","17.93" 256 | "2021-06-26","18.00","0.25","18.25" 257 | "2021-06-27","18.38","0.25","18.63" 258 | "2021-06-28","18.59","0.25","18.84" 259 | "2021-06-29","18.77","0.26","19.03" 260 | "2021-06-30","19.12","0.26","19.38" 261 | "2021-07-01","19.41","0.26","19.67" 262 | "2021-07-02","19.85","0.26","20.11" 263 | "2021-07-03","20.06","0.27","20.33" 264 | "2021-07-04","20.31","0.27","20.58" 265 | "2021-07-05","20.42","0.27","20.69" 266 | "2021-07-06","20.50","0.27","20.77" 267 | "2021-07-07","20.59","0.27","20.86" 268 | "2021-07-08","20.63","0.27","20.90" 269 | "2021-07-09","20.68","0.27","20.95" 270 | "2021-07-10","20.70","0.27","20.97" 271 | "2021-07-11","20.71","0.27","20.98" 272 | "2021-07-12","20.72","0.28","21.00" 273 | "2021-07-13","20.73","0.28","21.01" 274 | "2021-07-14","20.73","0.28","21.01" 275 | "2021-07-15","20.74","0.28","21.02" 276 | "2021-07-16","20.75","0.28","21.03" 277 | "2021-07-17","20.75","0.28","21.03" 278 | "2021-07-18","20.75","0.28","21.03" 279 | "2021-07-19","20.75","0.28","21.03" 280 | "2021-07-20","20.75","0.28","21.03" 281 | "2021-07-21","20.76","0.29","21.05" 282 | "2021-07-22","20.76","0.29","21.05" 283 | "2021-07-23","20.77","0.29","21.06" 284 | "2021-07-24","20.77","0.29","21.06" 285 | "2021-07-25","20.77","0.29","21.06" 286 | "2021-07-26","20.77","0.30","21.07" 287 | "2021-07-27","20.78","0.30","21.08" 288 | "2021-07-28","20.78","0.30","21.08" 289 | "2021-07-29","20.78","0.30","21.08" 290 | "2021-07-30","20.79","0.30","21.09" 291 | "2021-07-31","20.79","0.31","21.10" 292 | "2021-08-01","20.79","0.31","21.10" 293 | "2021-08-02","20.79","0.32","21.11" 294 | "2021-08-03","20.80","0.33","21.13" 295 | "2021-08-04","20.80","0.33","21.13" 296 | "2021-08-05","20.80","0.33","21.13" 297 | "2021-08-06","20.87","0.33","21.20" 298 | "2021-08-07","20.95","0.34","21.29" 299 | "2021-08-08","21.01","0.35","21.36" 300 | "2021-08-09","21.07","0.36","21.43" 301 | "2021-08-10","21.14","0.36","21.50" 302 | "2021-08-11","21.19","0.37","21.56" 303 | "2021-08-12","21.21","0.38","21.59" 304 | "2021-08-13","21.24","0.39","21.63" 305 | "2021-08-14","21.28","0.40","21.68" 306 | "2021-08-15","21.35","0.40","21.75" 307 | "2021-08-16","21.46","0.42","21.88" 308 | "2021-08-17","21.55","0.43","21.98" 309 | "2021-08-19","21.76","0.44","22.20" 310 | "2021-08-20","21.87","0.45","22.32" 311 | "2021-08-21","21.97","0.45","22.42" 312 | "2021-08-22","22.08","0.45","22.53" 313 | "2021-08-23","22.22","0.46","22.68" 314 | "2021-08-24","22.34","0.47","22.81" 315 | "2021-08-25","22.48","0.47","22.95" 316 | "2021-08-26","22.60","0.48","23.08" 317 | "2021-08-27","22.73","0.48","23.21" 318 | "2021-08-28","22.87","0.49","23.36" 319 | "2021-08-29","23.00","0.51","23.51" 320 | "2021-08-30","23.14","0.51","23.65" 321 | "2021-08-31","23.28","0.53","23.81" 322 | "2021-09-01","23.41","0.54","23.95" 323 | "2021-09-02","23.55","0.55","24.10" 324 | "2021-09-03","23.69","0.56","24.25" 325 | "2021-09-04","23.83","0.56","24.39" 326 | "2021-09-05","23.97","0.57","24.54" 327 | "2021-09-06","24.11","0.58","24.69" 328 | "2021-09-07","24.25","0.59","24.84" 329 | "2021-09-08","24.49","0.60","25.09" 330 | "2021-09-09","24.79","0.61","25.40" 331 | "2021-09-10","25.06","0.62","25.68" 332 | "2021-09-11","25.15","0.63","25.78" 333 | "2021-09-12","25.19","0.65","25.84" 334 | "2021-09-13","25.28","0.66","25.94" 335 | "2021-09-14","25.43","0.67","26.10" 336 | "2021-09-15","25.61","0.69","26.30" 337 | "2021-09-16","25.77","0.70","26.47" 338 | "2021-09-17","25.91","0.72","26.63" 339 | "2021-09-18","26.01","0.73","26.74" 340 | "2021-09-19","26.11","0.75","26.86" 341 | "2021-09-20","26.20","0.76","26.96" 342 | "2021-09-21","26.29","0.77","27.06" 343 | "2021-09-22","26.38","0.78","27.16" 344 | "2021-09-23","26.50","0.80","27.30" 345 | "2021-09-24","26.60","0.82","27.42" 346 | "2021-09-25","26.65","0.84","27.49" 347 | "2021-09-26","26.73","0.86","27.59" 348 | "2021-09-27","26.80","0.88","27.68" 349 | "2021-09-28","26.88","0.89","27.77" 350 | "2021-09-29","26.96","0.91","27.87" 351 | "2021-09-30","27.06","0.92","27.98" 352 | "2021-10-01","27.16","0.95","28.11" 353 | "2021-10-02","27.27","0.97","28.24" 354 | "2021-10-03","27.39","0.98","28.37" 355 | "2021-10-04","27.50","0.99","28.49" 356 | "2021-10-05","27.61","1.00","28.61" 357 | "2021-10-06","27.64","1.03","28.67" 358 | "2021-10-07","27.64","1.05","28.69" 359 | "2021-10-08","27.65","1.08","28.73" 360 | "2021-10-09","27.75","1.10","28.85" 361 | "2021-10-10","27.85","1.15","29.00" 362 | "2021-10-11","27.93","1.17","29.10" 363 | "2021-10-12","28.01","1.19","29.20" 364 | "2021-10-13","28.07","1.22","29.29" 365 | "2021-10-14","28.19","1.26","29.45" 366 | "2021-10-15","28.29","1.30","29.59" 367 | "2021-10-16","28.35","1.34","29.69" 368 | "2021-10-17","28.39","1.38","29.77" 369 | "2021-10-18","28.48","1.42","29.90" 370 | "2021-10-19","28.57","1.45","30.02" 371 | "2021-10-20","28.63","1.49","30.12" 372 | "2021-10-21","28.67","1.51","30.18" 373 | "2021-10-22","28.76","1.52","30.28" 374 | "2021-10-23","28.89","1.54","30.43" 375 | "2021-10-24","29.02","1.55","30.57" 376 | "2021-10-25","29.14","1.56","30.70" 377 | "2021-10-26","29.25","1.57","30.82" 378 | "2021-10-27","29.37","1.59","30.96" 379 | "2021-10-28","29.49","1.61","31.10" 380 | "2021-10-29","29.61","1.63","31.24" 381 | "2021-10-30","29.74","1.66","31.40" 382 | "2021-10-31","29.87","1.70","31.57" 383 | "2021-11-01","29.96","1.75","31.71" 384 | "2021-11-02","30.06","1.79","31.85" 385 | "2021-11-03","30.14","1.83","31.97" 386 | "2021-11-04","30.19","1.88","32.07" 387 | "2021-11-05","30.20","1.91","32.11" 388 | "2021-11-06","30.23","1.94","32.17" 389 | "2021-11-07","30.25","1.97","32.22" 390 | "2021-11-08","30.27","2.00","32.27" 391 | "2021-11-09","30.29","2.04","32.33" 392 | "2021-11-10","30.32","2.08","32.40" 393 | "2021-11-11","30.35","2.12","32.47" 394 | "2021-11-12","30.38","2.15","32.53" 395 | "2021-11-13","30.42","2.19","32.61" 396 | "2021-11-14","30.44","2.23","32.67" 397 | "2021-11-15","30.45","2.27","32.72" 398 | "2021-11-16","30.47","2.32","32.79" 399 | "2021-11-17","30.49","2.35","32.84" 400 | "2021-11-18","30.50","2.40","32.90" 401 | "2021-11-19","30.51","2.46","32.97" 402 | "2021-11-20","30.53","2.51","33.04" 403 | "2021-11-21","30.55","2.55","33.10" 404 | "2021-11-22","30.56","2.61","33.17" 405 | "2021-11-23","30.58","2.66","33.24" 406 | "2021-11-24","30.59","2.68","33.27" 407 | "2021-11-25","30.61","2.71","33.32" 408 | "2021-11-26","30.62","2.74","33.36" 409 | "2021-11-27","30.63","2.78","33.41" 410 | "2021-11-28","30.65","2.79","33.44" 411 | "2021-11-29","30.67","2.82","33.49" 412 | "2021-11-30","30.68","2.84","33.52" 413 | "2021-12-01","30.70","2.87","33.57" 414 | "2021-12-02","30.72","2.93","33.65" 415 | "2021-12-03","30.75","2.98","33.73" 416 | "2021-12-04","30.78","3.04","33.82" 417 | "2021-12-05","30.81","3.10","33.91" 418 | "2021-12-06","30.83","3.17","34.00" 419 | "2021-12-07","30.85","3.24","34.09" 420 | "2021-12-08","30.86","3.34","34.20" 421 | "2021-12-09","30.86","3.41","34.27" 422 | "2021-12-10","30.88","3.48","34.36" 423 | "2021-12-11","30.88","3.54","34.42" 424 | "2021-12-12","18.23","3.57","21.80" 425 | "2021-12-13","18.26","3.61","21.87" 426 | "2021-12-14","18.28","3.70","21.98" 427 | "2021-12-15","18.31","3.76","22.07" 428 | "2021-12-16","18.35","3.81","22.16" 429 | "2021-12-17","18.38","3.89","22.27" 430 | "2021-12-18","18.43","3.96","22.39" 431 | "2021-12-19","18.46","4.01","22.47" 432 | "2021-12-20","18.48","4.06","22.54" 433 | "2021-12-21","18.48","4.14","22.62" 434 | "2021-12-22","18.49","4.21","22.70" 435 | "2021-12-23","18.51","4.31","22.82" 436 | "2021-12-24","18.52","4.44","22.96" 437 | "2021-12-25","18.53","4.54","23.07" 438 | "2021-12-26","18.53","4.65","23.18" 439 | "2021-12-27","18.54","4.78","23.32" 440 | "2021-12-28","18.56","4.98","23.54" 441 | "2021-12-29","18.58","5.19","23.77" 442 | "2021-12-30","18.59","5.38","23.97" 443 | "2021-12-31","18.60","5.51","24.11" 444 | "2022-01-01","18.61","5.71","24.32" 445 | "2022-01-02","18.62","5.86","24.48" 446 | "2022-01-03","18.62","6.02","24.64" 447 | "2022-01-04","18.64","6.18","24.82" 448 | "2022-01-05","18.65","6.42","25.07" 449 | "2022-01-06","18.68","6.59","25.27" 450 | "2022-01-07","18.70","6.77","25.47" 451 | "2022-01-08","18.73","6.99","25.72" 452 | "2022-01-09","18.73","7.14","25.87" 453 | "2022-01-10","18.74","7.28","26.02" 454 | "2022-01-11","18.73","7.41","26.14" 455 | "2022-01-12","18.74","7.56","26.30" 456 | "2022-01-13","18.75","7.75","26.50" 457 | "2022-01-14","18.73","7.97","26.70" 458 | "2022-01-15","18.72","8.19","26.91" 459 | "2022-01-16","18.74","8.33","27.07" 460 | "2022-01-17","18.75","8.48","27.23" 461 | "2022-01-18","18.77","8.64","27.41" 462 | "2022-01-19","18.77","8.83","27.60" 463 | "2022-01-20","18.78","8.98","27.76" 464 | "2022-01-21","18.80","9.17","27.97" 465 | "2022-01-22","18.82","9.40","28.22" 466 | "2022-01-23","18.80","9.61","28.41" 467 | "2022-01-24","18.76","9.80","28.56" 468 | "2022-01-25","18.76","10.05","28.81" 469 | "2022-01-26","18.75","10.35","29.10" 470 | "2022-01-27","18.76","10.64","29.40" 471 | "2022-01-28","18.73","11.00","29.73" 472 | "2022-01-29","18.64","11.29","29.93" 473 | "2022-01-30","18.58","11.62","30.20" 474 | "2022-01-31","18.52","11.93","30.45" 475 | "2022-02-01","18.50","12.26","30.76" 476 | "2022-02-02","18.47","12.62","31.09" 477 | "2022-02-03","18.45","13.08","31.53" 478 | "2022-02-04","18.40","13.32","31.72" 479 | "2022-02-05","18.34","13.53","31.87" 480 | "2022-02-06","18.35","13.75","32.10" 481 | "2022-02-07","18.35","13.97","32.32" 482 | "2022-02-08","18.35","14.14","32.49" 483 | "2022-02-09","18.35","14.34","32.69" 484 | "2022-02-10","18.35","14.54","32.89" 485 | "2022-02-11","18.36","14.76","33.12" 486 | "2022-02-12","18.38","15.09","33.47" 487 | "2022-02-13","18.39","15.45","33.84" 488 | "2022-02-14","18.41","15.67","34.08" 489 | "2022-02-15","18.45","15.89","34.34" 490 | "2022-02-16","18.48","16.10","34.58" 491 | "2022-02-17","18.52","16.39","34.91" 492 | "2022-02-18","18.57","16.74","35.31" 493 | "2022-02-19","18.60","17.02","35.62" 494 | "2022-02-20","18.63","17.25","35.88" 495 | "2022-02-21","18.64","17.54","36.18" 496 | "2022-02-22","18.65","17.83","36.48" 497 | "2022-02-23","18.67","18.27","36.94" 498 | "2022-02-24","18.68","18.87","37.55" 499 | "2022-02-25","18.70","19.41","38.11" 500 | "2022-02-26","18.72","19.96","38.68" 501 | "2022-02-27","18.72","20.53","39.25" 502 | "2022-02-28","18.70","21.02","39.72" 503 | "2022-03-01","18.73","21.35","40.08" 504 | "2022-03-02","18.73","21.78","40.51" 505 | "2022-03-03","18.73","22.42","41.15" 506 | "2022-03-04","18.73","23.06","41.79" 507 | "2022-03-05","18.73","23.60","42.33" 508 | "2022-03-06","18.73","24.25","42.98" 509 | "2022-03-07","18.73","24.90","43.63" 510 | "2022-03-08","18.72","25.53","44.25" 511 | "2022-03-09","18.73","26.14","44.87" 512 | "2022-03-10","18.73","26.81","45.54" 513 | "2022-03-11","18.72","27.69","46.41" 514 | "2022-03-12","18.72","28.56","47.28" 515 | "2022-03-13","18.72","29.49","48.21" 516 | "2022-03-14","18.70","30.33","49.03" 517 | "2022-03-15","18.72","31.14","49.86" 518 | "2022-03-16","18.72","31.86","50.58" 519 | "2022-03-17","18.59","32.36","50.95" 520 | "2022-03-18","18.71","33.30","52.01" 521 | "2022-03-19","18.71","34.24","52.95" 522 | "2022-03-20","18.70","34.97","53.67" 523 | "2022-03-21","18.65","35.67","54.32" 524 | "2022-03-22","18.55","36.45","55.00" 525 | "2022-03-23","18.52","37.36","55.88" 526 | "2022-03-24","18.50","38.22","56.72" 527 | "2022-03-25","18.40","39.03","57.43" 528 | "2022-03-26","18.39","39.89","58.28" 529 | "2022-03-27","18.29","40.74","59.03" 530 | "2022-03-28","18.27","41.59","59.86" 531 | "2022-03-29","18.17","42.64","60.81" 532 | "2022-03-30","18.14","43.61","61.75" 533 | "2022-03-31","14.66","36.07","50.73" 534 | "2022-04-01","17.94","45.52","63.46" 535 | "2022-04-02","17.94","46.52","64.46" 536 | "2022-04-03","17.77","47.40","65.17" 537 | "2022-04-04","17.68","48.21","65.89" 538 | "2022-04-05","17.64","49.01","66.65" 539 | "2022-04-06","17.54","49.48","67.02" 540 | "2022-04-07","17.48","49.92","67.40" 541 | "2022-04-08","17.39","50.32","67.71" 542 | "2022-04-09","17.26","50.66","67.92" 543 | "2022-04-10","17.19","51.03","68.22" 544 | "2022-04-11","17.14","51.45","68.59" 545 | "2022-04-12","17.10","51.87","68.97" 546 | "2022-04-13","16.94","52.34","69.28" 547 | "2022-04-14","16.88","52.78","69.66" 548 | "2022-04-15","16.79","53.30","70.09" 549 | "2022-04-16","16.66","53.84","70.50" 550 | "2022-04-17","16.50","54.36","70.86" 551 | "2022-04-18","16.35","54.83","71.18" 552 | "2022-04-19","16.27","55.27","71.54" 553 | "2022-04-20","16.15","55.73","71.88" 554 | "2022-04-21","15.79","56.19","71.98" 555 | "2022-04-22","15.53","56.73","72.26" 556 | "2022-04-23","15.47","57.33","72.80" 557 | "2022-04-24","15.15","58.32","73.47" 558 | "2022-04-25","15.06","59.18","74.24" 559 | "2022-04-26","14.98","60.10","75.08" 560 | "2022-04-27","14.86","60.90","75.76" 561 | "2022-04-28","14.61","61.49","76.10" 562 | "2022-04-29","14.43","61.83","76.26" 563 | "2022-04-30","14.32","62.21","76.53" 564 | "2022-05-01","14.06","62.69","76.75" 565 | "2022-05-02","13.94","63.35","77.29" 566 | "2022-05-03","13.81","64.05","77.86" 567 | "2022-05-04","13.36","64.87","78.23" 568 | "2022-05-05","13.18","65.37","78.55" 569 | "2022-05-06","13.07","65.73","78.80" 570 | "2022-05-07","12.97","66.05","79.02" 571 | "2022-05-08","12.61","66.54","79.15" 572 | "2022-05-09","12.43","67.23","79.66" 573 | "2022-05-10","12.34","68.02","80.36" 574 | "2022-05-11","12.28","68.60","80.88" 575 | "2022-05-12","12.18","69.23","81.41" 576 | "2022-05-13","11.70","69.93","81.63" 577 | "2022-05-14","11.58","70.68","82.26" 578 | "2022-05-15","11.53","71.33","82.86" 579 | "2022-05-16","11.35","72.15","83.50" 580 | "2022-05-17","11.26","72.75","84.01" 581 | "2022-05-18","11.21","73.76","84.97" 582 | "2022-05-19","11.17","74.56","85.73" 583 | "2022-05-20","11.17","75.23","86.40" 584 | "2022-05-21","11.07","76.09","87.16" 585 | "2022-05-22","11.00","77.06","88.06" 586 | "2022-05-23","10.97","77.96","88.93" 587 | "2022-05-24","10.97","78.77","89.74" 588 | "2022-05-25","10.97","79.59","90.56" 589 | "2022-05-26","10.97","80.27","91.24" 590 | "2022-05-27","10.97","81.05","92.02" 591 | "2022-05-28","10.97","81.76","92.73" 592 | "2022-05-29","10.97","82.24","93.21" 593 | "2022-05-30","10.97","82.69","93.66" 594 | "2022-05-31","10.96","83.04","94.00" 595 | "2022-06-01","10.92","83.23","94.15" 596 | "2022-06-02","10.91","84.05","94.96" 597 | "2022-06-03","10.90","84.76","95.66" 598 | "2022-06-04","10.90","85.47","96.37" 599 | "2022-06-05","10.88","86.17","97.05" 600 | "2022-06-06","10.87","86.89","97.76" 601 | "2022-06-07","10.85","87.70","98.55" 602 | "2022-06-08","10.85","88.42","99.27" 603 | "2022-06-09","10.84","89.27","100.11" 604 | "2022-06-10","10.82","90.25","101.07" 605 | "2022-06-11","10.82","91.33","102.15" 606 | "2022-06-12","10.82","92.39","103.21" 607 | "2022-06-13","10.81","93.51","104.32" 608 | "2022-06-14","10.65","94.68","105.33" 609 | "2022-06-15","10.64","95.97","106.61" 610 | "2022-06-16","10.51","97.14","107.65" 611 | "2022-06-17","10.41","98.29","108.70" 612 | "2022-06-18","10.26","99.56","109.82" 613 | "2022-06-19","10.02","100.58","110.60" 614 | "2022-06-20","9.77","101.05","110.82" 615 | "2022-06-21","9.42","101.67","111.09" 616 | "2022-06-22","9.16","102.53","111.69" 617 | "2022-06-23","9.01","103.42","112.43" 618 | "2022-06-24","8.79","104.29","113.08" 619 | "2022-06-25","8.58","105.08","113.66" 620 | "2022-06-26","8.35","105.64","113.99" 621 | "2022-06-27","8.22","106.38","114.60" 622 | "2022-06-28","7.98","107.04","115.02" 623 | "2022-06-29","7.63","107.54","115.17" 624 | "2022-06-30","7.44","108.19","115.63" 625 | "2022-07-01","7.28","108.65","115.93" 626 | "2022-07-02","7.08","109.09","116.17" 627 | "2022-07-03","6.78","109.77","116.55" 628 | "2022-07-04","6.59","110.63","117.22" 629 | "2022-07-05","6.15","111.36","117.51" 630 | "2022-07-06","6.10","112.37","118.47" 631 | "2022-07-07","5.83","113.05","118.88" 632 | "2022-07-08","5.81","113.51","119.32" 633 | "2022-07-09","5.80","113.96","119.76" 634 | "2022-07-10","5.80","114.42","120.22" 635 | "2022-07-11","5.79","114.69","120.48" 636 | "2022-07-12","5.79","115.20","120.99" 637 | "2022-07-13","5.78","115.50","121.28" 638 | "2022-07-14","5.77","115.99","121.76" 639 | "2022-07-15","5.76","116.41","122.17" 640 | "2022-07-16","5.76","116.79","122.55" 641 | "2022-07-17","5.76","117.14","122.90" 642 | "2022-07-18","5.76","117.69","123.45" 643 | "2022-07-19","5.76","118.10","123.86" 644 | "2022-07-20","5.76","118.48","124.24" 645 | "2022-07-21","5.76","118.99","124.75" 646 | "2022-07-22","5.75","119.55","125.30" 647 | "2022-07-23","5.75","120.19","125.94" 648 | "2022-07-24","5.75","120.81","126.56" 649 | "2022-07-25","5.75","121.39","127.14" 650 | "2022-07-26","5.75","122.00","127.75" 651 | "2022-07-27","5.75","122.61","128.36" 652 | "2022-07-28","5.75","123.22","128.97" 653 | "2022-07-29","5.74","123.95","129.69" 654 | "2022-07-30","5.74","124.75","130.49" 655 | "2022-07-31","5.74","125.34","131.08" 656 | "2022-08-01","5.73","126.02","131.75" 657 | "2022-08-02","5.73","126.85","132.58" 658 | "2022-08-03","5.72","127.66","133.38" 659 | "2022-08-04","5.71","128.53","134.24" 660 | "2022-08-05","5.70","129.48","135.18" 661 | "2022-08-06","5.68","130.43","136.11" 662 | "2022-08-07","5.67","131.41","137.08" 663 | "2022-08-08","5.66","132.50","138.16" 664 | "2022-08-09","5.65","133.61","139.26" 665 | "2022-08-10","5.63","135.19","140.82" 666 | "2022-08-11","5.61","136.07","141.68" 667 | "2022-08-12","5.59","137.10","142.69" 668 | "2022-08-13","5.57","137.89","143.46" 669 | "2022-08-14","5.56","138.50","144.06" 670 | "2022-08-15","5.53","138.99","144.52" 671 | "2022-08-16","5.51","139.50","145.01" 672 | "2022-08-17","5.49","140.34","145.83" 673 | "2022-08-18","5.46","141.56","147.02" 674 | "2022-08-19","5.44","142.61","148.05" 675 | "2022-08-20","5.41","143.74","149.15" 676 | "2022-08-21","5.38","145.03","150.41" 677 | "2022-08-22","5.35","146.47","151.82" 678 | "2022-08-23","5.32","147.69","153.01" 679 | "2022-08-24","5.29","149.41","154.70" 680 | "2022-08-25","5.26","150.79","156.05" 681 | "2022-08-26","5.23","151.92","157.15" 682 | "2022-08-27","5.20","153.06","158.26" 683 | "2022-08-28","5.17","154.03","159.20" 684 | "2022-08-29","5.13","155.22","160.35" 685 | "2022-08-30","5.09","156.52","161.61" 686 | "2022-08-31","5.05","157.85","162.90" 687 | "2022-09-01","5.03","159.16","164.19" 688 | "2022-09-02","5.01","160.23","165.24" 689 | "2022-09-03","4.97","161.25","166.22" 690 | "2022-09-04","4.94","162.70","167.64" 691 | "2022-09-05","4.91","163.84","168.75" 692 | "2022-09-06","4.87","164.79","169.66" 693 | "2022-09-07","4.83","166.13","170.96" 694 | "2022-09-08","4.78","167.44","172.22" 695 | "2022-09-09","4.74","168.63","173.37" 696 | "2022-09-10","4.68","169.86","174.54" 697 | "2022-09-11","4.63","171.19","175.82" 698 | "2022-09-12","4.56","172.52","177.08" 699 | "2022-09-13","4.51","173.78","178.29" 700 | "2022-09-14","4.45","175.12","179.57" 701 | "2022-09-15","4.44","176.75","181.19" 702 | "2022-09-16","4.42","178.43","182.85" 703 | "2022-09-17","4.40","180.06","184.46" 704 | "2022-09-18","4.36","181.52","185.88" 705 | "2022-09-19","4.32","183.23","187.55" 706 | "2022-09-20","4.30","185.59","189.89" 707 | "2022-09-21","4.27","187.49","191.76" 708 | "2022-09-22","4.26","189.49","193.75" 709 | "2022-09-23","4.25","191.27","195.52" 710 | "2022-09-24","4.24","192.79","197.03" 711 | "2022-09-25","4.23","194.60","198.83" 712 | "2022-09-26","4.22","196.39","200.61" 713 | "2022-09-27","4.20","198.32","202.52" 714 | "2022-09-28","4.20","200.33","204.53" 715 | "2022-09-29","4.18","202.57","206.75" 716 | "2022-09-30","4.17","204.65","208.82" 717 | "2022-10-01","4.16","206.67","210.83" 718 | "2022-10-02","4.14","208.97","213.11" 719 | "2022-10-03","4.14","211.19","215.33" 720 | "2022-10-04","4.13","213.53","217.66" 721 | "2022-10-05","4.12","216.46","220.58" 722 | "2022-10-06","4.10","219.34","223.44" 723 | "2022-10-07","4.09","222.52","226.61" 724 | "2022-10-08","4.08","225.59","229.67" 725 | "2022-10-09","4.07","228.13","232.20" 726 | "2022-10-10","4.06","230.61","234.67" 727 | "2022-10-11","4.05","233.41","237.46" 728 | "2022-10-12","4.04","236.35","240.39" 729 | "2022-10-13","4.03","238.56","242.59" 730 | "2022-10-14","4.03","240.84","244.87" 731 | "2022-10-15","4.02","243.45","247.47" 732 | "2022-10-16","4.01","246.01","250.02" 733 | "2022-10-17","4.01","248.60","252.61" 734 | "2022-10-18","4.01","251.04","255.05" 735 | "2022-10-19","4.01","253.91","257.92" 736 | "2022-10-20","4.00","256.32","260.32" 737 | "2022-10-21","3.99","258.90","262.89" 738 | "2022-10-22","3.98","261.20","265.18" 739 | "2022-10-23","3.97","262.98","266.95" 740 | "2022-10-24","3.96","265.06","269.02" 741 | "2022-10-25","3.95","266.90","270.85" 742 | "2022-10-26","3.94","268.89","272.83" 743 | "2022-10-27","3.93","271.56","275.49" 744 | "2022-10-28","3.92","274.92","278.84" 745 | "2022-10-29","3.92","278.78","282.70" 746 | "2022-10-30","3.91","282.00","285.91" 747 | "2022-10-31","3.90","285.37","289.27" 748 | "2022-11-01","3.89","288.35","292.24" 749 | "2022-11-02","3.88","290.70","294.58" 750 | "2022-11-03","3.88","293.39","297.27" 751 | "2022-11-04","3.88","295.43","299.31" 752 | "2022-11-05","3.88","296.96","300.84" 753 | "2022-11-06","3.87","298.41","302.28" 754 | "2022-11-07","3.85","299.87","303.72" 755 | -------------------------------------------------------------------------------- /offline_info/Scheduled_Expiration_by_Date_Breakdown_in_FIL.csv: -------------------------------------------------------------------------------- 1 | stateTime,Extend,Expired,Potential Expire,Terminate 2 | "2021-02-24","0.00","4.00","0.00","0.00" 3 | "2021-02-25","0.00","1.00","0.00","0.00" 4 | "2021-02-26","0.00","0.00","0.00","1.00" 5 | "2021-02-27","0.00","1.64","0.00","0.00" 6 | "2021-02-28","0.00","0.71","-0.00","0.75" 7 | "2021-03-02","0.00","0.61","-0.00","0.61" 8 | "2021-03-03","0.00","9.18","0.00","0.57" 9 | "2021-03-04","0.00","2.15","-0.00","2.62" 10 | "2021-03-05","0.00","1.66","-0.00","1.60" 11 | "2021-03-06","0.00","12.73","0.00","0.50" 12 | "2021-03-07","0.00","13.05","-0.00","1.46" 13 | "2021-03-08","0.00","13.33","0.00","2.55" 14 | "2021-03-09","0.00","1.24","0.00","3.70" 15 | "2021-03-10","0.00","5.75","0.00","0.82" 16 | "2021-03-11","0.00","3.05","0.00","1.25" 17 | "2021-03-14","0.00","0.64","0.00","1.91" 18 | "2021-03-15","0.00","0.00","0.00","0.31" 19 | "2021-03-16","0.00","10.00","0.00","18.00" 20 | "2021-03-17","0.00","1.20","0.00","2.61" 21 | "2021-03-18","0.00","0.36","0.00","0.36" 22 | "2021-03-19","0.00","0.36","0.00","2.84" 23 | "2021-03-20","0.00","1.59","0.00","2.91" 24 | "2021-03-21","0.00","8.77","0.00","11.93" 25 | "2021-03-22","0.00","4.89","0.00","10.08" 26 | "2021-03-23","0.00","0.84","0.00","74.50" 27 | "2021-03-24","0.00","17697.79","-0.00","36378.67" 28 | "2021-03-25","0.00","9856.06","0.00","48501.68" 29 | "2021-03-26","0.00","9789.38","-0.00","45379.14" 30 | "2021-03-27","0.00","11176.23","-0.00","42634.25" 31 | "2021-03-28","0.00","1660.26","0.00","19484.94" 32 | "2021-03-29","0.00","469.42","0.00","17754.33" 33 | "2021-03-30","0.00","837.28","-0.00","20750.19" 34 | "2021-03-31","0.00","314.43","0.00","12416.02" 35 | "2021-04-01","0.00","1195.69","-0.00","18424.02" 36 | "2021-04-02","0.00","1667.44","-0.00","9161.81" 37 | "2021-04-03","0.00","2710.15","-0.00","19093.83" 38 | "2021-04-04","0.00","2453.19","-0.00","19853.12" 39 | "2021-04-05","0.00","2107.61","-0.00","19394.85" 40 | "2021-04-06","0.00","1789.86","-0.00","22771.14" 41 | "2021-04-07","0.00","2438.14","-0.00","30353.50" 42 | "2021-04-08","0.00","1430.32","0.00","10067.94" 43 | "2021-04-09","0.00","1176.68","0.00","2760.91" 44 | "2021-04-10","0.00","1342.18","0.00","5607.94" 45 | "2021-04-11","0.00","156.17","0.00","4762.03" 46 | "2021-04-12","0.00","244.11","-0.00","2644.57" 47 | "2021-04-13","6.29","295.01","-0.00","4463.90" 48 | "2021-04-14","2923.60","174.61","-0.00","6904.05" 49 | "2021-04-15","8107.37","179.90","0.00","6298.40" 50 | "2021-04-16","11966.64","196.33","-0.00","2394.18" 51 | "2021-04-17","3649.84","164.14","0.00","352.62" 52 | "2021-04-18","4237.00","483.15","0.00","36.25" 53 | "2021-04-19","4304.69","1377.08","0.00","35.56" 54 | "2021-04-20","6038.51","756.23","0.00","31.67" 55 | "2021-04-21","9616.96","871.96","0.00","158.38" 56 | "2021-04-22","19192.17","374.90","0.00","64.25" 57 | "2021-04-23","22281.83","202.87","-0.00","54.49" 58 | "2021-04-24","21182.87","169.37","-0.00","21.48" 59 | "2021-04-25","20044.35","123.74","0.00","35.91" 60 | "2021-04-26","19053.35","64.33","0.00","15.82" 61 | "2021-04-27","19536.33","70.29","0.00","88.85" 62 | "2021-04-28","23239.04","116.71","-0.00","211.30" 63 | "2021-04-29","27376.59","304.57","0.00","440.56" 64 | "2021-04-30","33337.70","410.34","0.00","517.84" 65 | "2021-05-01","34833.89","352.90","51.24","419.47" 66 | "2021-05-02","34348.93","268.11","0.00","297.45" 67 | "2021-05-03","35711.43","49.82","-0.00","13.14" 68 | "2021-05-04","35934.18","41.11","-0.00","10.78" 69 | "2021-05-05","35561.32","47.41","0.00","108.13" 70 | "2021-05-06","34288.42","239.11","0.00","490.73" 71 | "2021-05-07","37739.77","433.25","0.00","462.93" 72 | "2021-05-08","40023.42","259.81","0.00","77.83" 73 | "2021-05-09","40914.72","58.14","-0.00","21.62" 74 | "2021-05-10","41298.86","53.40","-0.00","119.44" 75 | "2021-05-11","34504.21","200.02","-0.00","376.66" 76 | "2021-05-12","28829.48","194.70","-0.00","317.72" 77 | "2021-05-13","31172.25","166.27","0.00","254.15" 78 | "2021-05-14","24762.39","269.09","0.00","466.50" 79 | "2021-05-15","31309.25","142.25","0.00","305.42" 80 | "2021-05-16","32985.90","88.26","-0.00","157.19" 81 | "2021-05-17","38317.35","174.28","0.00","368.98" 82 | "2021-05-18","29442.31","142.61","-0.00","333.72" 83 | "2021-05-19","40352.13","173.14","-0.00","257.19" 84 | "2021-05-20","42294.36","76.19","0.00","32.02" 85 | "2021-05-21","39580.93","52.03","0.00","29.77" 86 | "2021-05-22","40255.94","31.35","0.00","4.50" 87 | "2021-05-23","40420.76","16.64","-0.00","6.11" 88 | "2021-05-24","39607.51","12.14","-0.00","34.93" 89 | "2021-05-25","35761.25","1.09","-0.00","4.15" 90 | "2021-05-26","41907.53","14.86","-0.00","8.31" 91 | "2021-05-27","32300.24","29.29","0.00","11.83" 92 | "2021-05-28","31790.41","1736.66","0.00","9.75" 93 | "2021-05-29","33259.74","3948.24","0.00","21.98" 94 | "2021-05-30","35502.37","3970.53","0.00","5.55" 95 | "2021-05-31","59117.14","186.67","0.00","4.89" 96 | "2021-06-01","34583.52","35.12","0.00","4.70" 97 | "2021-06-02","26730.95","59.79","0.00","7.87" 98 | "2021-06-03","25687.19","37.58","-0.00","6.83" 99 | "2021-06-04","27055.43","44.25","0.00","4.72" 100 | "2021-06-05","22881.18","31.00","-0.00","2.34" 101 | "2021-06-06","23465.00","145.51","0.00","2.44" 102 | "2021-06-07","26988.40","259.90","0.00","2.12" 103 | "2021-06-08","24854.52","385.30","-0.00","4.79" 104 | "2021-06-09","19242.76","184.06","0.00","8.56" 105 | "2021-06-10","20350.51","188.70","-0.00","7.34" 106 | "2021-06-11","21874.44","313.85","0.00","4.80" 107 | "2021-06-12","17004.75","168.02","-0.00","2.16" 108 | "2021-06-13","14546.30","67.42","0.00","0.22" 109 | "2021-06-14","14344.87","243.99","0.00","2.66" 110 | "2021-06-15","13910.21","174.53","-0.00","3.08" 111 | "2021-06-16","11657.33","15.15","-0.00","0.00" 112 | "2021-06-17","10183.52","47.15","-0.00","0.88" 113 | "2021-06-18","7310.15","41.43","-0.00","1.97" 114 | "2021-06-19","10381.33","24.12","-0.00","0.49" 115 | "2021-06-20","9687.46","47.10","0.00","3.30" 116 | "2021-06-21","6374.48","28.27","-0.00","0.57" 117 | "2021-06-22","11569.39","54.27","-0.00","1.35" 118 | "2021-06-23","11619.13","53.24","0.00","0.88" 119 | "2021-06-24","10771.78","15.79","0.00","2.04" 120 | "2021-06-25","10755.07","83.38","-0.00","2.37" 121 | "2021-06-26","9975.94","246.34","-0.00","0.69" 122 | "2021-06-27","10708.09","129.30","-0.00","0.73" 123 | "2021-06-28","9207.99","163.39","-0.00","0.24" 124 | "2021-06-29","9245.44","178.50","-0.00","0.26" 125 | "2021-06-30","11321.43","190.51","-0.00","0.26" 126 | "2021-07-01","11137.30","212.18","-0.00","1.74" 127 | "2021-07-02","12263.22","196.88","-0.00","4.65" 128 | "2021-07-03","12963.25","204.44","-0.00","14.81" 129 | "2021-07-04","12957.39","211.46","-0.00","27.37" 130 | "2021-07-05","12627.76","114.16","-0.00","27.41" 131 | "2021-07-06","12741.76","33.54","0.00","0.00" 132 | "2021-07-07","13104.80","20.99","0.00","0.24" 133 | "2021-07-08","13179.78","5.22","0.00","0.26" 134 | "2021-07-09","11751.20","2.33","0.00","0.26" 135 | "2021-07-10","8379.60","22020.15","-0.00","0.00" 136 | "2021-07-11","7644.61","0.51","-0.00","0.26" 137 | "2021-07-12","8438.24","1.57","-0.00","0.26" 138 | "2021-07-13","9089.58","0.78","0.00","0.00" 139 | "2021-07-14","10486.35","0.53","0.00","0.24" 140 | "2021-07-15","10010.18","14.57","-0.00","0.00" 141 | "2021-07-16","9798.62","0.00","0.00","0.00" 142 | "2021-07-17","10789.75","0.00","0.00","0.54" 143 | "2021-07-18","9888.09","1.76","-0.00","0.00" 144 | "2021-07-19","8026.76","3.83","-0.00","0.00" 145 | "2021-07-20","10538.56","0.27","0.00","0.00" 146 | "2021-07-21","11922.60","0.00","-0.00","0.27" 147 | "2021-07-22","13716.04","0.54","-0.00","0.27" 148 | "2021-07-23","14143.11","0.00","-0.00","0.25" 149 | "2021-07-24","13194.02","3.29","-0.00","0.25" 150 | "2021-07-25","14949.22","3.16","-0.00","0.30" 151 | "2021-07-26","12304.79","0.56","-0.00","0.00" 152 | "2021-07-27","10264.69","2.91","0.00","0.00" 153 | "2021-07-28","10458.50","3.83","0.00","0.00" 154 | "2021-07-29","8236.24","212.63","-0.00","9.43" 155 | "2021-07-30","11103.31","35.72","0.00","0.00" 156 | "2021-07-31","17519.93","68.95","-0.00","0.45" 157 | "2021-08-01","20121.47","98.22","0.00","0.99" 158 | "2021-08-02","19256.31","46.88","-0.00","2.43" 159 | "2021-08-03","19696.71","15.51","-0.00","0.28" 160 | "2021-08-04","19883.06","97.39","-0.00","0.49" 161 | "2021-08-05","18359.82","99.57","-0.00","0.54" 162 | "2021-08-06","19957.03","56.85","0.00","2.66" 163 | "2021-08-07","19537.57","57.09","-0.00","0.48" 164 | "2021-08-08","20844.81","9.33","-0.00","5.51" 165 | "2021-08-09","20159.15","3.08","0.00","1.21" 166 | "2021-08-10","19982.84","33.72","-0.00","0.28" 167 | "2021-08-11","20755.74","43.30","-0.00","0.96" 168 | "2021-08-12","21642.01","2.83","0.00","4.28" 169 | "2021-08-13","20337.16","0.28","-0.00","4.00" 170 | "2021-08-14","20539.71","9.00","-0.00","2.49" 171 | "2021-08-15","20443.72","2.42","-0.00","0.00" 172 | "2021-08-16","19821.37","9.09","0.00","0.00" 173 | "2021-08-17","17316.32","11.36","0.00","0.00" 174 | "2021-08-18","17954.72","12.55","0.00","0.87" 175 | "2021-08-19","18481.97","31.09","0.00","0.29" 176 | "2021-08-20","35349.50","9.10","0.00","2.00" 177 | "2021-08-21","31644.85","1.52","0.00","11.42" 178 | "2021-08-22","30433.44","1.54","-0.00","13.46" 179 | "2021-08-23","28883.04","11.02","0.00","7.51" 180 | "2021-08-24","28517.07","0.00","-0.00","2.63" 181 | "2021-08-25","28426.97","0.57","-0.00","2.87" 182 | "2021-08-26","29513.59","0.59","0.00","0.99" 183 | "2021-08-27","28782.46","3.53","-0.00","1.06" 184 | "2021-08-28","27861.92","0.88","-0.00","3.77" 185 | "2021-08-29","31024.44","0.89","0.00","2.50" 186 | "2021-08-30","29730.05","0.59","0.00","1.35" 187 | "2021-08-31","28413.83","582.24","0.00","1.70" 188 | "2021-09-01","25339.26","3586.13","0.00","2.19" 189 | "2021-09-02","25426.14","4797.02","-0.00","0.56" 190 | "2021-09-03","21779.41","5932.02","0.00","0.00" 191 | "2021-09-04","22833.36","6901.01","-0.00","3.22" 192 | "2021-09-05","25914.92","6849.99","0.00","0.00" 193 | "2021-09-06","24663.73","6395.30","0.00","0.34" 194 | "2021-09-07","24883.67","5976.65","0.00","0.94" 195 | "2021-09-08","23677.06","5932.29","-0.00","0.26" 196 | "2021-09-09","23736.38","5968.29","0.00","0.29" 197 | "2021-09-10","23013.41","6653.35","-0.00","0.89" 198 | "2021-09-11","23257.84","5935.33","-0.00","0.63" 199 | "2021-09-12","24222.78","6211.40","0.00","1.46" 200 | "2021-09-13","24642.04","6237.83","-0.00","0.31" 201 | "2021-09-14","25295.61","5783.86","-0.00","0.81" 202 | "2021-09-15","26315.75","6112.99","-0.00","0.61" 203 | "2021-09-16","23300.74","6625.46","0.00","4.34" 204 | "2021-09-17","29441.80","6381.79","0.00","0.00" 205 | "2021-09-18","19535.26","6470.73","0.00","5.22" 206 | "2021-09-19","22606.73","6430.91","-0.00","3.11" 207 | "2021-09-20","23886.84","6133.45","0.00","1.61" 208 | "2021-09-21","21759.45","6457.02","-0.00","1.25" 209 | "2021-09-22","25002.08","6437.16","0.00","2.23" 210 | "2021-09-23","26664.48","4245.02","-0.00","6.63" 211 | "2021-09-24","24540.62","3828.71","0.00","3.18" 212 | "2021-09-25","26862.36","4447.79","0.00","5.74" 213 | "2021-09-26","28570.64","5523.86","-0.00","4.19" 214 | "2021-09-27","28290.66","8018.38","-0.00","9.19" 215 | "2021-09-28","27598.86","6256.10","-0.00","5.31" 216 | "2021-09-29","23089.51","958.41","0.00","6.08" 217 | "2021-09-30","20712.09","2203.33","0.00","5.10" 218 | "2021-10-01","19472.77","5165.59","-0.00","6.14" 219 | "2021-10-02","19076.93","5872.54","0.00","52.14" 220 | "2021-10-03","18172.94","5399.38","-0.00","5.77" 221 | "2021-10-04","17257.88","5314.76","-0.00","12.37" 222 | "2021-10-05","18434.48","4734.44","0.00","8.32" 223 | "2021-10-06","16802.00","4515.66","0.00","8.10" 224 | "2021-10-07","18083.53","5345.51","-0.00","6.69" 225 | "2021-10-08","16549.49","6446.24","0.00","17.39" 226 | "2021-10-09","13817.11","6727.11","0.00","8.82" 227 | "2021-10-10","14453.07","6514.92","0.00","4.78" 228 | "2021-10-11","14069.38","6363.82","0.00","31.11" 229 | "2021-10-12","11819.19","6844.84","0.00","2.72" 230 | "2021-10-13","15070.71","7286.44","0.00","2.42" 231 | "2021-10-14","14855.59","7336.66","0.00","6.51" 232 | "2021-10-15","16523.74","14599.77","-0.00","10.36" 233 | "2021-10-16","17583.12","7643.02","-0.00","6.70" 234 | "2021-10-17","18612.82","4942.43","739.35","7.96" 235 | "2021-10-18","22704.15","6223.90","-0.00","12.15" 236 | "2021-10-19","19031.89","5251.60","-0.00","2.73" 237 | "2021-10-20","18677.10","5312.84","0.00","6.14" 238 | "2021-10-21","17322.78","6883.01","-0.00","3.47" 239 | "2021-10-22","18012.14","8826.20","-0.00","2.27" 240 | "2021-10-23","16688.77","8919.39","0.00","13.50" 241 | "2021-10-24","16260.63","9193.43","-0.00","1.05" 242 | "2021-10-25","15867.24","8671.67","35.41","0.19" 243 | "2021-10-26","15769.12","8881.87","844.96","6.28" 244 | "2021-10-27","15823.29","9232.42","-0.00","2.22" 245 | "2021-10-28","14438.99","10162.24","0.00","1.30" 246 | "2021-10-29","13273.23","9014.14","0.00","0.46" 247 | "2021-10-30","11396.35","10754.62","0.00","1.63" 248 | "2021-10-31","14437.98","10193.07","-0.00","3.04" 249 | "2021-11-01","13381.61","9396.68","-0.00","1.77" 250 | "2021-11-02","15261.70","9934.94","0.00","2.78" 251 | "2021-11-03","14552.72","10234.52","-0.00","3.74" 252 | "2021-11-04","14106.85","10466.26","0.00","1.41" 253 | "2021-11-05","13794.28","9802.01","-0.00","3.72" 254 | "2021-11-06","11557.48","8508.88","0.00","4.20" 255 | "2021-11-07","9034.59","10332.85","-0.00","3.87" 256 | "2021-11-08","8555.77","10242.85","-0.00","5.83" 257 | "2021-11-09","8154.24","10483.12","-0.00","3.14" 258 | "2021-11-10","7611.59","11062.73","0.00","5.07" 259 | "2021-11-11","8752.44","15205.85","0.00","2.70" 260 | "2021-11-12","14387.05","13554.31","0.00","4.92" 261 | "2021-11-13","16254.47","13909.21","0.00","1.22" 262 | "2021-11-14","16754.51","10963.33","0.00","1.20" 263 | "2021-11-15","15973.08","14030.52","-0.00","4.76" 264 | "2021-11-16","18321.38","21040.95","-0.00","8.20" 265 | "2021-11-17","17711.97","17437.64","0.00","6.72" 266 | "2021-11-18","17610.25","16513.12","-0.00","0.88" 267 | "2021-11-19","15571.66","18525.53","-0.00","1.19" 268 | "2021-11-20","12794.03","18730.77","-0.00","1.87" 269 | "2021-11-21","11117.43","21490.60","0.00","12.85" 270 | "2021-11-22","10010.65","18368.07","0.00","11.09" 271 | "2021-11-23","10806.94","21003.43","-0.00","3.21" 272 | "2021-11-24","9161.82","19515.45","0.00","3.14" 273 | "2021-11-25","7781.98","19477.92","-0.00","2.81" 274 | "2021-11-26","7165.52","19409.32","0.00","6.96" 275 | "2021-11-27","6185.39","18242.95","0.00","2.15" 276 | "2021-11-28","6352.28","16596.65","-0.00","2.41" 277 | "2021-11-29","8271.13","19200.69","0.00","22.82" 278 | "2021-11-30","11955.47","20885.62","-0.00","15.32" 279 | "2021-12-01","12329.75","20459.20","0.00","32.81" 280 | "2021-12-02","11983.31","16821.61","-0.00","30.35" 281 | "2021-12-03","15311.52","16055.58","0.00","27.42" 282 | "2021-12-04","16967.23","17107.87","0.00","28.13" 283 | "2021-12-05","14332.55","19373.73","0.00","29.33" 284 | "2021-12-06","14759.47","21731.85","-0.00","31.88" 285 | "2021-12-07","17334.32","20119.60","-0.00","26.43" 286 | "2021-12-08","15508.05","19417.10","-0.00","19.09" 287 | "2021-12-09","13098.59","16196.58","-0.00","14.40" 288 | "2021-12-10","12727.45","16771.53","0.00","8.77" 289 | "2021-12-11","10595.88","15850.87","0.00","9.61" 290 | "2021-12-12","16428.99","19685.06","-0.00","83.17" 291 | "2021-12-13","15776.83","21560.64","-0.00","120.89" 292 | "2021-12-14","11135.05","21563.06","-0.00","82.46" 293 | "2021-12-15","10605.29","29146.10","-0.00","0.44" 294 | "2021-12-16","13825.23","21988.89","-0.00","0.92" 295 | "2021-12-17","15390.39","22427.19","-0.00","4.52" 296 | "2021-12-18","15734.23","24956.70","0.00","3.88" 297 | "2021-12-19","14026.29","24913.16","0.00","11.41" 298 | "2021-12-20","13569.67","25054.77","-0.00","11.44" 299 | "2021-12-21","11594.56","24471.37","0.00","13.55" 300 | "2021-12-22","20208.71","23866.53","-0.00","7.14" 301 | "2021-12-23","14959.32","24041.97","0.00","1.88" 302 | "2021-12-24","11959.20","25143.18","0.00","0.25" 303 | "2021-12-25","11095.34","26216.41","-0.00","4.16" 304 | "2021-12-26","10379.78","24867.42","0.00","2.58" 305 | "2021-12-27","10197.63","25710.89","0.00","2.64" 306 | "2021-12-28","11334.00","29108.49","-0.00","1.56" 307 | "2021-12-29","8467.90","11725.18","-0.00","3.33" 308 | "2021-12-30","9203.99","11714.26","0.00","14.08" 309 | "2021-12-31","83883.01","26241.79","-0.00","14.86" 310 | "2022-01-01","8108.28","4111.92","0.00","1.28" 311 | "2022-01-02","5625.26","3398.80","0.00","0.96" 312 | "2022-01-03","4946.73","3345.58","-0.00","9.78" 313 | "2022-01-04","6210.59","4641.57","0.00","1.96" 314 | "2022-01-05","6599.00","5201.66","-0.00","31.33" 315 | "2022-01-06","6682.46","5497.78","0.00","35.29" 316 | "2022-01-07","6976.60","5708.25","-0.00","11.77" 317 | "2022-01-08","3481.19","9098.98","0.00","36.06" 318 | "2022-01-09","3022.40","7369.20","0.00","114.66" 319 | "2022-01-10","2977.09","8994.32","-0.00","5.08" 320 | "2022-01-11","3033.61","9807.84","0.00","25.75" 321 | "2022-01-12","2947.15","6839.71","-0.00","190.83" 322 | "2022-01-13","2635.82","1871.46","0.00","318.79" 323 | "2022-01-14","2819.19","8434.95","0.00","171.76" 324 | "2022-01-15","2992.17","34621.20","0.00","323.35" 325 | "2022-01-16","2953.99","13588.98","0.00","575.68" 326 | "2022-01-17","2872.31","7085.19","-0.00","440.40" 327 | "2022-01-18","3067.26","6595.67","0.00","347.40" 328 | "2022-01-19","4131.20","6699.97","0.00","243.89" 329 | "2022-01-20","3412.86","6923.16","0.00","235.95" 330 | "2022-01-21","3664.88","6844.14","-0.00","365.65" 331 | "2022-01-22","3911.57","6924.76","0.00","313.70" 332 | "2022-01-23","3798.16","4991.21","-0.00","315.32" 333 | "2022-01-24","3891.54","3967.68","-0.00","526.17" 334 | "2022-01-25","4279.36","3431.27","0.00","503.56" 335 | "2022-01-26","4006.18","7712.13","0.00","554.36" 336 | "2022-01-27","10729.45","26899.32","0.00","500.68" 337 | "2022-01-28","11504.20","26723.82","-0.00","606.90" 338 | "2022-01-29","10064.96","26339.71","0.00","578.04" 339 | "2022-01-30","7889.70","25258.33","-0.00","451.93" 340 | "2022-01-31","11316.42","24838.65","-0.00","699.39" 341 | "2022-02-01","11904.38","26257.27","0.00","865.66" 342 | "2022-02-02","14104.28","33071.79","0.00","678.52" 343 | "2022-02-03","13183.07","43881.50","0.00","869.27" 344 | "2022-02-04","10761.28","43807.00","-0.00","849.86" 345 | "2022-02-05","11893.35","43967.80","-0.00","672.53" 346 | "2022-02-06","11226.90","42679.87","0.00","266.84" 347 | "2022-02-07","13568.78","42992.83","-0.00","4.74" 348 | "2022-02-08","14159.68","42166.84","0.00","3.26" 349 | "2022-02-09","10571.34","46225.86","-0.00","5.20" 350 | "2022-02-10","101746.66","46327.51","-0.00","0.20" 351 | "2022-02-11","12165.04","43243.29","0.00","8.37" 352 | "2022-02-12","12761.01","41740.48","0.00","2.08" 353 | "2022-02-13","48761.73","440813.31","-0.00","812.55" 354 | "2022-02-14","15831.25","73351.20","-0.00","7588.04" 355 | "2022-02-15","33742.22","231748.49","-0.00","32506.98" 356 | "2022-02-16","33715.79","294660.81","-0.00","28137.06" 357 | "2022-02-17","36682.92","297482.18","-0.00","35954.31" 358 | "2022-02-18","33793.62","301560.59","0.00","27422.48" 359 | "2022-02-19","33629.84","274945.78","-0.00","20916.73" 360 | "2022-02-20","38661.31","228777.28","-0.00","22534.98" 361 | "2022-02-21","38446.02","213412.67","-0.00","30947.21" 362 | "2022-02-22","37570.25","210331.04","-0.00","18654.75" 363 | "2022-02-23","34407.10","195215.26","0.00","13244.23" 364 | "2022-02-24","38621.86","219345.45","-0.00","12981.74" 365 | "2022-02-25","38594.09","216799.80","0.00","16785.68" 366 | "2022-02-26","34742.78","206297.05","0.00","18490.49" 367 | "2022-02-27","34697.12","203396.19","-0.00","14577.08" 368 | "2022-02-28","145743.82","207974.16","0.00","16609.26" 369 | "2022-03-01","31708.91","183694.67","0.47","12012.78" 370 | "2022-03-02","33875.59","201796.46","-0.00","10506.92" 371 | "2022-03-03","30772.89","190858.96","0.00","9812.90" 372 | "2022-03-04","27949.80","160220.36","0.00","6846.25" 373 | "2022-03-05","30586.43","158002.71","-0.00","8007.80" 374 | "2022-03-06","31430.81","167305.58","-0.00","5503.75" 375 | "2022-03-07","35348.21","161987.40","0.00","5430.38" 376 | "2022-03-08","39838.97","155182.11","-0.00","4808.09" 377 | "2022-03-09","39810.79","164559.92","0.00","4928.19" 378 | "2022-03-10","33700.15","190769.73","0.00","6842.77" 379 | "2022-03-11","36104.38","178486.80","0.00","5725.01" 380 | "2022-03-12","32515.82","196345.83","0.00","4404.78" 381 | "2022-03-13","31377.60","175328.67","-0.00","5845.47" 382 | "2022-03-14","40036.98","175059.33","-0.00","3483.89" 383 | "2022-03-15","37846.51","193166.81","0.00","2929.96" 384 | "2022-03-16","39188.74","200508.31","-0.00","4945.37" 385 | "2022-03-17","41002.33","179473.61","-0.00","3596.79" 386 | "2022-03-18","46402.37","177533.33","0.00","2504.51" 387 | "2022-03-19","44628.27","176552.94","0.00","2535.06" 388 | "2022-03-20","43441.99","178952.66","0.00","2426.65" 389 | "2022-03-21","40670.18","176643.82","0.00","2491.14" 390 | "2022-03-22","39046.20","176618.13","0.00","2018.53" 391 | "2022-03-23","41260.76","182280.63","-0.00","1639.48" 392 | "2022-03-24","41379.71","195463.17","-0.00","4005.78" 393 | "2022-03-25","55828.65","197793.65","-0.00","2786.84" 394 | "2022-03-26","66097.77","193006.39","0.00","2567.87" 395 | "2022-03-27","58986.38","190235.43","0.00","3172.00" 396 | "2022-03-28","57820.43","186584.73","0.00","976.25" 397 | "2022-03-29","60888.79","173461.71","-0.00","1282.11" 398 | "2022-03-30","55791.53","184915.73","-0.00","1755.90" 399 | "2022-03-31","346647.18","176714.80","0.00","1708.88" 400 | "2022-04-01","53367.22","179389.52","0.00","2050.27" 401 | "2022-04-02","56067.53","172041.31","0.00","2121.44" 402 | "2022-04-03","56903.05","149393.08","0.00","916.75" 403 | "2022-04-04","59315.91","100543.90","0.00","707.16" 404 | "2022-04-05","66272.08","124506.29","-0.00","686.92" 405 | "2022-04-06","63434.82","120980.22","-0.00","760.34" 406 | "2022-04-07","60998.37","118701.95","0.00","803.34" 407 | "2022-04-08","62549.11","85845.90","-0.00","506.27" 408 | "2022-04-09","57322.35","79923.88","-0.00","904.19" 409 | "2022-04-10","61204.92","96454.47","0.00","617.72" 410 | "2022-04-11","62519.54","73804.67","-0.00","547.78" 411 | "2022-04-12","59523.53","82135.23","0.00","460.12" 412 | "2022-04-13","60217.60","88837.73","-0.00","690.79" 413 | "2022-04-14","71940.03","437781.95","0.00","1192.51" 414 | "2022-04-15","58370.16","166300.09","-0.00","734.75" 415 | "2022-04-16","74515.39","71850.95","-0.00","845.12" 416 | "2022-04-17","82154.64","80370.81","0.00","819.68" 417 | "2022-04-18","81862.84","82800.52","0.39","900.09" 418 | "2022-04-19","83056.30","80968.79","0.00","697.64" 419 | "2022-04-20","81423.08","90910.11","-0.00","652.45" 420 | "2022-04-21","79807.80","86519.81","-0.00","831.25" 421 | "2022-04-22","82272.28","110993.65","0.00","873.53" 422 | "2022-04-23","85075.36","107299.57","0.00","569.42" 423 | "2022-04-24","84609.82","97089.70","-0.00","626.54" 424 | "2022-04-25","80168.83","98348.61","0.00","749.37" 425 | "2022-04-26","76870.58","94256.79","0.00","613.72" 426 | "2022-04-27","112935.28","101454.18","-0.00","659.48" 427 | "2022-04-28","71750.73","114274.34","-0.00","927.01" 428 | "2022-04-29","77678.11","115803.07","-0.00","758.54" 429 | "2022-04-30","80381.84","128236.52","-0.00","806.79" 430 | "2022-05-01","79305.13","110746.07","0.00","810.27" 431 | "2022-05-02","76565.80","120206.11","0.00","711.54" 432 | "2022-05-03","85178.28","121256.37","0.00","760.80" 433 | "2022-05-04","81978.23","118932.86","0.00","862.14" 434 | "2022-05-05","82968.88","118229.10","-0.00","893.03" 435 | "2022-05-06","77589.87","119191.77","-0.00","787.74" 436 | "2022-05-07","68696.34","113627.14","0.00","1052.11" 437 | "2022-05-08","65704.21","137504.47","-0.00","1038.49" 438 | "2022-05-09","66061.45","130527.93","-0.00","1479.53" 439 | "2022-05-10","71254.07","118299.42","0.00","1247.76" 440 | "2022-05-11","59452.67","120901.92","0.00","1147.29" 441 | "2022-05-12","55521.63","132328.89","-0.00","1232.72" 442 | "2022-05-13","52507.90","128071.05","0.00","1266.00" 443 | "2022-05-14","48550.79","125562.46","-0.00","1173.67" 444 | "2022-05-15","46145.47","125938.83","0.00","924.12" 445 | "2022-05-16","43214.66","103583.94","0.00","447.02" 446 | "2022-05-17","41755.74","88658.00","-0.00","543.22" 447 | "2022-05-18","71244.80","69932.46","0.00","464.77" 448 | "2022-05-19","77538.63","67067.35","-0.00","727.99" 449 | "2022-05-20","79989.38","55044.47","0.00","714.67" 450 | "2022-05-21","86511.23","56699.04","0.00","235.88" 451 | "2022-05-22","84470.71","68126.69","0.00","411.58" 452 | "2022-05-23","86340.53","61619.48","-0.00","646.47" 453 | "2022-05-24","97019.89","64572.69","0.00","746.38" 454 | "2022-05-25","97352.27","66137.53","-0.00","421.45" 455 | "2022-05-26","93811.31","62972.75","0.00","224.38" 456 | "2022-05-27","101226.72","66961.93","-0.00","306.09" 457 | "2022-05-28","100574.57","51053.67","0.00","205.15" 458 | "2022-05-29","121280.08","71120.14","-0.00","358.47" 459 | "2022-05-30","140612.44","55383.66","0.00","612.70" 460 | "2022-05-31","281014.91","157067.86","0.00","749.31" 461 | "2022-06-01","103542.46","49237.47","-0.00","668.45" 462 | "2022-06-02","112638.26","60545.51","0.00","545.24" 463 | "2022-06-03","155172.26","164911.35","0.00","486.99" 464 | "2022-06-04","108023.33","56273.88","0.00","411.76" 465 | "2022-06-05","112839.58","72067.39","-0.00","412.15" 466 | "2022-06-06","125539.98","58207.64","0.00","433.96" 467 | "2022-06-07","118844.32","59396.85","-0.00","669.53" 468 | "2022-06-08","123103.12","58853.74","0.00","604.48" 469 | "2022-06-09","120977.82","60406.52","-0.00","663.08" 470 | "2022-06-10","109042.70","63491.04","-0.00","557.36" 471 | "2022-06-11","107730.07","63445.63","0.00","497.64" 472 | "2022-06-12","81895.02","63730.16","-0.00","229.15" 473 | "2022-06-13","109955.18","74276.55","-0.00","537.99" 474 | "2022-06-14","113552.36","111070.10","0.00","490.40" 475 | "2022-06-15","161803.78","58392.20","-0.00","517.90" 476 | "2022-06-16","127566.06","63936.71","0.00","376.18" 477 | "2022-06-17","119942.99","61963.25","-0.00","646.14" 478 | "2022-06-18","113470.11","139346.45","0.00","993.26" 479 | "2022-06-19","140244.62","61894.31","0.00","419.38" 480 | "2022-06-20","118452.81","58472.97","-0.00","302.87" 481 | "2022-06-21","126103.42","59384.18","0.00","300.85" 482 | "2022-06-22","138301.52","60339.29","-0.00","384.97" 483 | "2022-06-23","221750.63","52421.91","-0.00","973.03" 484 | "2022-06-24","111642.98","50743.81","-0.00","540.73" 485 | "2022-06-25","103504.46","67169.92","-0.00","439.30" 486 | "2022-06-26","106066.61","56282.67","-0.00","626.93" 487 | "2022-06-27","110098.01","62651.73","-0.00","632.05" 488 | "2022-06-28","122015.46","64837.23","0.00","833.54" 489 | "2022-06-29","119261.97","77529.54","0.00","824.38" 490 | "2022-06-30","180546.07","64218.27","0.00","800.71" 491 | "2022-07-01","486339.76","79640.10","-0.00","797.69" 492 | "2022-07-02","114412.84","60879.77","0.00","692.90" 493 | "2022-07-03","111560.89","72760.65","0.00","572.78" 494 | "2022-07-04","129237.51","79846.06","0.00","518.14" 495 | "2022-07-05","130428.25","92771.30","0.00","487.69" 496 | "2022-07-06","517388.67","119632.22","23.10","635.31" 497 | "2022-07-07","233974.11","120419.95","-0.00","855.39" 498 | "2022-07-08","135951.12","61128.35","-0.00","645.60" 499 | "2022-07-09","129877.93","58176.55","-15.94","470.76" 500 | "2022-07-10","130076.63","65895.02","-1132.76","1567.33" 501 | "2022-07-11","132171.01","58184.86","-1013.79","1354.54" 502 | "2022-07-12","135976.90","59130.32","-709.06","1124.34" 503 | "2022-07-13","118600.19","65366.66","-1574.77","2399.09" 504 | "2022-07-14","271802.28","509109.22","-643.93","1667.13" 505 | "2022-07-15","102796.91","95055.43","0.82","1221.07" 506 | "2022-07-16","97967.58","85637.70","-644.98","1575.23" 507 | "2022-07-17","101152.58","91777.86","-37.64","706.74" 508 | "2022-07-18","133369.60","91442.44","-608.70","1249.23" 509 | "2022-07-19","113931.97","82535.18","-2686.85","3312.83" 510 | "2022-07-20","124776.98","80056.66","-2625.54","3312.34" 511 | "2022-07-21","118330.63","88438.67","-2635.30","3282.00" 512 | "2022-07-22","105880.30","90918.97","-2646.49","3335.59" 513 | "2022-07-23","108811.67","97799.95","-2068.99","2673.21" 514 | "2022-07-24","123378.23","84888.66","-1432.21","2025.16" 515 | "2022-07-25","126564.32","77155.92","-2427.70","2958.75" 516 | "2022-07-26","155189.05","80447.94","-2659.07","3199.63" 517 | "2022-07-27","147719.06","80299.27","-1749.89","2699.63" 518 | "2022-07-28","256899.70","77982.22","-1993.22","2946.96" 519 | "2022-07-29","147089.59","82783.41","-2099.53","3577.62" 520 | "2022-07-30","131647.07","86846.34","-1922.80","2774.94" 521 | "2022-07-31","352596.74","192402.26","-2133.43","2592.54" 522 | "2022-08-01","129044.53","89846.83","-1104.95","1619.93" 523 | "2022-08-02","129522.98","95775.84","-0.36","656.83" 524 | "2022-08-03","140149.73","94210.25","-706.40","1291.04" 525 | "2022-08-04","160683.32","105507.08","-1024.63","1675.20" 526 | "2022-08-05","125325.76","113510.66","-801.33","1379.41" 527 | "2022-08-06","157646.23","115181.14","-170.72","755.07" 528 | "2022-08-07","300074.27","108159.78","0.00","713.16" 529 | "2022-08-08","124583.40","106969.15","-3.58","737.00" 530 | "2022-08-09","158744.04","98635.20","-346.38","1140.76" 531 | "2022-08-10","133509.73","105428.84","0.00","631.34" 532 | "2022-08-11","145449.62","97327.98","-0.00","765.22" 533 | "2022-08-12","136152.78","94672.72","2.91","721.27" 534 | "2022-08-13","228526.14","101499.51","79.27","710.72" 535 | "2022-08-14","146651.24","97531.84","202.28","824.46" 536 | "2022-08-15","135438.56","105446.91","197.86","895.17" 537 | "2022-08-16","698329.00","175392.35","181.40","1507.04" 538 | "2022-08-17","177088.81","82862.38","126.64","552.10" 539 | "2022-08-18","183465.42","89488.97","47.30","581.84" 540 | "2022-08-19","172976.75","93611.76","0.00","902.28" 541 | "2022-08-20","169113.98","87993.54","25.45","945.62" 542 | "2022-08-21","168665.11","88983.92","0.00","871.45" 543 | "2022-08-22","164262.01","87177.00","0.00","1087.97" 544 | "2022-08-23","201218.99","93199.16","0.00","819.65" 545 | "2022-08-24","171919.37","81538.55","0.00","699.75" 546 | "2022-08-25","208365.91","108613.04","-1.05","801.76" 547 | "2022-08-26","199808.14","117561.28","-12.60","851.23" 548 | "2022-08-27","201550.09","114084.05","-1334.39","2403.41" 549 | "2022-08-28","316181.31","107936.92","-738.48","2912.15" 550 | "2022-08-29","222094.49","108740.12","6.34","1530.52" 551 | "2022-08-30","205695.99","104861.20","-692.11","2523.28" 552 | "2022-08-31","490766.81","148950.52","-18938.25","21229.97" 553 | "2022-09-01","198293.95","111909.91","-3659.37","5818.67" 554 | "2022-09-02","189584.85","110892.31","30.07","2124.84" 555 | "2022-09-03","196559.86","109106.33","-0.00","1839.63" 556 | "2022-09-04","323010.85","105339.66","-691.76","2659.29" 557 | "2022-09-05","217918.49","137684.32","-4448.69","5977.53" 558 | "2022-09-06","238437.26","109870.69","-947.82","2409.40" 559 | "2022-09-07","222914.22","120988.57","-0.00","1728.77" 560 | "2022-09-08","213923.01","112954.01","-0.00","1598.65" 561 | "2022-09-09","214605.83","202558.92","-0.00","1046.64" 562 | "2022-09-10","226431.82","149812.78","0.00","1323.07" 563 | "2022-09-11","272617.00","106864.81","-0.00","1709.83" 564 | "2022-09-12","223440.95","135225.24","0.00","1405.19" 565 | "2022-09-13","210006.37","123655.89","-0.00","1588.57" 566 | "2022-09-14","181449.16","110842.15","-0.00","1151.93" 567 | "2022-09-15","222632.62","120475.67","-3132.50","4232.85" 568 | "2022-09-16","228308.03","116854.95","0.00","1201.07" 569 | "2022-09-17","247871.26","115442.60","-14045.36","15123.90" 570 | "2022-09-18","203537.09","138478.21","0.00","1035.81" 571 | "2022-09-19","220649.56","128559.24","-2634.31","3678.35" 572 | "2022-09-20","216102.48","156426.89","0.00","1470.77" 573 | "2022-09-21","199718.51","158487.90","306.78","2141.24" 574 | "2022-09-22","228179.96","178017.67","0.00","1515.55" 575 | "2022-09-23","194396.34","173402.00","3.14","1356.37" 576 | "2022-09-24","232523.12","157379.81","-17148.62","18098.17" 577 | "2022-09-25","206480.52","154771.46","-0.00","1130.79" 578 | "2022-09-26","525345.21","197942.49","-16408.76","17676.48" 579 | "2022-09-27","378217.03","308487.64","16.97","1612.68" 580 | "2022-09-28","260888.38","154413.16","42.81","1789.95" 581 | "2022-09-29","195271.94","170471.08","1053.78","2937.90" 582 | "2022-09-30","678720.80","226343.53","788.26","3562.52" 583 | "2022-10-01","204007.36","165412.50","33.94","3127.04" 584 | "2022-10-02","187497.18","157313.44","672.13","2895.80" 585 | "2022-10-03","182428.47","139027.30","1350.36","2465.81" 586 | "2022-10-04","257396.65","189923.73","195.94","3064.50" 587 | "2022-10-05","207097.80","131081.62","772.76","2621.62" 588 | "2022-10-06","215609.99","122576.73","520.18","2439.07" 589 | "2022-10-07","221374.66","126175.65","208.57","2084.99" 590 | "2022-10-08","280013.29","137566.42","296.57","1982.99" 591 | "2022-10-09","325452.34","179385.11","242.01","1899.37" 592 | "2022-10-10","226003.66","152577.97","107.69","1796.82" 593 | "2022-10-11","212970.04","147873.85","155.88","1823.70" 594 | "2022-10-12","213981.19","156322.08","-0.00","1635.87" 595 | "2022-10-13","228897.82","155408.36","255.59","1874.42" 596 | "2022-10-14","223834.65","169123.67","253.88","1297.08" 597 | "2022-10-15","218059.45","170259.95","56.62","1543.69" 598 | "2022-10-16","231772.91","201139.44","-730.58","2629.51" 599 | "2022-10-17","264007.49","167046.32","-848.26","2786.18" 600 | "2022-10-18","192062.71","174849.76","-888.61","3060.34" 601 | "2022-10-19","177397.96","161464.31","-887.01","2495.83" 602 | "2022-10-20","195614.09","257438.48","-649.40","2315.87" 603 | "2022-10-21","287117.08","182706.38","-746.82","2006.99" 604 | "2022-10-22","219343.54","367401.86","154.64","1311.80" 605 | "2022-10-23","225998.62","176183.54","63.45","969.68" 606 | "2022-10-24","211153.66","248781.77","113.79","918.42" 607 | "2022-10-25","224297.46","166704.71","-2849.92","3977.07" 608 | "2022-10-26","217121.53","154270.12","-2377.89","3922.69" 609 | "2022-10-27","204638.31","143169.39","-2017.62","4645.45" 610 | "2022-10-28","221586.09","195871.48","-1785.64","5309.87" 611 | "2022-10-29","214276.28","161010.02","-3188.29","5592.12" 612 | "2022-10-30","226288.70","157527.32","-2249.93","4773.31" 613 | "2022-10-31","679872.63","2896292.27","-2811.63","3956.39" 614 | "2022-11-01","195530.00","445861.83","-2782.16","4482.48" 615 | "2022-11-02","209665.04","172940.42","-2634.18","4659.56" 616 | "2022-11-03","202932.41","162821.17","-2698.86","4581.93" 617 | "2022-11-04","206518.03","172205.39","-2806.71","4447.06" 618 | "2022-11-05","207569.68","153268.81","-3194.30","5015.39" 619 | "2022-11-06","199736.58","149411.27","-2228.08","4228.88" 620 | "2022-11-07","244444.78","0.00","153575.13","4157.38" 621 | "2022-11-08","186195.99","0.00","156898.71","4070.69" 622 | "2022-11-09","284568.02","0.00","242509.42","5279.82" 623 | "2022-11-10","644122.46","0.00","237500.34","4173.10" 624 | "2022-11-11","242869.39","0.00","143651.00","4282.30" 625 | "2022-11-12","177963.07","0.00","142891.58","2049.62" 626 | "2022-11-13","2067626.32","0.00","164976.19","1861.90" 627 | "2022-11-14","221968.76","0.00","181093.02","2184.08" 628 | "2022-11-15","233786.39","0.00","149302.19","6187.24" 629 | "2022-11-16","186541.16","0.00","161037.21","6090.67" 630 | "2022-11-17","191520.74","0.00","215499.69","7430.25" 631 | "2022-11-18","215864.32","0.00","162935.32","5604.03" 632 | "2022-11-19","221213.08","0.00","426080.42","6173.49" 633 | "2022-11-20","163572.51","0.00","214039.97","11748.92" 634 | "2022-11-21","197861.60","0.00","184410.07","10813.74" 635 | "2022-11-22","172542.10","0.00","179640.63","9926.32" 636 | "2022-11-23","239177.00","0.00","217113.75","11237.53" 637 | "2022-11-24","162402.51","0.00","160375.52","11342.10" 638 | "2022-11-25","184169.70","0.00","230857.10","10723.99" 639 | "2022-11-26","262178.32","0.00","174496.62","11648.86" 640 | "2022-11-27","149201.19","0.00","193042.88","5848.94" 641 | "2022-11-28","178659.57","0.00","220934.48","7451.26" 642 | "2022-11-29","142834.87","0.00","190519.67","8724.11" 643 | "2022-11-30","133739.62","0.00","615813.89","12058.01" 644 | "2022-12-01","118047.53","0.00","229608.11","7147.69" 645 | "2022-12-02","100013.62","0.00","216144.09","10256.56" 646 | "2022-12-03","102228.18","0.00","233985.46","10968.85" 647 | "2022-12-04","96238.11","0.00","334276.46","10377.88" 648 | "2022-12-05","104986.17","0.00","258196.88","9183.56" 649 | "2022-12-06","91154.89","0.00","248363.84","10376.30" 650 | "2022-12-07","108557.65","0.00","417238.67","9677.67" 651 | "2022-12-08","89151.48","0.00","257402.60","7228.41" 652 | "2022-12-09","142997.04","0.00","222983.61","5050.71" 653 | "2022-12-10","82320.62","0.00","216508.19","5981.28" 654 | "2022-12-11","77735.89","0.00","628299.95","6575.16" 655 | "2022-12-12","81533.59","0.00","251474.50","7413.74" 656 | "2022-12-13","120811.72","0.00","315861.48","6758.47" 657 | "2022-12-14","82305.97","0.00","307601.63","22597.06" 658 | "2022-12-15","80396.91","0.00","300620.83","10760.55" 659 | "2022-12-16","83543.03","0.00","286698.83","10221.53" 660 | "2022-12-17","78828.43","0.00","385366.49","9784.58" 661 | "2022-12-18","78272.98","0.00","249376.82","5988.66" 662 | "2022-12-19","77940.63","0.00","819513.19","7647.33" 663 | "2022-12-20","74353.64","0.00","318143.58","6398.64" 664 | "2022-12-21","56639.10","0.00","192674.17","6300.86" 665 | "2022-12-22","58711.80","0.00","197990.25","10762.21" 666 | "2022-12-23","71825.81","0.00","254970.78","7695.90" 667 | "2022-12-24","69673.73","0.00","332121.22","7108.46" 668 | "2022-12-25","80812.74","0.00","272182.36","10161.55" 669 | "2022-12-26","126740.39","0.00","306430.13","8918.88" 670 | "2022-12-27","183173.20","0.00","289966.25","12797.15" 671 | "2022-12-28","252405.22","0.00","305774.94","13721.97" 672 | "2022-12-29","72132.44","0.00","329144.14","10072.83" 673 | "2022-12-30","73789.79","0.00","452367.56","11943.55" 674 | "2022-12-31","164171.39","0.00","858179.96","11033.67" 675 | "2023-01-01","68251.77","0.00","384039.82","11693.64" 676 | "2023-01-02","67369.97","0.00","436952.36","10366.14" 677 | "2023-01-03","62681.78","0.00","378927.27","11825.90" 678 | "2023-01-04","67519.29","0.00","396034.15","12545.90" 679 | "2023-01-05","67508.95","0.00","336745.48","11775.50" 680 | "2023-01-06","61151.82","0.00","339788.32","10373.27" 681 | "2023-01-07","64759.80","0.00","392513.75","10759.21" 682 | "2023-01-08","58538.03","0.00","412386.12","11417.33" 683 | "2023-01-09","49972.59","0.00","549472.22","44793.60" 684 | "2023-01-10","48785.83","0.00","305692.50","6916.01" 685 | "2023-01-11","49532.60","0.00","301704.70","8613.54" 686 | "2023-01-12","63531.52","0.00","294884.07","11794.35" 687 | "2023-01-13","39116.29","0.00","319616.24","12560.28" 688 | "2023-01-14","56249.86","0.00","856216.79","11169.17" 689 | "2023-01-15","39297.75","0.00","336337.60","10025.11" 690 | "2023-01-16","37558.62","0.00","356086.36","10002.71" 691 | "2023-01-17","37435.52","0.00","380907.91","10338.24" 692 | "2023-01-18","39656.71","0.00","650117.20","11152.48" 693 | "2023-01-19","46643.93","0.00","344701.41","12361.37" 694 | "2023-01-20","38191.88","0.00","361940.20","12546.90" 695 | "2023-01-21","34606.39","0.00","354741.91","14693.44" 696 | "2023-01-22","32709.81","0.00","367236.38","11353.24" 697 | "2023-01-23","34025.34","0.00","417987.74","10941.85" 698 | "2023-01-24","42070.55","0.00","372861.33","10790.88" 699 | "2023-01-25","36900.56","0.00","424878.46","6420.76" 700 | "2023-01-26","37770.55","0.00","354010.63","5812.47" 701 | "2023-01-27","33918.33","0.00","348494.59","4160.97" 702 | "2023-01-28","34332.64","0.00","331270.31","5669.37" 703 | "2023-01-29","39043.86","0.00","459726.31","6339.87" 704 | "2023-01-30","35408.83","0.00","372792.34","6341.07" 705 | "2023-01-31","36446.01","0.00","362862.02","7846.84" 706 | "2023-02-01","54834.79","0.00","301851.75","5636.11" 707 | "2023-02-02","29242.05","0.00","309156.61","5071.18" 708 | "2023-02-03","30707.74","0.00","407116.58","4980.39" 709 | "2023-02-04","32003.37","0.00","336807.94","6853.71" 710 | "2023-02-05","33026.94","0.00","283032.89","5686.66" 711 | -------------------------------------------------------------------------------- /offline_info/Sector_Onboarding_Breakdown_by_Sector_Size.csv: -------------------------------------------------------------------------------- 1 | stateTime,32 GiB,64 GiB,Total 2 | "2020-10-15","10.58","0.00","10.58" 3 | "2020-10-16","5.62","0.00","5.62" 4 | "2020-10-17","5.29","0.00","5.29" 5 | "2020-10-18","5.53","0.00","5.53" 6 | "2020-10-19","5.15","0.00","5.15" 7 | "2020-10-20","5.94","0.00","5.94" 8 | "2020-10-21","6.92","0.00","6.92" 9 | "2020-10-22","6.74","0.00","6.74" 10 | "2020-10-23","7.28","0.00","7.28" 11 | "2020-10-24","8.20","0.00","8.20" 12 | "2020-10-25","10.01","0.00","10.01" 13 | "2020-10-26","11.53","0.00","11.53" 14 | "2020-10-27","11.88","0.00","11.88" 15 | "2020-10-28","12.49","0.00","12.49" 16 | "2020-10-29","13.31","0.00","13.31" 17 | "2020-10-30","13.40","0.00","13.40" 18 | "2020-10-31","13.56","0.00","13.56" 19 | "2020-11-01","13.96","0.00","13.96" 20 | "2020-11-02","13.64","0.00","13.64" 21 | "2020-11-03","12.90","0.00","12.90" 22 | "2020-11-04","14.29","0.00","14.29" 23 | "2020-11-05","15.16","0.00","15.16" 24 | "2020-11-06","14.35","0.00","14.35" 25 | "2020-11-07","15.84","0.00","15.84" 26 | "2020-11-08","15.29","0.00","15.29" 27 | "2020-11-09","15.54","0.00","15.54" 28 | "2020-11-10","17.47","0.00","17.47" 29 | "2020-11-11","16.05","0.00","16.05" 30 | "2020-11-12","16.90","0.00","16.90" 31 | "2020-11-13","17.03","0.00","17.03" 32 | "2020-11-14","17.27","0.00","17.27" 33 | "2020-11-15","16.33","0.00","16.33" 34 | "2020-11-16","16.71","0.00","16.71" 35 | "2020-11-17","16.41","0.00","16.41" 36 | "2020-11-18","17.16","0.00","17.16" 37 | "2020-11-19","16.80","0.00","16.80" 38 | "2020-11-20","16.60","0.00","16.60" 39 | "2020-11-21","17.07","0.00","17.07" 40 | "2020-11-22","16.81","0.00","16.81" 41 | "2020-11-23","16.25","0.00","16.25" 42 | "2020-11-24","11.05","0.00","11.05" 43 | "2020-11-25","11.34","0.00","11.34" 44 | "2020-11-26","17.29","0.00","17.29" 45 | "2020-11-27","17.69","0.00","17.69" 46 | "2020-11-28","16.59","0.00","16.59" 47 | "2020-11-29","17.75","0.00","17.75" 48 | "2020-11-30","16.71","0.00","16.71" 49 | "2020-12-01","17.55","0.00","17.55" 50 | "2020-12-02","17.61","0.00","17.61" 51 | "2020-12-03","16.78","0.00","16.78" 52 | "2020-12-04","19.18","0.00","19.18" 53 | "2020-12-05","17.44","0.00","17.44" 54 | "2020-12-06","17.01","0.00","17.01" 55 | "2020-12-07","17.64","0.00","17.64" 56 | "2020-12-08","17.42","0.00","17.42" 57 | "2020-12-09","17.82","0.00","17.82" 58 | "2020-12-10","18.26","0.00","18.26" 59 | "2020-12-11","17.66","0.00","17.66" 60 | "2020-12-12","17.71","0.00","17.71" 61 | "2020-12-13","17.53","0.00","17.53" 62 | "2020-12-14","17.41","0.00","17.41" 63 | "2020-12-15","17.33","0.00","17.33" 64 | "2020-12-16","17.38","0.00","17.38" 65 | "2020-12-17","17.13","0.00","17.13" 66 | "2020-12-18","17.25","0.04","17.29" 67 | "2020-12-19","12.99","0.08","13.07" 68 | "2020-12-20","15.38","0.14","15.52" 69 | "2020-12-21","17.17","0.11","17.28" 70 | "2020-12-22","16.28","0.06","16.34" 71 | "2020-12-23","16.60","0.00","16.60" 72 | "2020-12-24","16.88","0.00","16.88" 73 | "2020-12-25","17.00","0.03","17.03" 74 | "2020-12-26","17.36","0.02","17.38" 75 | "2020-12-27","17.35","0.02","17.37" 76 | "2020-12-28","16.90","0.02","16.92" 77 | "2020-12-29","17.40","0.02","17.42" 78 | "2020-12-30","17.20","0.02","17.22" 79 | "2020-12-31","16.98","0.02","17.00" 80 | "2021-01-01","17.51","0.02","17.53" 81 | "2021-01-02","18.31","0.02","18.33" 82 | "2021-01-03","17.24","0.02","17.26" 83 | "2021-01-04","17.50","0.02","17.52" 84 | "2021-01-05","17.42","0.02","17.44" 85 | "2021-01-06","17.35","0.02","17.37" 86 | "2021-01-07","17.00","0.02","17.02" 87 | "2021-01-08","17.29","0.02","17.31" 88 | "2021-01-09","18.03","0.04","18.07" 89 | "2021-01-10","17.70","0.15","17.85" 90 | "2021-01-11","17.74","0.23","17.97" 91 | "2021-01-12","17.39","0.33","17.72" 92 | "2021-01-13","16.10","1.24","17.34" 93 | "2021-01-14","16.90","1.85","18.75" 94 | "2021-01-15","16.87","1.65","18.52" 95 | "2021-01-16","17.05","2.07","19.12" 96 | "2021-01-17","16.15","2.34","18.49" 97 | "2021-01-18","16.54","2.63","19.17" 98 | "2021-01-19","15.48","3.38","18.86" 99 | "2021-01-20","15.30","3.64","18.94" 100 | "2021-01-21","14.66","4.23","18.89" 101 | "2021-01-22","15.16","4.76","19.92" 102 | "2021-01-23","14.36","6.49","20.85" 103 | "2021-01-24","14.44","6.48","20.92" 104 | "2021-01-25","14.35","6.77","21.12" 105 | "2021-01-26","13.96","7.34","21.30" 106 | "2021-01-27","14.13","7.83","21.96" 107 | "2021-01-28","13.52","8.40","21.92" 108 | "2021-01-29","13.08","8.58","21.66" 109 | "2021-01-30","13.59","8.66","22.25" 110 | "2021-01-31","12.78","9.57","22.35" 111 | "2021-02-01","12.49","9.82","22.31" 112 | "2021-02-02","12.45","9.66","22.11" 113 | "2021-02-03","12.49","10.11","22.60" 114 | "2021-02-04","11.93","10.26","22.19" 115 | "2021-02-05","12.14","10.16","22.30" 116 | "2021-02-06","12.02","10.92","22.94" 117 | "2021-02-07","11.71","11.41","23.12" 118 | "2021-02-08","11.99","11.31","23.30" 119 | "2021-02-09","11.85","11.52","23.37" 120 | "2021-02-10","11.21","12.19","23.40" 121 | "2021-02-11","11.16","11.73","22.89" 122 | "2021-02-12","11.28","11.84","23.12" 123 | "2021-02-13","11.76","11.37","23.13" 124 | "2021-02-14","11.58","11.34","22.92" 125 | "2021-02-15","11.63","12.08","23.71" 126 | "2021-02-16","11.29","11.96","23.25" 127 | "2021-02-17","11.56","11.60","23.16" 128 | "2021-02-18","10.80","12.75","23.55" 129 | "2021-02-19","9.95","13.28","23.23" 130 | "2021-02-20","10.52","13.57","24.09" 131 | "2021-02-21","9.68","14.61","24.29" 132 | "2021-02-22","9.99","14.66","24.65" 133 | "2021-02-23","9.89","14.39","24.28" 134 | "2021-02-24","9.03","15.79","24.82" 135 | "2021-02-25","8.76","16.41","25.17" 136 | "2021-02-26","9.47","16.51","25.98" 137 | "2021-02-27","8.84","16.18","25.02" 138 | "2021-02-28","8.33","16.87","25.20" 139 | "2021-03-01","9.47","14.89","24.36" 140 | "2021-03-02","8.07","16.82","24.89" 141 | "2021-03-03","8.35","15.64","23.99" 142 | "2021-03-04","11.04","16.05","27.09" 143 | "2021-03-05","12.51","18.86","31.37" 144 | "2021-03-06","12.29","18.83","31.12" 145 | "2021-03-07","11.30","19.24","30.54" 146 | "2021-03-08","11.61","19.45","31.06" 147 | "2021-03-09","11.11","19.47","30.58" 148 | "2021-03-10","11.95","19.35","31.30" 149 | "2021-03-11","12.02","18.72","30.74" 150 | "2021-03-12","12.08","18.68","30.76" 151 | "2021-03-13","12.38","19.17","31.55" 152 | "2021-03-14","11.84","19.12","30.96" 153 | "2021-03-15","12.02","19.27","31.29" 154 | "2021-03-16","11.36","19.82","31.18" 155 | "2021-03-17","12.09","20.06","32.15" 156 | "2021-03-18","11.11","20.76","31.87" 157 | "2021-03-19","10.66","21.19","31.85" 158 | "2021-03-20","10.71","22.08","32.79" 159 | "2021-03-21","10.04","22.45","32.49" 160 | "2021-03-22","11.54","20.92","32.46" 161 | "2021-03-23","10.04","20.61","30.65" 162 | "2021-03-24","9.66","20.48","30.14" 163 | "2021-03-25","10.65","21.21","31.86" 164 | "2021-03-26","9.71","22.98","32.69" 165 | "2021-03-27","8.76","24.31","33.07" 166 | "2021-03-28","9.17","24.01","33.18" 167 | "2021-03-29","8.40","24.68","33.08" 168 | "2021-03-30","9.33","24.62","33.95" 169 | "2021-03-31","9.20","24.98","34.18" 170 | "2021-04-01","8.93","25.40","34.33" 171 | "2021-04-02","7.93","26.22","34.15" 172 | "2021-04-03","9.68","24.28","33.96" 173 | "2021-04-04","8.05","26.74","34.79" 174 | "2021-04-05","7.37","27.59","34.96" 175 | "2021-04-06","7.35","27.19","34.54" 176 | "2021-04-07","7.45","27.48","34.93" 177 | "2021-04-08","7.34","28.88","36.22" 178 | "2021-04-09","7.26","27.96","35.22" 179 | "2021-04-10","6.33","27.92","34.25" 180 | "2021-04-11","6.12","29.20","35.32" 181 | "2021-04-12","8.88","21.77","30.65" 182 | "2021-04-13","6.46","27.70","34.16" 183 | "2021-04-14","6.59","28.32","34.91" 184 | "2021-04-15","7.03","28.35","35.38" 185 | "2021-04-16","5.96","28.50","34.46" 186 | "2021-04-17","6.14","30.93","37.07" 187 | "2021-04-18","5.67","29.67","35.34" 188 | "2021-04-19","6.16","29.66","35.82" 189 | "2021-04-20","4.95","31.42","36.37" 190 | "2021-04-21","5.82","30.79","36.61" 191 | "2021-04-22","4.12","32.72","36.84" 192 | "2021-04-23","3.61","32.99","36.60" 193 | "2021-04-24","5.04","32.26","37.30" 194 | "2021-04-25","6.48","29.89","36.37" 195 | "2021-04-26","5.66","30.88","36.54" 196 | "2021-04-27","5.13","31.81","36.94" 197 | "2021-04-28","5.83","26.80","32.63" 198 | "2021-04-29","6.48","27.83","34.31" 199 | "2021-04-30","4.99","31.05","36.04" 200 | "2021-05-01","4.92","31.74","36.66" 201 | "2021-05-02","5.50","29.73","35.23" 202 | "2021-05-03","6.94","28.54","35.48" 203 | "2021-05-04","5.80","30.61","36.41" 204 | "2021-05-05","4.76","32.57","37.33" 205 | "2021-05-06","6.29","28.83","35.12" 206 | "2021-05-07","6.25","30.54","36.79" 207 | "2021-05-08","7.06","30.40","37.46" 208 | "2021-05-09","6.03","31.80","37.83" 209 | "2021-05-10","5.91","31.55","37.46" 210 | "2021-05-11","6.72","30.67","37.39" 211 | "2021-05-12","5.82","32.60","38.42" 212 | "2021-05-13","5.59","31.73","37.32" 213 | "2021-05-14","4.73","32.72","37.45" 214 | "2021-05-15","4.45","33.75","38.20" 215 | "2021-05-16","4.80","33.43","38.23" 216 | "2021-05-17","4.72","33.18","37.90" 217 | "2021-05-18","5.86","32.70","38.56" 218 | "2021-05-19","5.55","32.63","38.18" 219 | "2021-05-20","5.04","32.91","37.95" 220 | "2021-05-21","4.88","33.75","38.63" 221 | "2021-05-22","4.60","34.44","39.04" 222 | "2021-05-23","6.25","31.83","38.08" 223 | "2021-05-24","5.81","31.56","37.37" 224 | "2021-05-25","5.03","32.93","37.96" 225 | "2021-05-26","6.11","32.00","38.11" 226 | "2021-05-27","6.12","30.93","37.05" 227 | "2021-05-28","6.34","30.42","36.76" 228 | "2021-05-29","6.10","31.50","37.60" 229 | "2021-05-30","6.55","28.99","35.54" 230 | "2021-05-31","6.84","28.82","35.66" 231 | "2021-06-01","7.09","28.94","36.03" 232 | "2021-06-02","7.37","31.49","38.86" 233 | "2021-06-03","5.32","29.83","35.15" 234 | "2021-06-04","7.78","28.85","36.63" 235 | "2021-06-05","6.66","31.29","37.95" 236 | "2021-06-06","6.22","30.86","37.08" 237 | "2021-06-07","6.91","31.18","38.09" 238 | "2021-06-08","7.30","29.83","37.13" 239 | "2021-06-09","7.38","30.01","37.39" 240 | "2021-06-10","7.17","29.96","37.13" 241 | "2021-06-11","6.43","30.36","36.79" 242 | "2021-06-12","6.80","28.95","35.75" 243 | "2021-06-13","6.52","29.81","36.33" 244 | "2021-06-14","7.12","28.72","35.84" 245 | "2021-06-15","6.78","29.78","36.56" 246 | "2021-06-16","6.24","30.75","36.99" 247 | "2021-06-17","6.42","29.48","35.90" 248 | "2021-06-18","6.23","30.35","36.58" 249 | "2021-06-19","6.20","30.40","36.60" 250 | "2021-06-20","7.89","28.52","36.41" 251 | "2021-06-21","7.39","27.89","35.28" 252 | "2021-06-22","6.53","28.97","35.50" 253 | "2021-06-23","6.73","29.32","36.05" 254 | "2021-06-24","7.50","28.59","36.09" 255 | "2021-06-25","8.34","27.57","35.91" 256 | "2021-06-26","9.25","26.92","36.17" 257 | "2021-06-27","9.77","25.34","35.11" 258 | "2021-06-28","9.71","24.59","34.30" 259 | "2021-06-29","8.59","23.19","31.78" 260 | "2021-06-30","7.21","16.40","23.61" 261 | "2021-07-01","10.57","15.20","25.77" 262 | "2021-07-02","12.93","26.57","39.50" 263 | "2021-07-03","14.17","27.15","41.32" 264 | "2021-07-04","14.26","26.09","40.35" 265 | "2021-07-05","14.28","27.59","41.87" 266 | "2021-07-06","14.33","28.56","42.89" 267 | "2021-07-07","15.72","30.92","46.64" 268 | "2021-07-08","16.95","33.62","50.57" 269 | "2021-07-09","18.19","32.80","50.99" 270 | "2021-07-10","18.68","32.67","51.35" 271 | "2021-07-11","18.52","31.54","50.06" 272 | "2021-07-12","18.66","31.62","50.28" 273 | "2021-07-13","18.79","31.33","50.12" 274 | "2021-07-14","19.70","31.69","51.39" 275 | "2021-07-15","21.98","31.83","53.81" 276 | "2021-07-16","21.98","30.37","52.35" 277 | "2021-07-17","22.25","29.70","51.95" 278 | "2021-07-18","21.33","28.09","49.42" 279 | "2021-07-19","20.40","28.79","49.19" 280 | "2021-07-20","21.00","27.90","48.90" 281 | "2021-07-21","21.51","27.75","49.26" 282 | "2021-07-22","21.96","28.57","50.53" 283 | "2021-07-23","23.84","28.89","52.73" 284 | "2021-07-24","25.54","27.32","52.86" 285 | "2021-07-25","24.87","27.87","52.74" 286 | "2021-07-26","24.88","27.05","51.93" 287 | "2021-07-27","24.65","25.78","50.43" 288 | "2021-07-28","25.51","26.04","51.55" 289 | "2021-07-29","27.07","26.72","53.79" 290 | "2021-07-30","28.10","26.00","54.10" 291 | "2021-07-31","29.16","24.36","53.52" 292 | "2021-08-01","27.75","23.20","50.95" 293 | "2021-08-02","27.37","23.21","50.58" 294 | "2021-08-03","26.97","23.95","50.92" 295 | "2021-08-04","26.33","25.22","51.55" 296 | "2021-08-05","26.89","25.59","52.48" 297 | "2021-08-06","26.70","25.68","52.38" 298 | "2021-08-07","25.92","25.20","51.12" 299 | "2021-08-08","25.82","27.18","53.00" 300 | "2021-08-09","26.41","27.27","53.68" 301 | "2021-08-10","28.79","26.10","54.89" 302 | "2021-08-11","28.86","25.85","54.71" 303 | "2021-08-12","29.59","26.25","55.84" 304 | "2021-08-13","28.73","25.79","54.52" 305 | "2021-08-14","26.25","24.98","51.23" 306 | "2021-08-15","24.78","25.96","50.74" 307 | "2021-08-16","24.10","26.46","50.56" 308 | "2021-08-17","27.21","28.02","55.23" 309 | "2021-08-19","28.65","26.62","55.27" 310 | "2021-08-20","29.39","27.66","57.05" 311 | "2021-08-21","30.04","26.65","56.69" 312 | "2021-08-22","29.58","27.34","56.92" 313 | "2021-08-23","28.72","24.92","53.64" 314 | "2021-08-24","28.92","27.05","55.97" 315 | "2021-08-25","29.39","28.13","57.52" 316 | "2021-08-26","29.42","27.59","57.01" 317 | "2021-08-27","31.03","28.74","59.77" 318 | "2021-08-28","30.72","29.23","59.95" 319 | "2021-08-29","31.21","28.23","59.44" 320 | "2021-08-30","31.45","26.54","57.99" 321 | "2021-08-31","32.63","26.37","59.00" 322 | "2021-09-01","33.79","26.39","60.18" 323 | "2021-09-02","32.96","27.20","60.16" 324 | "2021-09-03","32.66","28.42","61.08" 325 | "2021-09-04","32.29","29.38","61.67" 326 | "2021-09-05","31.50","27.73","59.23" 327 | "2021-09-06","30.30","27.44","57.74" 328 | "2021-09-07","28.73","26.91","55.64" 329 | "2021-09-08","30.64","25.40","56.04" 330 | "2021-09-09","32.15","27.47","59.62" 331 | "2021-09-10","34.18","28.13","62.31" 332 | "2021-09-11","34.63","28.34","62.97" 333 | "2021-09-12","33.13","27.31","60.44" 334 | "2021-09-13","32.56","27.75","60.31" 335 | "2021-09-14","33.41","25.28","58.69" 336 | "2021-09-15","33.26","28.86","62.12" 337 | "2021-09-16","33.38","28.84","62.22" 338 | "2021-09-17","34.55","26.85","61.40" 339 | "2021-09-18","35.03","25.59","60.62" 340 | "2021-09-19","34.90","25.56","60.46" 341 | "2021-09-20","34.07","25.02","59.09" 342 | "2021-09-21","33.74","25.41","59.15" 343 | "2021-09-22","34.54","24.30","58.84" 344 | "2021-09-23","35.14","23.93","59.07" 345 | "2021-09-24","34.90","25.03","59.93" 346 | "2021-09-25","36.18","23.44","59.62" 347 | "2021-09-26","34.12","21.94","56.06" 348 | "2021-09-27","34.04","21.23","55.27" 349 | "2021-09-28","32.27","22.88","55.15" 350 | "2021-09-29","31.89","24.93","56.82" 351 | "2021-09-30","32.87","25.64","58.51" 352 | "2021-10-01","34.17","25.31","59.48" 353 | "2021-10-02","32.32","24.69","57.01" 354 | "2021-10-03","30.86","24.59","55.45" 355 | "2021-10-04","32.09","24.43","56.52" 356 | "2021-10-05","31.87","23.49","55.36" 357 | "2021-10-06","29.79","22.68","52.47" 358 | "2021-10-07","28.09","20.44","48.53" 359 | "2021-10-08","26.42","21.66","48.08" 360 | "2021-10-09","27.43","21.74","49.17" 361 | "2021-10-10","27.55","22.34","49.89" 362 | "2021-10-11","27.13","20.92","48.05" 363 | "2021-10-12","27.11","20.38","47.49" 364 | "2021-10-13","26.46","19.95","46.41" 365 | "2021-10-14","26.13","18.19","44.32" 366 | "2021-10-15","25.79","17.77","43.56" 367 | "2021-10-16","26.41","17.95","44.36" 368 | "2021-10-17","26.02","17.06","43.08" 369 | "2021-10-18","23.68","15.62","39.30" 370 | "2021-10-19","24.09","14.72","38.81" 371 | "2021-10-20","24.62","14.16","38.78" 372 | "2021-10-21","22.99","14.68","37.67" 373 | "2021-10-22","23.96","12.87","36.83" 374 | "2021-10-23","23.75","14.71","38.46" 375 | "2021-10-24","22.73","15.07","37.80" 376 | "2021-10-25","21.63","15.09","36.72" 377 | "2021-10-26","20.41","15.10","35.51" 378 | "2021-10-27","20.84","15.84","36.68" 379 | "2021-10-28","22.16","15.20","37.36" 380 | "2021-10-29","22.66","14.50","37.16" 381 | "2021-10-30","22.31","14.03","36.34" 382 | "2021-10-31","21.11","13.36","34.47" 383 | "2021-11-01","20.61","11.95","32.56" 384 | "2021-11-02","21.33","12.46","33.79" 385 | "2021-11-03","22.62","12.45","35.07" 386 | "2021-11-04","23.43","13.64","37.07" 387 | "2021-11-05","22.18","13.81","35.99" 388 | "2021-11-06","22.16","12.80","34.96" 389 | "2021-11-07","20.70","11.64","32.34" 390 | "2021-11-08","20.15","11.40","31.55" 391 | "2021-11-09","20.87","11.46","32.33" 392 | "2021-11-10","21.64","11.41","33.05" 393 | "2021-11-11","21.41","10.90","32.31" 394 | "2021-11-12","21.62","10.40","32.02" 395 | "2021-11-13","21.52","10.11","31.63" 396 | "2021-11-14","19.93","10.45","30.38" 397 | "2021-11-15","18.75","9.35","28.10" 398 | "2021-11-16","19.36","8.77","28.13" 399 | "2021-11-17","19.65","9.32","28.97" 400 | "2021-11-18","19.03","12.55","31.58" 401 | "2021-11-19","18.38","13.88","32.26" 402 | "2021-11-20","17.72","14.92","32.64" 403 | "2021-11-21","18.14","14.12","32.26" 404 | "2021-11-22","17.21","13.83","31.04" 405 | "2021-11-23","15.69","13.30","28.99" 406 | "2021-11-24","14.48","12.30","26.78" 407 | "2021-11-25","15.60","10.14","25.74" 408 | "2021-11-26","15.58","13.52","29.10" 409 | "2021-11-27","15.58","14.79","30.37" 410 | "2021-11-28","13.80","13.75","27.55" 411 | "2021-11-29","13.68","13.57","27.25" 412 | "2021-11-30","13.34","12.47","25.81" 413 | "2021-12-01","12.62","13.35","25.97" 414 | "2021-12-02","13.28","12.09","25.37" 415 | "2021-12-03","13.43","12.27","25.70" 416 | "2021-12-04","13.43","11.86","25.29" 417 | "2021-12-05","13.14","11.57","24.71" 418 | "2021-12-06","13.63","11.56","25.19" 419 | "2021-12-07","13.94","11.77","25.71" 420 | "2021-12-08","13.75","12.85","26.60" 421 | "2021-12-09","13.14","13.61","26.75" 422 | "2021-12-10","12.70","13.48","26.18" 423 | "2021-12-11","12.83","12.02","24.85" 424 | "2021-12-12","12.03","12.54","24.57" 425 | "2021-12-13","11.88","12.86","24.74" 426 | "2021-12-14","12.90","12.95","25.85" 427 | "2021-12-15","14.00","11.67","25.67" 428 | "2021-12-16","13.45","11.77","25.22" 429 | "2021-12-17","14.29","10.62","24.91" 430 | "2021-12-18","15.10","10.00","25.10" 431 | "2021-12-19","15.15","9.82","24.97" 432 | "2021-12-20","15.86","10.60","26.46" 433 | "2021-12-21","15.63","11.46","27.09" 434 | "2021-12-22","15.43","12.52","27.95" 435 | "2021-12-23","15.80","12.49","28.29" 436 | "2021-12-24","15.81","13.41","29.22" 437 | "2021-12-25","15.47","11.89","27.36" 438 | "2021-12-26","14.97","11.54","26.51" 439 | "2021-12-27","14.46","12.24","26.70" 440 | "2021-12-28","14.27","11.98","26.25" 441 | "2021-12-29","14.51","11.23","25.74" 442 | "2021-12-30","14.73","10.62","25.35" 443 | "2021-12-31","14.49","9.05","23.54" 444 | "2022-01-01","14.31","8.87","23.18" 445 | "2022-01-02","13.94","9.34","23.28" 446 | "2022-01-03","14.54","9.43","23.97" 447 | "2022-01-04","13.49","8.99","22.48" 448 | "2022-01-05","14.72","8.25","22.97" 449 | "2022-01-06","15.55","8.18","23.73" 450 | "2022-01-07","15.89","8.27","24.16" 451 | "2022-01-08","15.84","8.18","24.02" 452 | "2022-01-09","15.96","7.67","23.63" 453 | "2022-01-10","17.68","7.95","25.63" 454 | "2022-01-11","17.27","7.93","25.20" 455 | "2022-01-12","17.25","7.21","24.46" 456 | "2022-01-13","17.21","7.36","24.57" 457 | "2022-01-14","17.40","6.83","24.23" 458 | "2022-01-15","18.16","6.85","25.01" 459 | "2022-01-16","17.13","6.91","24.04" 460 | "2022-01-17","14.09","7.32","21.41" 461 | "2022-01-18","14.56","8.16","22.72" 462 | "2022-01-19","15.65","7.78","23.43" 463 | "2022-01-20","14.75","7.30","22.05" 464 | "2022-01-21","15.56","8.68","24.24" 465 | "2022-01-22","15.09","9.02","24.11" 466 | "2022-01-23","15.30","9.53","24.83" 467 | "2022-01-24","15.09","9.74","24.83" 468 | "2022-01-25","15.37","9.96","25.33" 469 | "2022-01-26","15.92","10.10","26.02" 470 | "2022-01-27","16.09","10.69","26.78" 471 | "2022-01-28","16.19","9.85","26.04" 472 | "2022-01-29","16.31","10.45","26.76" 473 | "2022-01-30","16.17","10.65","26.82" 474 | "2022-01-31","14.97","10.60","25.57" 475 | "2022-02-01","15.12","9.78","24.90" 476 | "2022-02-02","14.28","8.54","22.82" 477 | "2022-02-03","13.75","8.21","21.96" 478 | "2022-02-04","13.36","7.45","20.81" 479 | "2022-02-05","13.63","7.00","20.63" 480 | "2022-02-06","12.97","7.34","20.31" 481 | "2022-02-07","12.40","8.47","20.87" 482 | "2022-02-08","12.50","9.27","21.77" 483 | "2022-02-09","12.50","9.46","21.96" 484 | "2022-02-10","12.93","8.84","21.77" 485 | "2022-02-11","13.82","8.55","22.37" 486 | "2022-02-12","13.66","8.63","22.29" 487 | "2022-02-13","14.55","7.99","22.54" 488 | "2022-02-14","13.47","6.93","20.40" 489 | "2022-02-15","13.46","8.89","22.35" 490 | "2022-02-16","13.61","8.35","21.96" 491 | "2022-02-17","14.91","8.36","23.27" 492 | "2022-02-18","14.78","8.64","23.42" 493 | "2022-02-19","13.99","9.07","23.06" 494 | "2022-02-20","14.18","9.08","23.26" 495 | "2022-02-21","13.98","8.58","22.56" 496 | "2022-02-22","14.42","8.35","22.77" 497 | "2022-02-23","13.75","8.95","22.70" 498 | "2022-02-24","14.72","8.47","23.19" 499 | "2022-02-25","14.46","7.59","22.05" 500 | "2022-02-26","15.09","6.50","21.59" 501 | "2022-02-27","14.10","6.32","20.42" 502 | "2022-02-28","11.68","5.53","17.21" 503 | "2022-03-01","10.49","4.78","15.27" 504 | "2022-03-02","14.64","5.27","19.91" 505 | "2022-03-03","15.62","8.06","23.68" 506 | "2022-03-04","16.16","9.67","25.83" 507 | "2022-03-05","15.76","9.66","25.42" 508 | "2022-03-06","15.56","9.81","25.37" 509 | "2022-03-07","16.48","8.70","25.18" 510 | "2022-03-08","16.61","10.76","27.37" 511 | "2022-03-09","16.22","10.06","26.28" 512 | "2022-03-10","16.42","9.77","26.19" 513 | "2022-03-11","16.93","9.25","26.18" 514 | "2022-03-12","16.95","9.24","26.19" 515 | "2022-03-13","16.68","9.27","25.95" 516 | "2022-03-14","16.37","9.16","25.53" 517 | "2022-03-15","16.31","9.32","25.63" 518 | "2022-03-16","16.27","9.55","25.82" 519 | "2022-03-17","16.89","10.88","27.77" 520 | "2022-03-18","17.33","12.09","29.42" 521 | "2022-03-19","17.93","11.86","29.79" 522 | "2022-03-20","17.50","11.96","29.46" 523 | "2022-03-21","18.36","10.99","29.35" 524 | "2022-03-22","18.44","10.34","28.78" 525 | "2022-03-23","18.68","10.99","29.67" 526 | "2022-03-24","19.41","10.65","30.06" 527 | "2022-03-25","20.93","10.76","31.69" 528 | "2022-03-26","20.83","11.61","32.44" 529 | "2022-03-27","20.87","10.70","31.57" 530 | "2022-03-28","20.19","10.74","30.93" 531 | "2022-03-29","21.38","11.13","32.51" 532 | "2022-03-30","21.24","11.39","32.63" 533 | "2022-03-31","17.53","8.89","26.42" 534 | "2022-04-01","21.63","11.01","32.64" 535 | "2022-04-02","21.37","10.66","32.03" 536 | "2022-04-03","21.02","9.78","30.80" 537 | "2022-04-04","20.43","9.35","29.78" 538 | "2022-04-05","19.23","8.97","28.20" 539 | "2022-04-06","19.50","8.94","28.44" 540 | "2022-04-07","19.69","9.00","28.69" 541 | "2022-04-08","19.96","8.76","28.72" 542 | "2022-04-09","19.98","8.49","28.47" 543 | "2022-04-10","20.37","8.31","28.68" 544 | "2022-04-11","20.80","7.93","28.73" 545 | "2022-04-12","20.26","8.22","28.48" 546 | "2022-04-13","19.50","8.06","27.56" 547 | "2022-04-14","19.88","8.16","28.04" 548 | "2022-04-15","20.09","8.79","28.88" 549 | "2022-04-16","20.44","8.89","29.33" 550 | "2022-04-17","20.19","8.84","29.03" 551 | "2022-04-18","20.32","8.93","29.25" 552 | "2022-04-19","19.46","8.44","27.90" 553 | "2022-04-20","20.77","8.50","29.27" 554 | "2022-04-21","20.83","8.51","29.34" 555 | "2022-04-22","20.98","8.40","29.38" 556 | "2022-04-23","20.35","8.70","29.05" 557 | "2022-04-24","20.52","8.09","28.61" 558 | "2022-04-25","20.69","7.53","28.22" 559 | "2022-04-26","20.76","7.85","28.61" 560 | "2022-04-27","21.61","7.90","29.51" 561 | "2022-04-28","22.05","7.46","29.51" 562 | "2022-04-29","22.96","7.08","30.04" 563 | "2022-04-30","21.66","7.06","28.72" 564 | "2022-05-01","21.24","7.14","28.38" 565 | "2022-05-02","21.12","6.81","27.93" 566 | "2022-05-03","20.54","7.49","28.03" 567 | "2022-05-04","20.09","7.55","27.64" 568 | "2022-05-05","21.39","6.87","28.26" 569 | "2022-05-06","22.27","7.87","30.14" 570 | "2022-05-07","22.39","9.20","31.59" 571 | "2022-05-08","22.81","8.76","31.57" 572 | "2022-05-09","23.03","8.17","31.20" 573 | "2022-05-10","22.13","8.19","30.32" 574 | "2022-05-11","22.99","8.72","31.71" 575 | "2022-05-12","22.30","8.87","31.17" 576 | "2022-05-13","21.73","8.01","29.74" 577 | "2022-05-14","22.29","7.13","29.42" 578 | "2022-05-15","21.83","5.96","27.79" 579 | "2022-05-16","22.98","7.25","30.23" 580 | "2022-05-17","22.60","7.54","30.14" 581 | "2022-05-18","21.95","7.51","29.46" 582 | "2022-05-19","20.90","7.23","28.13" 583 | "2022-05-20","21.33","6.55","27.88" 584 | "2022-05-21","20.82","7.77","28.59" 585 | "2022-05-22","20.58","7.88","28.46" 586 | "2022-05-23","20.45","7.28","27.73" 587 | "2022-05-24","20.84","7.74","28.58" 588 | "2022-05-25","19.25","7.71","26.96" 589 | "2022-05-26","19.36","7.40","26.76" 590 | "2022-05-27","20.01","7.33","27.34" 591 | "2022-05-28","21.06","6.39","27.45" 592 | "2022-05-29","21.37","6.16","27.53" 593 | "2022-05-30","20.76","5.99","26.75" 594 | "2022-05-31","21.14","6.09","27.23" 595 | "2022-06-01","20.22","6.55","26.77" 596 | "2022-06-02","20.24","7.15","27.39" 597 | "2022-06-03","20.04","7.07","27.11" 598 | "2022-06-04","18.99","6.43","25.42" 599 | "2022-06-05","18.45","6.48","24.93" 600 | "2022-06-06","18.19","6.42","24.61" 601 | "2022-06-07","19.96","6.12","26.08" 602 | "2022-06-08","20.02","4.97","24.99" 603 | "2022-06-09","19.87","4.63","24.50" 604 | "2022-06-10","20.70","3.98","24.68" 605 | "2022-06-11","20.96","3.07","24.03" 606 | "2022-06-12","20.37","3.22","23.59" 607 | "2022-06-13","19.96","3.12","23.08" 608 | "2022-06-14","20.22","3.52","23.74" 609 | "2022-06-15","19.79","4.02","23.81" 610 | "2022-06-16","19.45","4.59","24.04" 611 | "2022-06-17","21.08","5.05","26.13" 612 | "2022-06-18","21.69","5.07","26.76" 613 | "2022-06-19","20.33","5.43","25.76" 614 | "2022-06-20","20.66","5.17","25.83" 615 | "2022-06-21","20.64","5.29","25.93" 616 | "2022-06-22","20.82","5.42","26.24" 617 | "2022-06-23","20.49","5.63","26.12" 618 | "2022-06-24","20.35","5.82","26.17" 619 | "2022-06-25","19.38","5.81","25.19" 620 | "2022-06-26","19.21","5.84","25.05" 621 | "2022-06-27","20.20","5.76","25.96" 622 | "2022-06-28","21.33","5.86","27.19" 623 | "2022-06-29","21.18","6.51","27.69" 624 | "2022-06-30","20.58","7.09","27.67" 625 | "2022-07-01","19.77","5.55","25.32" 626 | "2022-07-02","18.42","5.42","23.84" 627 | "2022-07-03","17.25","4.39","21.64" 628 | "2022-07-04","16.63","4.41","21.04" 629 | "2022-07-05","13.28","2.71","15.99" 630 | "2022-07-06","9.96","2.55","12.51" 631 | "2022-07-07","6.21","2.22","8.43" 632 | "2022-07-08","8.43","2.31","10.74" 633 | "2022-07-09","9.28","2.41","11.69" 634 | "2022-07-10","10.44","2.61","13.05" 635 | "2022-07-11","10.14","2.97","13.11" 636 | "2022-07-12","11.38","4.54","15.92" 637 | "2022-07-13","11.25","4.73","15.98" 638 | "2022-07-14","11.23","4.72","15.95" 639 | "2022-07-15","11.12","4.62","15.74" 640 | "2022-07-16","11.67","4.56","16.23" 641 | "2022-07-17","10.69","4.43","15.12" 642 | "2022-07-18","11.35","4.57","15.92" 643 | "2022-07-19","11.56","4.20","15.76" 644 | "2022-07-20","11.81","3.24","15.05" 645 | "2022-07-21","12.55","2.87","15.42" 646 | "2022-07-22","12.69","3.35","16.04" 647 | "2022-07-23","12.72","3.31","16.03" 648 | "2022-07-24","11.87","2.83","14.70" 649 | "2022-07-25","11.07","2.88","13.95" 650 | "2022-07-26","11.01","2.31","13.32" 651 | "2022-07-27","10.32","2.87","13.19" 652 | "2022-07-28","11.32","2.88","14.20" 653 | "2022-07-29","11.81","3.00","14.81" 654 | "2022-07-30","10.92","3.31","14.23" 655 | "2022-07-31","9.61","3.65","13.26" 656 | "2022-08-01","9.48","3.78","13.26" 657 | "2022-08-02","9.66","4.38","14.04" 658 | "2022-08-03","9.29","4.30","13.59" 659 | "2022-08-04","8.76","3.74","12.50" 660 | "2022-08-05","9.35","4.22","13.57" 661 | "2022-08-06","10.16","5.04","15.20" 662 | "2022-08-07","9.31","4.64","13.95" 663 | "2022-08-08","9.43","3.96","13.39" 664 | "2022-08-09","9.88","4.47","14.35" 665 | "2022-08-10","9.34","4.85","14.19" 666 | "2022-08-11","8.82","4.94","13.76" 667 | "2022-08-12","8.39","4.91","13.30" 668 | "2022-08-13","8.93","4.38","13.31" 669 | "2022-08-14","8.24","3.88","12.12" 670 | "2022-08-15","8.07","4.08","12.15" 671 | "2022-08-16","8.51","3.77","12.28" 672 | "2022-08-17","8.83","3.86","12.69" 673 | "2022-08-18","8.33","4.22","12.55" 674 | "2022-08-19","8.25","4.02","12.27" 675 | "2022-08-20","8.83","4.30","13.13" 676 | "2022-08-21","8.25","4.09","12.34" 677 | "2022-08-22","7.99","4.43","12.42" 678 | "2022-08-23","8.27","4.25","12.52" 679 | "2022-08-24","8.42","3.95","12.37" 680 | "2022-08-25","9.49","3.48","12.97" 681 | "2022-08-26","10.09","3.81","13.90" 682 | "2022-08-27","9.27","4.24","13.51" 683 | "2022-08-28","8.73","4.42","13.15" 684 | "2022-08-29","7.96","6.10","14.06" 685 | "2022-08-30","8.33","5.34","13.67" 686 | "2022-08-31","8.52","5.61","14.13" 687 | "2022-09-01","8.88","5.34","14.22" 688 | "2022-09-02","8.37","5.49","13.86" 689 | "2022-09-03","8.11","5.15","13.26" 690 | "2022-09-04","8.27","5.28","13.55" 691 | "2022-09-05","7.70","4.76","12.46" 692 | "2022-09-06","7.88","4.93","12.81" 693 | "2022-09-07","7.74","4.27","12.01" 694 | "2022-09-08","7.37","4.44","11.81" 695 | "2022-09-09","7.43","4.89","12.32" 696 | "2022-09-10","7.09","4.86","11.95" 697 | "2022-09-11","6.95","4.82","11.77" 698 | "2022-09-12","7.39","4.60","11.99" 699 | "2022-09-13","7.98","4.58","12.56" 700 | "2022-09-14","7.63","5.16","12.79" 701 | "2022-09-15","7.99","5.25","13.24" 702 | "2022-09-16","8.81","5.03","13.84" 703 | "2022-09-17","8.90","4.81","13.71" 704 | "2022-09-18","8.75","4.57","13.32" 705 | "2022-09-19","8.75","4.49","13.24" 706 | "2022-09-20","8.72","4.38","13.10" 707 | "2022-09-21","8.42","3.96","12.38" 708 | "2022-09-22","7.76","4.71","12.47" 709 | "2022-09-23","7.42","4.66","12.08" 710 | "2022-09-24","7.55","5.17","12.72" 711 | "2022-09-25","7.34","5.03","12.37" 712 | "2022-09-26","7.51","4.69","12.20" 713 | "2022-09-27","7.44","4.54","11.98" 714 | "2022-09-28","7.20","4.58","11.78" 715 | "2022-09-29","7.73","4.51","12.24" 716 | "2022-09-30","8.00","4.45","12.45" 717 | "2022-10-01","8.29","4.32","12.61" 718 | "2022-10-02","7.94","3.67","11.61" 719 | "2022-10-03","7.04","3.44","10.48" 720 | "2022-10-04","7.77","3.57","11.34" 721 | "2022-10-05","7.97","3.30","11.27" 722 | "2022-10-06","7.78","3.53","11.31" 723 | "2022-10-07","7.62","3.74","11.36" 724 | "2022-10-08","7.52","3.98","11.50" 725 | "2022-10-09","7.25","4.27","11.52" 726 | "2022-10-10","7.91","3.56","11.47" 727 | "2022-10-11","7.46","4.08","11.54" 728 | "2022-10-12","6.79","4.52","11.31" 729 | "2022-10-13","7.52","4.67","12.19" 730 | "2022-10-14","6.96","4.66","11.62" 731 | "2022-10-15","7.12","5.05","12.17" 732 | "2022-10-16","6.84","4.64","11.48" 733 | "2022-10-17","6.49","4.88","11.37" 734 | "2022-10-18","6.42","4.65","11.07" 735 | "2022-10-19","6.22","4.44","10.66" 736 | "2022-10-20","6.39","4.36","10.75" 737 | "2022-10-21","6.65","4.40","11.05" 738 | "2022-10-22","7.10","4.23","11.33" 739 | "2022-10-23","6.92","4.27","11.19" 740 | "2022-10-24","6.85","4.06","10.91" 741 | "2022-10-25","6.74","4.25","10.99" 742 | "2022-10-26","6.75","3.99","10.74" 743 | "2022-10-27","6.76","4.15","10.91" 744 | "2022-10-28","6.14","4.07","10.21" 745 | "2022-10-29","5.99","3.89","9.88" 746 | "2022-10-30","5.86","3.65","9.51" 747 | "2022-10-31","6.07","3.18","9.25" 748 | "2022-11-01","6.40","3.34","9.74" 749 | "2022-11-02","6.39","3.31","9.70" 750 | "2022-11-03","6.39","3.12","9.51" 751 | "2022-11-04","6.78","3.10","9.88" 752 | "2022-11-05","7.13","3.06","10.19" 753 | "2022-11-06","6.79","3.12","9.91" 754 | "2022-11-07","7.06","2.89","9.95" 755 | -------------------------------------------------------------------------------- /offline_info/df_distributions_for_power_model_parameters.csv: -------------------------------------------------------------------------------- 1 | ,onboarding_dist,renewal_dist,fil_plus_rate_dist 2 | 0,9.7877865,0.52429444,0.32893807 3 | 1,9.696424,0.54907113,0.33136648 4 | 2,9.842149,0.5515888,0.32591492 5 | 3,12.647624,0.5573344,0.41444102 6 | 4,10.111778,0.67700166,0.3419521 7 | 5,12.425366,0.5549964,0.41695642 8 | 6,9.951474,0.5758461,0.33146596 9 | 7,9.739231,0.58190614,0.32869858 10 | 8,9.933842,0.5559458,0.33204618 11 | 9,10.265355,0.5526471,0.34374908 12 | 10,10.727933,0.50082874,0.3544224 13 | 11,10.052087,0.49648806,0.3373608 14 | 12,7.4894075,0.8484999,0.2542345 15 | 13,10.596754,0.44569188,0.3493597 16 | 14,9.432823,0.6216049,0.32005796 17 | 15,9.474428,0.58248824,0.31907728 18 | 16,9.301596,0.5910895,0.3147255 19 | 17,9.973367,0.524522,0.3319472 20 | 18,10.068129,0.46125317,0.33310917 21 | 19,10.434218,0.50090367,0.34784958 22 | 20,9.672867,0.5925277,0.32710886 23 | 21,10.248191,0.4765212,0.34214398 24 | 22,9.94022,0.550034,0.33402523 25 | 23,10.418289,0.5052683,0.3476834 26 | 24,9.531621,0.58594346,0.3198805 27 | 25,10.179911,0.53720075,0.34444544 28 | 26,10.290127,0.5350602,0.34504884 29 | 27,11.949219,0.5247858,0.3954048 30 | 28,11.772437,0.546775,0.39715135 31 | 29,10.135427,0.5526836,0.34687644 32 | 30,9.861053,0.56977814,0.33604756 33 | 31,10.854631,0.5668961,0.36460823 34 | 32,11.24807,0.56729406,0.3729969 35 | 33,9.819788,0.5604112,0.330552 36 | 34,9.702501,0.54906696,0.32306388 37 | 35,9.567519,0.5624274,0.31930274 38 | 36,9.955833,0.55714107,0.33747232 39 | 37,9.8167,0.5516877,0.32692263 40 | 38,9.193205,0.5643376,0.3155043 41 | 39,10.259596,0.53618497,0.3417009 42 | 40,9.208418,0.38183567,0.31119916 43 | 41,10.02503,0.51464534,0.33566323 44 | 42,10.248846,0.5417196,0.34176698 45 | 43,10.262159,0.5353387,0.3408607 46 | 44,9.286147,0.6207851,0.31566456 47 | 45,9.355516,0.610952,0.3168231 48 | 46,10.102817,0.43373418,0.33466205 49 | 47,10.141717,0.3209484,0.33394095 50 | 48,10.028259,0.5739341,0.3315038 51 | 49,9.359057,0.9168132,0.3219301 52 | 50,8.509721,0.5068965,0.29713896 53 | 51,10.403421,0.4535383,0.34571117 54 | 52,10.290912,0.45338672,0.3402971 55 | 53,9.766562,0.535206,0.32773137 56 | 54,9.638164,0.6089202,0.3222439 57 | 55,10.694575,0.45756462,0.3522916 58 | 56,9.988213,0.58244,0.3451488 59 | 57,9.610894,0.5404243,0.32099465 60 | 58,9.511291,0.58634377,0.32911667 61 | 59,11.432703,0.52900696,0.38119185 62 | 60,10.693551,0.5048483,0.35852897 63 | 61,10.230743,0.6281407,0.3485916 64 | 62,14.4997225,0.39724874,0.4828325 65 | 63,11.780998,0.5350983,0.38901863 66 | 64,10.684519,0.554393,0.35961652 67 | 65,10.5719,0.56680626,0.35574037 68 | 66,13.730821,0.5586067,0.46131873 69 | 67,10.378251,0.56443846,0.34590805 70 | 68,10.120034,0.56479734,0.34085384 71 | 69,10.630362,0.53859264,0.34944946 72 | 70,9.166457,0.6392494,0.31062615 73 | 71,10.453939,0.5539785,0.34950534 74 | 72,9.757927,0.56707394,0.32973352 75 | 73,9.352216,0.5782476,0.31833103 76 | 74,10.208418,0.5634799,0.34852225 77 | 75,9.702784,0.57772106,0.32888907 78 | 76,11.710676,0.5025041,0.38359556 79 | 77,12.901218,0.533349,0.42853543 80 | 78,9.777513,0.6296942,0.32874328 81 | 79,12.16673,0.54806936,0.40424478 82 | 80,10.896702,0.53101534,0.36095002 83 | 81,10.5762615,0.5783107,0.3518877 84 | 82,10.486214,0.5455542,0.35015768 85 | 83,9.963138,0.5586416,0.33679473 86 | 84,9.602136,0.53464556,0.32498738 87 | 85,9.7053995,0.5471082,0.32638028 88 | 86,9.649968,0.65006936,0.3313703 89 | 87,10.124848,0.52356535,0.33764043 90 | 88,9.717653,0.56781286,0.32563332 91 | 89,10.004431,0.5592637,0.3344412 92 | 90,9.906896,0.584925,0.32799152 93 | 91,9.310007,0.56560475,0.31387922 94 | 92,10.010825,0.4680262,0.33607233 95 | 93,9.942751,0.50571537,0.3345069 96 | 94,9.230405,0.58746386,0.31051722 97 | 95,10.0222645,0.52304417,0.33490866 98 | 96,10.060397,0.5474179,0.33930013 99 | 97,10.221435,0.51842076,0.34057152 100 | 98,10.019472,0.57257146,0.33423617 101 | 99,10.033131,0.5211442,0.3396813 102 | 100,10.3763685,0.5140919,0.3419279 103 | 101,9.484449,0.59991735,0.3276947 104 | 102,11.01694,0.47123107,0.35939744 105 | 103,10.050948,0.5467705,0.33858052 106 | 104,10.375473,0.5089727,0.34557855 107 | 105,13.559493,0.49055493,0.4360804 108 | 106,10.586977,0.5440152,0.35643357 109 | 107,8.445825,0.9420955,0.29133922 110 | 108,9.851373,0.58973974,0.32814035 111 | 109,10.572992,0.55805194,0.35496002 112 | 110,10.360841,0.5747977,0.34662956 113 | 111,9.740181,0.5583429,0.32870066 114 | 112,10.314171,0.5484882,0.34931025 115 | 113,10.280871,0.536536,0.34510347 116 | 114,13.753945,0.2499364,0.45738286 117 | 115,10.070622,0.56933874,0.33673686 118 | 116,10.530311,0.5871379,0.3559322 119 | 117,9.510624,0.60790575,0.3243478 120 | 118,10.648338,0.5469085,0.36648598 121 | 119,11.049332,0.49393383,0.36624622 122 | 120,10.452514,0.49430346,0.34316278 123 | 121,10.443319,0.49261886,0.34779173 124 | 122,10.478991,0.54625595,0.34960175 125 | 123,9.633516,0.7429848,0.34142363 126 | 124,11.039176,0.45520717,0.37165713 127 | 125,10.164348,0.516687,0.33903265 128 | 126,11.044549,0.25088543,0.3701615 129 | 127,10.458412,0.37718928,0.34321305 130 | 128,9.659738,0.5462505,0.3217467 131 | 129,9.887395,0.5395887,0.33384278 132 | 130,9.902621,0.5463465,0.33455485 133 | 131,9.798324,0.6061622,0.33140013 134 | 132,9.984872,0.5423277,0.33562824 135 | 133,10.225456,0.49083027,0.33889386 136 | 134,9.629388,0.64861757,0.32383257 137 | 135,10.366141,0.50647295,0.3470332 138 | 136,8.465868,0.93193007,0.2898653 139 | 137,9.911708,0.55131936,0.33114067 140 | 138,9.921434,0.55438733,0.3336042 141 | 139,10.32918,0.47765103,0.3418218 142 | 140,10.137452,0.5655347,0.340453 143 | 141,10.237455,0.48070437,0.34102482 144 | 142,9.697573,0.5802969,0.3259529 145 | 143,8.518045,0.6112451,0.2883855 146 | 144,9.987534,0.5253023,0.33255553 147 | 145,10.852682,0.39752135,0.36372843 148 | 146,9.697719,0.5731464,0.32556123 149 | 147,9.643016,0.54323614,0.326529 150 | 148,9.406096,0.60578465,0.3193339 151 | 149,10.090859,0.5221851,0.337936 152 | 150,9.996317,0.53354555,0.33443177 153 | 151,9.875827,0.54090655,0.33041033 154 | 152,10.380245,0.47126827,0.34994844 155 | 153,11.206539,0.53535175,0.36488006 156 | 154,10.222514,0.53356594,0.3405542 157 | 155,8.536395,0.5511716,0.2907976 158 | 156,10.468997,0.5324262,0.34845692 159 | 157,9.988982,0.5810301,0.3414795 160 | 158,10.98518,0.53991735,0.3675627 161 | 159,9.614024,0.57851326,0.34216803 162 | 160,9.910184,0.5288895,0.33545977 163 | 161,10.135449,0.6543275,0.34504738 164 | 162,9.862653,0.5346937,0.32788712 165 | 163,10.35827,0.4978157,0.34533292 166 | 164,11.13898,0.40279138,0.36631092 167 | 165,10.121682,0.5211821,0.33189285 168 | 166,10.588047,0.44779888,0.35220253 169 | 167,9.863429,0.5821498,0.33443785 170 | 168,10.105396,0.5599381,0.33842444 171 | 169,10.028274,0.5381264,0.33527395 172 | 170,9.987903,0.5111463,0.33414865 173 | 171,9.607762,0.5687682,0.3249571 174 | 172,9.645244,0.5352666,0.3242223 175 | 173,10.583817,0.58610713,0.35250497 176 | 174,10.056411,0.5396757,0.33633587 177 | 175,9.596135,0.5620253,0.32760957 178 | 176,9.917605,0.543553,0.32939613 179 | 177,14.33629,0.5240525,0.45761332 180 | 178,10.066741,0.5221761,0.338204 181 | 179,10.174211,0.53901553,0.34221578 182 | 180,10.339471,0.43897146,0.34468746 183 | 181,9.602943,0.58310574,0.32800496 184 | 182,10.223697,0.865344,0.3494847 185 | 183,9.794789,0.6555805,0.33115473 186 | 184,9.80255,0.54131675,0.3365742 187 | 185,10.3530855,0.49425346,0.33998328 188 | 186,10.023767,0.53741795,0.3377997 189 | 187,10.151105,0.6101209,0.33927634 190 | 188,9.930752,0.5649471,0.3327513 191 | 189,12.061662,0.41523132,0.39500433 192 | 190,12.217008,0.54204744,0.40531355 193 | 191,10.528714,0.56803197,0.35058495 194 | 192,10.306135,0.5621125,0.34691074 195 | 193,10.15508,0.54814786,0.34435636 196 | 194,10.802918,0.5488589,0.36328635 197 | 195,12.868876,0.5540984,0.42690524 198 | 196,11.134987,0.5400207,0.37142327 199 | 197,10.571288,0.51969224,0.3523102 200 | 198,11.359497,0.355743,0.37632447 201 | 199,10.67534,0.566401,0.35843945 202 | 200,12.9769745,0.42179304,0.43216956 203 | 201,10.214207,0.550391,0.34569177 204 | 202,9.601735,0.6099669,0.32585895 205 | 203,15.52063,0.34091687,0.5117116 206 | 204,10.0163355,0.71101826,0.34420612 207 | 205,10.927518,0.5285993,0.36768657 208 | 206,10.691606,0.54010206,0.35664216 209 | 207,10.405473,0.5010967,0.34401384 210 | 208,10.516286,0.4629541,0.3501449 211 | 209,9.891618,0.613657,0.33528423 212 | 210,9.562203,0.5753884,0.32007536 213 | 211,10.052506,0.51763284,0.33392394 214 | 212,10.188754,0.55886626,0.34467468 215 | 213,10.436982,0.5445215,0.34769472 216 | 214,10.169937,0.38877654,0.3320287 217 | 215,9.815977,0.54474777,0.33179337 218 | 216,10.109645,0.4166528,0.33638978 219 | 217,10.046478,0.4674182,0.3343763 220 | 218,10.503841,0.54864156,0.35223377 221 | 219,9.899019,0.5656187,0.328837 222 | 220,10.4365425,0.51728004,0.3338929 223 | 221,10.961503,0.45287967,0.34959304 224 | 222,10.058447,0.5261955,0.3357346 225 | 223,10.278845,0.4950585,0.33794147 226 | 224,10.108387,0.5150192,0.31853774 227 | 225,10.898611,0.486976,0.36107677 228 | 226,10.000527,0.5976896,0.33500794 229 | 227,10.20441,0.48633236,0.3392119 230 | 228,10.494653,0.47526497,0.34619874 231 | 229,10.535652,0.48782307,0.33850005 232 | 230,9.34629,0.68808645,0.31506178 233 | 231,9.843514,0.5360598,0.32592544 234 | 232,10.443855,0.4408668,0.34269676 235 | 233,9.441713,0.5370803,0.31593627 236 | 234,9.835744,0.52952826,0.33414713 237 | 235,10.244622,0.4313456,0.33937287 238 | 236,9.736252,0.52229184,0.32539707 239 | 237,9.544294,0.6249999,0.3218227 240 | 238,9.693454,0.6239259,0.32922006 241 | 239,11.058912,0.5021598,0.36804482 242 | 240,14.41959,0.44487473,0.4804149 243 | 241,10.751702,0.5297972,0.36047724 244 | 242,9.710323,0.59784,0.32955813 245 | 243,9.762141,0.5584623,0.32829955 246 | 244,10.250882,0.58307713,0.34613127 247 | 245,10.005161,0.43439102,0.33097768 248 | 246,10.419842,0.44183978,0.34216195 249 | 247,10.283701,0.56531835,0.34223258 250 | 248,10.122332,0.5660828,0.34021857 251 | 249,10.473301,0.5148502,0.34959462 252 | 250,10.037899,0.54252714,0.33053783 253 | 251,8.902337,0.5914715,0.31780773 254 | 252,10.106119,0.55124605,0.33702245 255 | 253,9.531578,0.54729766,0.31958708 256 | 254,9.898148,0.7083927,0.3348195 257 | 255,11.236319,0.4771985,0.37245005 258 | 256,11.84109,0.48765647,0.39194578 259 | 257,9.564778,0.5506815,0.3251488 260 | 258,12.904498,0.5116025,0.4326082 261 | 259,9.274564,0.6103705,0.31433067 262 | 260,10.632774,0.5151605,0.34892395 263 | 261,10.584928,0.5185429,0.3361542 264 | 262,10.198407,0.5429949,0.35096312 265 | 263,11.534357,0.46221212,0.38293195 266 | 264,10.07598,0.47736382,0.33497658 267 | 265,10.107216,0.5439071,0.33870608 268 | 266,10.202245,0.53944206,0.33894935 269 | 267,10.0695305,0.5674638,0.34377772 270 | 268,11.647676,0.50879604,0.39007145 271 | 269,10.756592,0.32180268,0.35659787 272 | 270,11.692841,0.5099781,0.3922025 273 | 271,10.603763,0.53318304,0.3549709 274 | 272,10.156124,0.5161512,0.34047687 275 | 273,11.292613,0.4893996,0.37634322 276 | 274,11.764783,0.4679671,0.38045603 277 | 275,10.766203,0.52593124,0.36034125 278 | 276,9.84761,0.5792169,0.34362128 279 | 277,11.2169,0.5508281,0.37334347 280 | 278,10.390893,0.56395,0.35194936 281 | 279,10.495323,0.545954,0.35418928 282 | 280,11.064525,0.5212664,0.3674847 283 | 281,10.432678,0.5392588,0.34936613 284 | 282,11.258394,0.5438811,0.37406224 285 | 283,12.189594,0.52310807,0.4059795 286 | 284,11.7393465,0.47264233,0.39112628 287 | 285,11.66672,0.54502344,0.38264662 288 | 286,9.654723,0.566283,0.3283097 289 | 287,10.286254,0.52249765,0.33642372 290 | 288,9.70047,0.55066955,0.327273 291 | 289,9.483288,0.6110425,0.32292148 292 | 290,10.111275,0.60133034,0.34159398 293 | 291,10.299785,0.48386282,0.3391399 294 | 292,9.631399,0.5705962,0.32531974 295 | 293,9.519476,0.55746514,0.32508186 296 | 294,9.817424,0.55731755,0.33037645 297 | 295,9.663241,0.57942885,0.3280644 298 | 296,10.266094,0.46875796,0.33935538 299 | 297,10.183899,0.59155285,0.3422298 300 | 298,9.692968,0.6780244,0.33150882 301 | 299,9.832131,0.5462344,0.33092773 302 | 300,9.4891405,0.62206185,0.3243344 303 | 301,9.8984,0.5526138,0.33288443 304 | 302,10.11656,0.5318094,0.33602488 305 | 303,9.917615,0.5579307,0.3352175 306 | 304,10.614249,0.5509561,0.34662285 307 | 305,10.380639,0.5080543,0.33700034 308 | 306,10.377781,0.47332767,0.34667405 309 | 307,9.681674,0.9077545,0.33664405 310 | 308,9.352633,0.5270829,0.31555778 311 | 309,13.307273,0.49589616,0.4357926 312 | 310,10.926583,0.5312712,0.3661469 313 | 311,10.01183,0.56565225,0.33747113 314 | 312,10.241382,0.56820244,0.3443968 315 | 313,9.935995,0.52267087,0.32895994 316 | 314,10.206176,0.581348,0.34393635 317 | 315,10.366141,0.56236017,0.35453382 318 | 316,12.471869,0.4172023,0.41631135 319 | 317,12.304985,0.45512003,0.4076433 320 | 318,10.683679,0.5608966,0.35536858 321 | 319,10.545134,0.54041046,0.35084614 322 | 320,13.359783,0.51080245,0.44473955 323 | 321,11.169201,0.55708295,0.36740777 324 | 322,10.877872,0.5353511,0.36540443 325 | 323,9.561862,0.5624132,0.3253041 326 | 324,10.689049,0.56251895,0.35826558 327 | 325,10.800003,0.5014576,0.35583293 328 | 326,9.696537,0.54223394,0.3243737 329 | 327,9.119464,0.5303425,0.30749366 330 | 328,13.5560055,0.5276808,0.45322847 331 | 329,10.077629,0.6224674,0.3453825 332 | 330,10.171924,0.48345956,0.34012604 333 | 331,9.602531,0.5262768,0.32704633 334 | 332,9.795149,0.49049821,0.33104438 335 | 333,9.752138,0.56175244,0.32749602 336 | 334,9.914596,0.56988966,0.3315339 337 | 335,9.62737,0.5660624,0.32378307 338 | 336,10.324309,0.57446533,0.3462018 339 | 337,9.32745,0.56626624,0.31407306 340 | 338,9.425216,0.65959483,0.31695107 341 | 339,10.043927,0.40567726,0.33277255 342 | 340,8.327673,0.5394114,0.27996188 343 | 341,9.904512,0.58630836,0.33058912 344 | 342,9.408039,0.60778236,0.31577572 345 | 343,10.573945,0.5672213,0.35905358 346 | 344,11.134527,0.5357097,0.3731426 347 | 345,10.542672,0.53916746,0.35246438 348 | 346,10.329118,0.57302964,0.34836063 349 | 347,10.71701,0.5190226,0.35779843 350 | 348,10.71625,0.55981404,0.3582497 351 | 349,8.697601,0.6675232,0.29332295 352 | 350,10.414882,0.49860352,0.34931123 353 | 351,10.258586,0.54226214,0.34391168 354 | 352,11.062498,0.5599845,0.37252563 355 | 353,11.764095,0.5356163,0.39098153 356 | 354,10.847599,0.5482144,0.36279106 357 | 355,11.569908,0.55551636,0.38410395 358 | 356,10.835347,0.55200297,0.36302936 359 | 357,11.906961,0.52466226,0.3772181 360 | 358,8.935292,0.59361523,0.3044008 361 | 359,9.916525,0.5566568,0.33541012 362 | 360,9.695347,0.5695004,0.32491994 363 | 361,9.676032,0.58411443,0.3356614 364 | 362,9.67271,0.5283265,0.32649508 365 | 363,9.738955,0.5296137,0.3303636 366 | 364,9.391011,0.6041753,0.3188893 367 | 365,10.556587,0.55004007,0.35240376 368 | 366,10.788144,0.5088152,0.35742447 369 | 367,10.023039,0.5583507,0.33625317 370 | 368,9.660797,0.6093152,0.33387917 371 | 369,9.530705,0.6004299,0.31735116 372 | 370,11.732995,0.48345202,0.38332188 373 | 371,9.687432,0.51092273,0.3349495 374 | 372,9.104442,0.6075723,0.31378976 375 | 373,9.823223,0.52453417,0.3471743 376 | 374,10.188494,0.56276274,0.3415184 377 | 375,10.800056,0.39386347,0.3585542 378 | 376,9.119268,0.72464854,0.30900243 379 | 377,10.339595,0.5273948,0.34140727 380 | 378,10.101574,0.5377492,0.33412373 381 | 379,10.396189,0.55469155,0.35059708 382 | 380,9.796072,0.6913895,0.3376196 383 | 381,10.647397,0.57472366,0.36006677 384 | 382,10.31819,0.5242412,0.34504417 385 | 383,10.020188,0.5196014,0.33673954 386 | 384,9.648354,0.52755606,0.32389224 387 | 385,9.9794035,0.62694776,0.34274018 388 | 386,10.542051,0.51216996,0.35189384 389 | 387,10.399647,0.5501981,0.3525707 390 | 388,9.132729,0.5582419,0.30783993 391 | 389,11.759598,0.48680523,0.38927805 392 | 390,13.57456,0.54829925,0.45303968 393 | 391,10.371484,0.5774001,0.34709683 394 | 392,10.934836,0.51464915,0.368491 395 | 393,11.145459,0.5500981,0.3737313 396 | 394,10.445807,0.57653683,0.3490167 397 | 395,10.826578,0.5533283,0.36363262 398 | 396,9.64946,0.55979097,0.32966843 399 | 397,10.296968,0.5666788,0.34980568 400 | 398,14.200229,0.5299406,0.46984014 401 | 399,10.2654,0.5500784,0.3465716 402 | 400,9.970031,0.5989149,0.3359702 403 | 401,13.134201,0.5390269,0.43649676 404 | 402,7.779401,0.57387656,0.26552203 405 | 403,10.699049,0.55384433,0.35853082 406 | 404,9.968448,0.5670435,0.33439812 407 | 405,10.861458,0.5544412,0.36228034 408 | 406,9.940678,0.551972,0.33697322 409 | 407,9.677887,0.56277764,0.32638952 410 | 408,10.226551,0.5444785,0.3410593 411 | 409,9.782331,0.55249727,0.32942653 412 | 410,9.763996,0.5444137,0.32801262 413 | 411,10.142725,0.55282307,0.33845666 414 | 412,10.137041,0.5526895,0.3414403 415 | 413,9.736661,0.56478655,0.32770333 416 | 414,10.033256,0.54135495,0.33558562 417 | 415,10.0611,0.5141395,0.33285645 418 | 416,9.935374,0.5672048,0.33215618 419 | 417,10.065228,0.51235694,0.33506826 420 | 418,10.753851,0.47044262,0.35860154 421 | 419,10.737506,0.54511744,0.35359317 422 | 420,8.981043,0.63331854,0.3132867 423 | 421,9.830852,0.52074224,0.33094132 424 | 422,9.9958315,0.5658842,0.33348987 425 | 423,10.840334,0.45877522,0.35157162 426 | 424,9.986022,0.5014116,0.33196783 427 | 425,10.07167,0.44661593,0.33645934 428 | 426,10.298838,0.48066944,0.34133014 429 | 427,10.053208,0.42720294,0.33850956 430 | 428,9.685994,0.59573203,0.3258854 431 | 429,10.289717,0.5142024,0.33859572 432 | 430,9.62488,0.5401665,0.32454225 433 | 431,9.5578575,0.5733671,0.32493258 434 | 432,9.544895,0.62442553,0.3258713 435 | 433,10.34835,0.49996892,0.34262374 436 | 434,9.894599,0.5643495,0.33722773 437 | 435,10.087932,0.50712734,0.33903828 438 | 436,9.609819,0.5810302,0.3261498 439 | 437,9.572621,0.580305,0.32006612 440 | 438,10.216235,0.5144772,0.34174505 441 | 439,10.155066,0.51806957,0.3413517 442 | 440,10.273428,0.48827076,0.3452457 443 | 441,10.574187,0.47217193,0.3537873 444 | 442,9.486132,0.58183795,0.32616368 445 | 443,10.3399515,0.51916873,0.3398082 446 | 444,10.413502,0.5234606,0.34682932 447 | 445,9.624763,0.55682516,0.32183883 448 | 446,9.595771,0.5638019,0.33036748 449 | 447,9.982671,0.5107522,0.33140576 450 | 448,10.006442,0.5177891,0.33572868 451 | 449,9.707168,0.5800739,0.3335743 452 | 450,9.882642,0.55531913,0.332503 453 | 451,9.795845,0.5820738,0.32848647 454 | 452,9.643871,0.5411142,0.3233838 455 | 453,9.207663,0.57195693,0.31201667 456 | 454,10.07056,0.48868248,0.33497283 457 | 455,10.048076,0.5331909,0.336427 458 | 456,10.193859,0.5025126,0.3381976 459 | 457,10.090551,0.51138556,0.3364694 460 | 458,10.091324,0.6950318,0.3437705 461 | 459,10.841694,0.5469913,0.3607641 462 | 460,9.980574,0.5416416,0.3336383 463 | 461,10.44222,0.54440975,0.3496875 464 | 462,9.536387,0.61948246,0.32723016 465 | 463,10.892382,0.55340254,0.36125505 466 | 464,11.736702,0.55105793,0.39012912 467 | 465,13.559351,0.5211886,0.45097017 468 | 466,9.551165,0.5790018,0.3207509 469 | 467,11.570747,0.53728586,0.38456786 470 | 468,9.81017,0.6278431,0.32796898 471 | 469,10.687701,0.54068977,0.3611376 472 | 470,16.226297,0.55807894,0.537202 473 | 471,11.455403,0.55768377,0.38130748 474 | 472,8.713546,0.5492185,0.29818377 475 | 473,7.987789,0.63432336,0.27384356 476 | 474,11.7586975,0.5432779,0.38865736 477 | 475,11.349314,0.5456397,0.37218484 478 | 476,11.08918,0.5483897,0.3653529 479 | 477,10.518452,0.5660252,0.35395938 480 | 478,9.925793,0.59993106,0.335758 481 | 479,9.080117,0.5469416,0.3089447 482 | 480,10.187272,0.5590461,0.3397882 483 | 481,10.376668,0.5567531,0.34838822 484 | 482,11.264257,0.6226531,0.37436986 485 | 483,8.283681,0.60346156,0.27976787 486 | 484,9.453868,0.5659471,0.3179202 487 | 485,13.853628,0.56033075,0.45798635 488 | 486,10.967047,0.54262185,0.36690137 489 | 487,10.401509,0.55561507,0.35727137 490 | 488,10.398945,0.5583868,0.34919822 491 | 489,10.797019,0.37724754,0.35568526 492 | 490,11.633295,0.42688555,0.38601112 493 | 491,13.287356,0.24865156,0.42446932 494 | 492,10.148284,0.5800565,0.3417157 495 | 493,10.111939,0.5585092,0.3428673 496 | 494,10.576126,0.5765724,0.35570717 497 | 495,11.930246,0.57571995,0.39180192 498 | 496,9.64538,0.5547923,0.32720512 499 | 497,11.39711,0.5452306,0.37453097 500 | 498,9.442594,0.5868062,0.34183985 501 | 499,11.147674,0.5375031,0.36905655 502 | 500,10.228824,0.5717556,0.3429422 503 | 501,10.460671,0.56072325,0.36034682 504 | 502,9.894559,0.55644006,0.3413276 505 | 503,12.647539,0.4691319,0.4238122 506 | 504,8.667523,0.64315456,0.30380633 507 | 505,11.184028,0.5616757,0.36697653 508 | 506,9.467834,0.5574288,0.32065624 509 | 507,7.264285,0.57353455,0.25608632 510 | 508,10.629371,0.54017055,0.3535834 511 | 509,10.194197,0.54822224,0.33923212 512 | 510,10.854038,0.5424444,0.3615617 513 | 511,10.301713,0.52684695,0.3422492 514 | 512,9.844901,0.57494265,0.33106694 515 | 513,10.199173,0.60729116,0.33742484 516 | 514,10.162739,0.55477226,0.33863908 517 | 515,9.701273,0.5670724,0.32347107 518 | 516,10.051078,0.5603048,0.33714828 519 | 517,10.11233,0.57035214,0.3379393 520 | 518,9.258374,0.5829472,0.31547257 521 | 519,9.090896,0.5633416,0.30900347 522 | 520,10.245914,0.45387644,0.3345711 523 | 521,9.977153,0.5645022,0.33652806 524 | 522,10.133789,0.56332767,0.34086025 525 | 523,11.296641,0.4372153,0.37773064 526 | 524,10.883038,0.5688497,0.3641306 527 | 525,10.433243,0.5770568,0.3516964 528 | 526,10.468863,0.5366036,0.36116797 529 | 527,10.372552,0.58932453,0.35297966 530 | 528,11.208725,0.553147,0.3779007 531 | 529,10.677338,0.5270964,0.3562466 532 | 530,9.888383,0.60466105,0.33593237 533 | 531,10.272858,0.5776744,0.34227282 534 | 532,10.947764,0.5628746,0.37058857 535 | 533,13.054775,0.4474171,0.4350664 536 | 534,10.995401,0.46709606,0.36443257 537 | 535,16.146017,0.59774446,0.5347045 538 | 536,10.512116,0.49664178,0.34742725 539 | 537,9.433644,0.5955097,0.32731727 540 | 538,9.580848,0.5489223,0.32124075 541 | 539,10.208454,0.5726643,0.33706746 542 | 540,9.428929,0.55864704,0.32075402 543 | 541,10.079876,0.5568711,0.3264581 544 | 542,9.796448,0.5755407,0.33101583 545 | 543,9.998525,0.55430275,0.33960974 546 | 544,9.38747,0.6048848,0.3218537 547 | 545,9.950658,0.5686469,0.33213773 548 | 546,9.409519,0.5860355,0.3259207 549 | 547,9.384033,0.5549403,0.32237256 550 | 548,10.168774,0.5404939,0.3425596 551 | 549,10.718951,0.43032232,0.3575932 552 | 550,9.922575,0.4356741,0.33107042 553 | 551,11.042972,0.5804497,0.36825913 554 | 552,10.376457,0.54023635,0.34755152 555 | 553,10.9433155,0.5387355,0.36440736 556 | 554,9.671642,0.6320504,0.32555926 557 | 555,10.161959,0.52822554,0.33299384 558 | 556,9.53627,0.611653,0.32382557 559 | 557,10.7691965,0.54017216,0.35632488 560 | 558,9.81074,0.5550356,0.3352129 561 | 559,9.942427,0.55777943,0.34480166 562 | 560,10.833604,0.53875566,0.3586837 563 | 561,9.934865,0.54278636,0.33307758 564 | 562,11.39052,0.5167604,0.3839047 565 | 563,11.986266,0.52888525,0.39046326 566 | 564,10.355978,0.4914627,0.34634364 567 | 565,10.397671,0.5156444,0.34644395 568 | 566,9.6729965,0.56361073,0.32720608 569 | 567,10.097448,0.53342444,0.33942157 570 | 568,8.931405,0.6145624,0.3003773 571 | 569,10.128808,0.5434858,0.33642143 572 | 570,11.04979,0.5155455,0.36706394 573 | 571,11.705894,0.49016392,0.38881406 574 | 572,12.777708,0.41734526,0.42080185 575 | 573,10.856296,0.5539196,0.36438462 576 | 574,8.389271,0.4696383,0.28578886 577 | 575,10.137264,0.5442719,0.33987412 578 | 576,9.7610035,0.49854082,0.3352933 579 | 577,10.1653385,0.5152688,0.33948585 580 | 578,10.666417,0.5102957,0.35703343 581 | 579,9.149665,0.6140816,0.31269833 582 | 580,10.520496,0.8918542,0.36466604 583 | 581,10.072782,0.58090794,0.33790678 584 | 582,10.925216,0.54489547,0.36358526 585 | 583,13.496843,0.4725756,0.4461472 586 | 584,12.933297,0.54739666,0.42866704 587 | 585,10.0113125,0.5565942,0.33579138 588 | 586,9.932663,0.5400417,0.3341318 589 | 587,10.63934,0.5221785,0.35501403 590 | 588,10.305061,0.5602978,0.3458859 591 | 589,11.107385,0.5102725,0.3698736 592 | 590,9.773135,0.55007195,0.32862273 593 | 591,9.761815,0.47380072,0.33402774 594 | 592,9.834999,0.5425755,0.33060262 595 | 593,10.111793,0.5473162,0.34219724 596 | 594,9.839727,0.55051875,0.33306322 597 | 595,9.914208,0.60769093,0.33642018 598 | 596,10.90266,0.57816046,0.36240274 599 | 597,9.801585,0.54360104,0.32951632 600 | 598,9.450893,0.5749585,0.32465953 601 | 599,10.265759,0.5122432,0.34194207 602 | 600,10.44624,0.5665346,0.33655158 603 | 601,10.152625,0.5564062,0.3389953 604 | 602,8.554587,0.59243155,0.2973931 605 | 603,10.084282,0.5404874,0.3363144 606 | 604,9.463684,0.5721776,0.33271593 607 | 605,10.461714,0.4882833,0.34771654 608 | 606,10.163036,0.5093125,0.33771643 609 | 607,8.583964,0.9014101,0.29166916 610 | 608,10.008064,0.52689236,0.33466563 611 | 609,10.36773,0.48493215,0.3494612 612 | 610,9.904324,0.54189134,0.33367133 613 | 611,10.422123,0.49407554,0.34982574 614 | 612,9.918873,0.5573221,0.3326683 615 | 613,9.923093,0.5527107,0.33137217 616 | 614,9.935168,0.5576168,0.3325791 617 | 615,10.214586,0.53919405,0.33795893 618 | 616,10.12545,0.5362997,0.33230433 619 | 617,8.831652,0.53039885,0.30063027 620 | 618,10.134772,0.5458661,0.3391046 621 | 619,9.424944,0.58456075,0.3156488 622 | 620,9.920004,0.5538998,0.33315283 623 | 621,10.4237995,0.48638138,0.3455768 624 | 622,9.608978,0.5786054,0.32254118 625 | 623,9.835859,0.53494763,0.32767564 626 | 624,9.6779585,0.56601524,0.32451525 627 | 625,9.402036,0.5648991,0.31556776 628 | 626,9.37408,0.55588555,0.3208521 629 | 627,11.180543,0.52429354,0.3733578 630 | 628,9.524007,0.56080526,0.32841185 631 | 629,9.93263,0.5447755,0.3321083 632 | 630,10.12327,0.4135631,0.3326378 633 | 631,9.777119,0.5664852,0.32929966 634 | 632,9.850498,0.5802329,0.33089775 635 | 633,10.094447,0.50422907,0.33641353 636 | 634,10.332406,0.54322875,0.33760026 637 | 635,10.011723,0.54404163,0.333474 638 | 636,10.077542,0.5608903,0.34036008 639 | 637,10.0949745,0.5491412,0.34075704 640 | 638,6.1538835,0.6075528,0.20947249 641 | 639,10.2504635,0.5653219,0.34248838 642 | 640,8.534812,0.63367856,0.3030507 643 | 641,10.077369,0.56152964,0.3356783 644 | 642,10.094869,0.57272106,0.33797967 645 | 643,10.266501,0.41768295,0.34173402 646 | 644,10.073377,0.5588563,0.3373055 647 | 645,11.874744,0.5243757,0.3961441 648 | 646,11.472604,0.5066222,0.38142028 649 | 647,12.140042,0.50534785,0.40613315 650 | 648,6.6339273,0.7025922,0.23392713 651 | 649,10.817147,0.5311627,0.3631759 652 | 650,8.16433,0.63632685,0.27284858 653 | 651,12.12924,0.4739479,0.40074313 654 | 652,10.3534155,0.56407523,0.34883174 655 | 653,9.713083,0.5376066,0.3287243 656 | 654,10.203809,0.42418525,0.34073326 657 | 655,11.62826,0.51621455,0.38021582 658 | 656,9.765952,0.5551785,0.32458496 659 | 657,10.271927,0.46607974,0.34181988 660 | 658,9.531491,0.5904114,0.3299346 661 | 659,10.731312,0.5364978,0.35508797 662 | 660,9.255995,0.5650022,0.3198496 663 | 661,10.333921,0.5708399,0.34045365 664 | 662,9.83102,0.5263991,0.3266169 665 | 663,10.251017,0.55179346,0.34131816 666 | 664,10.352211,0.5321951,0.3477554 667 | 665,10.015545,0.64250326,0.33652928 668 | 666,9.9244795,0.5121268,0.3309854 669 | 667,9.900911,0.48229778,0.3300447 670 | 668,8.363931,0.7420773,0.28514448 671 | 669,9.213537,0.74724156,0.30960086 672 | 670,10.752103,0.42306924,0.3576974 673 | 671,10.36776,0.55300134,0.34872192 674 | 672,13.245315,0.4302721,0.43833664 675 | 673,11.066479,0.49391553,0.36823285 676 | 674,11.2187805,0.51202786,0.374467 677 | 675,10.369567,0.6261049,0.35070658 678 | 676,10.099223,0.5782905,0.34238 679 | 677,11.379139,0.524921,0.38312572 680 | 678,10.220504,0.5679811,0.33652285 681 | 679,9.322881,0.5882654,0.31884977 682 | 680,9.984186,0.5582176,0.33573917 683 | 681,9.778517,0.5536082,0.32449946 684 | 682,9.193225,0.5919523,0.31353065 685 | 683,10.539594,0.5788387,0.3512859 686 | 684,11.014156,0.5713923,0.36778772 687 | 685,8.387277,0.6681904,0.28343353 688 | 686,11.574817,0.5323515,0.3844192 689 | 687,10.443397,0.56956655,0.35258466 690 | 688,9.409181,0.62394935,0.3144724 691 | 689,11.061338,0.5486584,0.36993134 692 | 690,8.971417,0.5843754,0.3015068 693 | 691,9.346085,0.5250561,0.31534824 694 | 692,10.629698,0.57026964,0.35550314 695 | 693,13.021375,0.30585414,0.4254016 696 | 694,10.220689,0.55297786,0.34312585 697 | 695,9.857255,0.51732427,0.32891515 698 | 696,11.193786,0.3959791,0.3687858 699 | 697,9.957343,0.5509992,0.3372545 700 | 698,10.028888,0.4787729,0.33664066 701 | 699,9.874685,0.622196,0.33381456 702 | 700,9.125985,0.9570736,0.31424144 703 | 701,9.462651,0.49239543,0.32216656 704 | 702,9.468744,0.70539623,0.32000974 705 | 703,9.209182,0.710428,0.30757827 706 | 704,10.285418,0.559488,0.3513631 707 | 705,9.682964,0.58026034,0.32750562 708 | 706,10.302374,0.48799533,0.34287167 709 | 707,10.254463,0.577283,0.34523037 710 | 708,10.778187,0.50085753,0.35726675 711 | 709,9.724634,0.55017877,0.32889652 712 | 710,9.037962,0.62045723,0.30610448 713 | 711,11.496411,0.5419973,0.38185912 714 | 712,10.871188,0.5479542,0.36595786 715 | 713,11.114651,0.45684722,0.3721937 716 | 714,10.505672,0.54101807,0.35411274 717 | 715,12.004945,0.51063156,0.4009955 718 | 716,11.238569,0.53817654,0.36830348 719 | 717,9.665048,0.55643666,0.33344856 720 | 718,12.46463,0.5577907,0.41711164 721 | 719,12.197531,0.6474346,0.40426332 722 | 720,12.74873,0.5376203,0.42375365 723 | 721,10.119882,0.59123325,0.34900573 724 | 722,11.090779,0.5719016,0.37043285 725 | 723,10.492273,0.5647995,0.3555622 726 | 724,10.774081,0.57403845,0.35927287 727 | 725,8.298736,0.5272178,0.28002998 728 | 726,10.552639,0.5689738,0.3509566 729 | 727,10.532942,0.56865793,0.35483477 730 | 728,12.261883,0.5579758,0.40496004 731 | 729,10.772361,0.43593574,0.35976887 732 | 730,10.067526,0.5532576,0.33803982 733 | 731,11.717519,0.31956595,0.38846928 734 | 732,9.5113535,0.6866158,0.31868538 735 | 733,10.310717,0.5321842,0.33619338 736 | 734,8.654161,0.6497558,0.2956522 737 | 735,8.660742,0.67062104,0.2940298 738 | 736,10.022329,0.55523247,0.34242022 739 | 737,10.256013,0.5518491,0.3452024 740 | 738,11.797686,0.5097998,0.38610587 741 | 739,9.616932,0.5674757,0.32457376 742 | 740,10.497202,0.5573118,0.35948718 743 | 741,9.973262,0.57107294,0.339102 744 | 742,10.197458,0.5614826,0.34714133 745 | 743,11.629027,0.5431525,0.38021863 746 | 744,10.656016,0.5436331,0.35646832 747 | 745,10.728841,0.5619908,0.35862648 748 | 746,11.482748,0.52797407,0.38343707 749 | 747,10.697672,0.5378892,0.35973364 750 | 748,11.023354,0.51332873,0.36844867 751 | 749,12.626266,0.5383731,0.41732332 752 | 750,9.049057,0.5575593,0.31008244 753 | 751,10.483474,0.5561032,0.35824203 754 | 752,11.372976,0.5460478,0.37577003 755 | 753,9.564949,0.56223464,0.32686096 756 | 754,10.7698,0.54336435,0.35467744 757 | 755,10.251688,0.5421973,0.33913034 758 | 756,9.9683695,0.5571186,0.33834177 759 | 757,10.240806,0.53472596,0.3403979 760 | 758,10.0794525,0.5735086,0.34061408 761 | 759,10.209917,0.51251024,0.3374567 762 | 760,9.791747,0.5342587,0.32720667 763 | 761,9.590654,0.5903761,0.32401025 764 | 762,9.910557,0.54929805,0.33310956 765 | 763,9.970594,0.56278414,0.33116525 766 | 764,9.944536,0.58204687,0.3384108 767 | 765,9.962688,0.5390329,0.33122975 768 | 766,9.726176,0.5550751,0.32759124 769 | 767,9.077872,0.58873,0.3109229 770 | 768,10.542567,0.5799312,0.35083777 771 | 769,10.52168,0.45961767,0.35044998 772 | 770,9.633735,0.569706,0.322227 773 | 771,9.752238,0.5395123,0.33017725 774 | 772,15.045273,0.43278846,0.4994212 775 | 773,10.817431,0.53438973,0.36098084 776 | 774,9.000185,0.70334285,0.3111886 777 | 775,11.041563,0.5001785,0.36584404 778 | 776,12.369464,0.533412,0.41372478 779 | 777,10.029952,0.5423704,0.33684257 780 | 778,10.043899,0.5574737,0.3297164 781 | 779,10.58605,0.45844838,0.3555379 782 | 780,9.798809,0.6753113,0.3316469 783 | 781,10.719033,0.56139445,0.35126132 784 | 782,10.693413,0.52831817,0.36014524 785 | 783,11.006371,0.5186633,0.36119348 786 | 784,10.414241,0.56417674,0.3492964 787 | 785,10.114614,0.5221277,0.3399762 788 | 786,11.281795,0.5200519,0.37350744 789 | 787,10.299218,0.55906785,0.34369594 790 | 788,10.404014,0.52716184,0.34314016 791 | 789,10.513806,0.5333974,0.3491105 792 | 790,9.387698,0.59000283,0.3153252 793 | 791,8.711857,0.6318453,0.2969842 794 | 792,9.522613,0.5621059,0.32332155 795 | 793,9.931683,0.56105304,0.32950795 796 | 794,10.264905,0.5197739,0.33885607 797 | 795,9.82527,0.5826511,0.3345383 798 | 796,11.692855,0.48107558,0.3801581 799 | 797,10.114696,0.54073584,0.33528072 800 | 798,9.756456,0.59871525,0.33347747 801 | 799,10.089194,0.54169035,0.34121406 802 | 800,9.0541935,0.6679015,0.32830495 803 | 801,9.55963,0.5893581,0.3198806 804 | 802,8.471556,0.6674787,0.29476538 805 | 803,10.089175,0.47023243,0.33495986 806 | 804,10.544688,0.49164274,0.3527608 807 | 805,9.7570915,0.58191055,0.330151 808 | 806,9.851349,0.5173595,0.33159637 809 | 807,10.085626,0.5031359,0.33568949 810 | 808,10.442475,0.4833337,0.34795952 811 | 809,9.953177,0.5148559,0.3313482 812 | 810,10.737383,0.34989715,0.347893 813 | 811,9.461415,0.54326683,0.3279382 814 | 812,9.866816,0.5687995,0.33284405 815 | 813,10.245733,0.55526143,0.3436084 816 | 814,10.259704,0.53666365,0.33018458 817 | 815,9.597263,0.5865252,0.33110288 818 | 816,8.942462,0.5563192,0.30199608 819 | 817,10.416563,0.5336326,0.34881565 820 | 818,9.990773,0.5174436,0.33330488 821 | 819,10.93414,0.45161477,0.3662815 822 | 820,10.917675,0.5506781,0.3620183 823 | 821,10.381224,0.557417,0.34835207 824 | 822,9.602621,0.5917599,0.3301575 825 | 823,9.493922,0.533522,0.32252052 826 | 824,10.07969,0.5345987,0.33692098 827 | 825,10.120258,0.56020534,0.33714747 828 | 826,9.970375,0.5445884,0.33167914 829 | 827,9.94927,0.5353772,0.33585206 830 | 828,9.561216,0.56380594,0.32714155 831 | 829,10.038237,0.55459976,0.3331899 832 | 830,9.754824,0.58473206,0.34179762 833 | 831,9.240582,0.56642914,0.31080937 834 | 832,8.204618,0.57479197,0.28637993 835 | 833,9.627375,0.6339955,0.33334342 836 | 834,9.921725,0.5529098,0.33971408 837 | 835,10.110578,0.564658,0.33830798 838 | 836,10.846363,0.5543344,0.36370924 839 | 837,10.34083,0.5587297,0.3475126 840 | 838,8.330128,0.5903358,0.28289834 841 | 839,10.580782,0.54191595,0.35683176 842 | 840,10.309008,0.56761867,0.34341028 843 | 841,11.799671,0.54120845,0.39140034 844 | 842,9.882804,0.5661773,0.3419212 845 | 843,12.886552,0.54896307,0.42828977 846 | 844,9.258008,0.61099243,0.32323697 847 | 845,10.351525,0.5530108,0.34988448 848 | 846,9.938482,0.56191057,0.33230636 849 | 847,9.052907,0.5688939,0.30740204 850 | 848,10.59144,0.570898,0.35347182 851 | 849,12.49691,0.5404309,0.41697305 852 | 850,10.134248,0.569612,0.34137827 853 | 851,10.47225,0.57359993,0.3531544 854 | 852,9.459028,0.5600835,0.32193726 855 | 853,9.995824,0.561902,0.33080205 856 | 854,10.065361,0.4911451,0.33860284 857 | 855,10.256118,0.48917302,0.33924 858 | 856,10.127232,0.52010304,0.34010878 859 | 857,9.6447315,0.62015,0.32690024 860 | 858,9.80377,0.56040883,0.3316865 861 | 859,9.603803,0.56672037,0.32065165 862 | 860,10.07104,0.5584971,0.33545297 863 | 861,7.9481044,0.61551887,0.27315226 864 | 862,9.837515,0.60746586,0.3341163 865 | 863,10.267089,0.5660127,0.34681344 866 | 864,10.514741,0.5310757,0.3491522 867 | 865,9.653556,0.5815411,0.33352312 868 | 866,9.636466,0.5767087,0.323595 869 | 867,10.122396,0.5580894,0.34007674 870 | 868,10.170267,0.5489045,0.33930582 871 | 869,10.0922985,0.5768019,0.3417394 872 | 870,9.950959,0.48664886,0.33012593 873 | 871,10.749324,0.5758447,0.3562361 874 | 872,9.986136,0.5484083,0.33293197 875 | 873,10.156235,0.50039184,0.3329917 876 | 874,10.008609,0.5686349,0.33425483 877 | 875,10.041054,0.5122679,0.33198166 878 | 876,9.879888,0.5881525,0.34307227 879 | 877,11.589875,0.5077601,0.38453904 880 | 878,10.149844,0.46596003,0.33718428 881 | 879,9.537543,0.5231237,0.32526958 882 | 880,9.085213,0.7858613,0.3069514 883 | 881,10.468446,0.5513934,0.34613422 884 | 882,10.49665,0.5329669,0.35068253 885 | 883,9.877751,0.56016713,0.33266854 886 | 884,10.525875,0.50589126,0.3540167 887 | 885,10.253754,0.643967,0.34770435 888 | 886,9.559113,0.5506,0.32373744 889 | 887,10.215334,0.6054066,0.35333174 890 | 888,5.3982587,0.5843938,0.19000511 891 | 889,10.378944,0.5587101,0.34881243 892 | 890,10.569594,0.57029885,0.35066068 893 | 891,10.810795,0.5717692,0.35345298 894 | 892,10.332143,0.5477691,0.34440422 895 | 893,10.12044,0.5771534,0.34540758 896 | 894,13.117665,0.4950814,0.4281979 897 | 895,10.544852,0.5217339,0.3547605 898 | 896,9.420736,0.6026276,0.3315402 899 | 897,10.181794,0.49689907,0.33750314 900 | 898,10.077329,0.6234846,0.33546034 901 | 899,9.68879,0.5615047,0.33253184 902 | 900,9.447085,0.5555167,0.31667483 903 | 901,9.949422,0.5714904,0.33307388 904 | 902,9.503502,0.5742813,0.32186022 905 | 903,9.471138,0.58081573,0.3238318 906 | 904,9.965955,0.54265976,0.33584484 907 | 905,9.97672,0.54117304,0.33477092 908 | 906,8.921622,0.7687742,0.30519554 909 | 907,10.2280245,0.54066396,0.33892566 910 | 908,10.041851,0.5271756,0.334294 911 | 909,9.392066,0.5769899,0.31919226 912 | 910,9.618839,0.5669629,0.32216033 913 | 911,10.130822,0.55873084,0.33830875 914 | 912,8.796181,0.574336,0.30436352 915 | 913,10.095983,0.57046485,0.3363367 916 | 914,10.474884,0.6117148,0.35095266 917 | 915,9.831651,0.5435881,0.32941923 918 | 916,9.577194,0.62968296,0.324172 919 | 917,9.906149,0.5881491,0.33728343 920 | 918,10.483264,0.5650407,0.3513262 921 | 919,10.165838,0.51663935,0.33709186 922 | 920,9.987122,0.56922805,0.33934924 923 | 921,9.824076,0.54281175,0.33063075 924 | 922,10.270474,0.4644427,0.34170753 925 | 923,10.697348,0.47612053,0.35521108 926 | 924,9.721289,0.5427047,0.33027217 927 | 925,10.265089,0.5490326,0.34349293 928 | 926,9.977502,0.545619,0.33492905 929 | 927,9.566342,0.58229554,0.32502908 930 | 928,10.446694,0.49537703,0.35371596 931 | 929,10.187296,0.51008344,0.34338212 932 | 930,9.772751,0.5443969,0.33368215 933 | 931,11.300757,0.5088757,0.37452614 934 | 932,10.456729,0.43811378,0.34422275 935 | 933,11.392359,0.40964824,0.376257 936 | 934,9.457281,0.62276024,0.31721655 937 | 935,9.814406,0.53121346,0.32696113 938 | 936,10.476365,0.3552188,0.35001102 939 | 937,9.60489,0.7013679,0.32329655 940 | 938,10.386524,0.42994487,0.3442949 941 | 939,11.333138,0.48571324,0.37288117 942 | 940,10.240393,0.50909835,0.34478793 943 | 941,10.323827,0.55768913,0.34690413 944 | 942,9.468264,0.5703313,0.3175508 945 | 943,11.493054,0.4807785,0.3641041 946 | 944,10.359747,0.49742982,0.345412 947 | 945,9.58784,0.57066983,0.33277398 948 | 946,10.598702,0.4583815,0.34849942 949 | 947,11.937032,0.513407,0.3954089 950 | 948,8.971648,0.7351173,0.3088519 951 | 949,10.742775,0.48684826,0.3575748 952 | 950,10.522583,0.5048234,0.35539684 953 | 951,10.562523,0.59292376,0.35818186 954 | 952,10.728353,0.56242985,0.35908723 955 | 953,9.634069,0.5715476,0.32747647 956 | 954,11.263441,0.5189901,0.37488055 957 | 955,12.915942,0.45537874,0.42959708 958 | 956,11.345816,0.5022578,0.37904507 959 | 957,9.600012,0.5834385,0.3213323 960 | 958,11.197056,0.487713,0.37258258 961 | 959,10.458684,0.54453254,0.353497 962 | 960,8.046234,0.5632514,0.2759855 963 | 961,10.305515,0.5394241,0.3492227 964 | 962,10.977142,0.5530397,0.36395285 965 | 963,10.272583,0.5600728,0.3457944 966 | 964,11.914533,0.5006512,0.3967212 967 | 965,10.044471,0.56118506,0.3442415 968 | 966,11.986587,0.4937915,0.3918678 969 | 967,8.467348,0.58125037,0.29076213 970 | 968,10.215539,0.5206334,0.34523702 971 | 969,10.02113,0.53932667,0.3372023 972 | 970,9.703803,0.5559981,0.3276819 973 | 971,10.280119,0.6146004,0.34636998 974 | 972,9.939765,0.5640349,0.33436576 975 | 973,9.701426,0.5637035,0.33185518 976 | 974,10.33851,0.5348239,0.34099677 977 | 975,9.758164,0.5645504,0.3397243 978 | 976,11.087585,0.5105021,0.36403984 979 | 977,10.387083,0.50552446,0.34059265 980 | 978,9.885774,0.53252333,0.3364984 981 | 979,9.842782,0.571679,0.32801077 982 | 980,9.890241,0.48772356,0.32728574 983 | 981,9.58054,0.54602116,0.32903785 984 | 982,9.074049,0.66865563,0.31933692 985 | 983,10.450553,0.4882588,0.34913066 986 | 984,10.483594,0.49010885,0.35242373 987 | 985,9.784235,0.5195836,0.32899863 988 | 986,10.124506,0.5296886,0.3388971 989 | 987,10.652008,0.5319175,0.35424635 990 | 988,11.819806,0.51547825,0.39237365 991 | 989,10.05103,0.5108839,0.33351243 992 | 990,10.751515,0.5307426,0.3545502 993 | 991,9.929182,0.63392454,0.3361218 994 | 992,11.163117,0.23158571,0.36602572 995 | 993,9.897504,0.5235735,0.3307275 996 | 994,10.069222,0.4255268,0.33450535 997 | 995,10.064917,0.263313,0.32850975 998 | 996,10.82776,0.5637444,0.36532292 999 | 997,11.726418,0.36543554,0.3920831 1000 | 998,9.366222,0.55812174,0.3202548 1001 | 999,10.039443,0.5273213,0.3356912 1002 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | anyio==3.6.1 2 | appnope==0.1.3 3 | argon2-cffi==21.3.0 4 | argon2-cffi-bindings==21.2.0 5 | asttokens==2.0.5 6 | attrs==21.4.0 7 | Babel==2.10.3 8 | backcall==0.2.0 9 | beautifulsoup4==4.11.1 10 | black==22.6.0 11 | bleach==5.0.1 12 | cffi==1.15.1 13 | charset-normalizer==2.1.0 14 | click==8.1.3 15 | cycler==0.11.0 16 | debugpy==1.6.2 17 | decorator==5.1.1 18 | defusedxml==0.7.1 19 | entrypoints==0.4 20 | executing==0.8.3 21 | fastjsonschema==2.16.1 22 | fonttools==4.34.4 23 | idna==3.3 24 | importlib-metadata==4.12.0 25 | importlib-resources==5.8.0 26 | ipykernel==6.15.1 27 | ipython==8.4.0 28 | ipython-genutils==0.2.0 29 | jedi==0.18.1 30 | Jinja2==3.1.2 31 | json5==0.9.8 32 | jsonschema==4.7.2 33 | jupyter-client==7.3.4 34 | jupyter-core==4.11.1 35 | jupyter-server==1.18.1 36 | jupyterlab==3.4.3 37 | jupyterlab-pygments==0.2.2 38 | jupyterlab-server==2.15.0 39 | kiwisolver==1.4.4 40 | MarkupSafe==2.1.1 41 | matplotlib==3.5.2 42 | matplotlib-inline==0.1.3 43 | mistune==0.8.4 44 | mypy-extensions==0.4.3 45 | nbclassic==0.4.3 46 | nbclient==0.6.6 47 | nbconvert==6.5.0 48 | nbformat==5.4.0 49 | nest-asyncio==1.5.5 50 | notebook-shim==0.1.0 51 | numpy==1.23.1 52 | packaging==21.3 53 | pandas==1.4.3 54 | pandocfilters==1.5.0 55 | parso==0.8.3 56 | pathspec==0.9.0 57 | pexpect==4.8.0 58 | pickleshare==0.7.5 59 | Pillow==9.2.0 60 | platformdirs==2.5.2 61 | prometheus-client==0.14.1 62 | prompt-toolkit==3.0.30 63 | psutil==5.9.1 64 | ptyprocess==0.7.0 65 | pure-eval==0.2.2 66 | pycparser==2.21 67 | Pygments==2.12.0 68 | pyparsing==3.0.9 69 | pyrsistent==0.18.1 70 | python-dateutil==2.8.2 71 | pytz==2022.1 72 | pyzmq==23.2.0 73 | requests==2.28.1 74 | scipy==1.8.1 75 | seaborn==0.11.2 76 | Send2Trash==1.8.0 77 | six==1.16.0 78 | sniffio==1.2.0 79 | soupsieve==2.3.2.post1 80 | stack-data==0.3.0 81 | terminado==0.15.0 82 | tinycss2==1.1.1 83 | tomli==2.0.1 84 | tornado==6.2 85 | traitlets==5.3.0 86 | typing_extensions==4.3.0 87 | urllib3==1.26.10 88 | wcwidth==0.2.5 89 | webencodings==0.5.1 90 | websocket-client==1.3.3 91 | zipp==3.8.1 92 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name="mechaFIL", 8 | version="1.9", 9 | author="Maria Silva, Tom Mellan, Kiran Karra", 10 | author_email="misilva73@gmail.com, t.mellan@imperial.ac.uk, kiran.karra@gmail.com", 11 | description="Mechanistic model for the Filecoin Economy", 12 | long_description=long_description, 13 | long_description_content_type="text/markdown", 14 | project_urls={ 15 | "Documentation": "https://github.com/protocol/filecoin-mecha-twin", 16 | "Source": "https://github.com/protocol/filecoin-mecha-twin", 17 | }, 18 | packages=["mechafil"], 19 | install_requires=["numpy>=1.22", "pandas>=1.4", "requests>=2.28"], 20 | python_requires=">=3.8", 21 | classifiers=[ 22 | "Programming Language :: Python :: 3", 23 | "License :: OSI Approved :: MIT License", 24 | "Operating System :: OS Independent", 25 | ], 26 | ) 27 | -------------------------------------------------------------------------------- /specs/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/protocol/filecoin-mecha-twin/4218e6114fa281d6341a4b6ac7034eb693c0b31b/specs/.gitkeep --------------------------------------------------------------------------------