1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-12 15:26:54 +08:00

[807] Move the REG_CONSTANT/EPS to constant.py. (#811)

* [807] Move the REG_CONSTANT to constant.py.

* import REG_US.

* Move EPS to constant.py.
This commit is contained in:
Chia-hung Tai
2022-01-09 21:39:46 +08:00
committed by GitHub
parent 382ababc01
commit 184ce34a34
26 changed files with 42 additions and 35 deletions

View File

@@ -195,7 +195,7 @@ We recommend users to prepare their own data if they have a high-quality dataset
```python ```python
import qlib import qlib
from qlib.data import D from qlib.data import D
from qlib.config import REG_CN from qlib.constant import REG_CN
# Initialization # Initialization
mount_path = "~/.qlib/qlib_data/cn_data" # target_dir mount_path = "~/.qlib/qlib_data/cn_data" # target_dir

View File

@@ -219,7 +219,7 @@ The `trade unit` defines the unit number of stocks can be used in a trade, and t
.. code-block:: python .. code-block:: python
from qlib.config import REG_CN from qlib.constant import REG_CN
qlib.init(provider_uri='~/.qlib/qlib_data/cn_data', region=REG_CN) qlib.init(provider_uri='~/.qlib/qlib_data/cn_data', region=REG_CN)

View File

@@ -27,7 +27,7 @@ Initialize Qlib before calling other APIs: run following code in python.
import qlib import qlib
# region in [REG_CN, REG_US] # region in [REG_CN, REG_US]
from qlib.config import REG_CN from qlib.constant import REG_CN
provider_uri = "~/.qlib/qlib_data/cn_data" # target_dir provider_uri = "~/.qlib/qlib_data/cn_data" # target_dir
qlib.init(provider_uri=provider_uri, region=REG_CN) qlib.init(provider_uri=provider_uri, region=REG_CN)
@@ -42,10 +42,10 @@ Besides `provider_uri` and `region`, `qlib.init` has other parameters. The follo
- `provider_uri` - `provider_uri`
Type: str. The URI of the Qlib data. For example, it could be the location where the data loaded by ``get_data.py`` are stored. Type: str. The URI of the Qlib data. For example, it could be the location where the data loaded by ``get_data.py`` are stored.
- `region` - `region`
Type: str, optional parameter(default: `qlib.config.REG_CN`). Type: str, optional parameter(default: `qlib.constant.REG_CN`).
Currently: ``qlib.config.REG_US`` ('us') and ``qlib.config.REG_CN`` ('cn') is supported. Different value of `region` will result in different stock market mode. Currently: ``qlib.constant.REG_US`` ('us') and ``qlib.constant.REG_CN`` ('cn') is supported. Different value of `region` will result in different stock market mode.
- ``qlib.config.REG_US``: US stock market. - ``qlib.constant.REG_US``: US stock market.
- ``qlib.config.REG_CN``: China stock market. - ``qlib.constant.REG_CN``: China stock market.
Different modes will result in different trading limitations and costs. Different modes will result in different trading limitations and costs.
The region is just `shortcuts for defining a batch of configurations <https://github.com/microsoft/qlib/blob/main/qlib/config.py#L239>`_. Users can set the key configurations manually if the existing region setting can't meet their requirements. The region is just `shortcuts for defining a batch of configurations <https://github.com/microsoft/qlib/blob/main/qlib/config.py#L239>`_. Users can set the key configurations manually if the existing region setting can't meet their requirements.

View File

@@ -1,5 +1,6 @@
import numpy as np import numpy as np
import pandas as pd import pandas as pd
from qlib.constant import EPS
from qlib.data.dataset.processor import Processor from qlib.data.dataset.processor import Processor
from qlib.data.dataset.utils import fetch_df_by_index from qlib.data.dataset.utils import fetch_df_by_index
@@ -27,7 +28,7 @@ class HighFreqNorm(Processor):
part_values = np.log1p(part_values) part_values = np.log1p(part_values)
self.feature_med[name] = np.nanmedian(part_values) self.feature_med[name] = np.nanmedian(part_values)
part_values = part_values - self.feature_med[name] part_values = part_values - self.feature_med[name]
self.feature_std[name] = np.nanmedian(np.absolute(part_values)) * 1.4826 + 1e-12 self.feature_std[name] = np.nanmedian(np.absolute(part_values)) * 1.4826 + EPS
part_values = part_values / self.feature_std[name] part_values = part_values / self.feature_std[name]
self.feature_vmax[name] = np.nanmax(part_values) self.feature_vmax[name] = np.nanmax(part_values)
self.feature_vmin[name] = np.nanmin(part_values) self.feature_vmin[name] = np.nanmin(part_values)

View File

@@ -5,7 +5,8 @@ import fire
import qlib import qlib
import pickle import pickle
from qlib.config import REG_CN, HIGH_FREQ_CONFIG from qlib.constant import REG_CN
from qlib.config import HIGH_FREQ_CONFIG
from qlib.utils import init_instance_by_config from qlib.utils import init_instance_by_config
from qlib.data.dataset.handler import DataHandlerLP from qlib.data.dataset.handler import DataHandlerLP

View File

@@ -1,6 +1,6 @@
import qlib import qlib
import optuna import optuna
from qlib.config import REG_CN from qlib.constant import REG_CN
from qlib.utils import init_instance_by_config from qlib.utils import init_instance_by_config
from qlib.tests.config import CSI300_DATASET_CONFIG from qlib.tests.config import CSI300_DATASET_CONFIG
from qlib.tests.data import GetData from qlib.tests.data import GetData

View File

@@ -1,6 +1,6 @@
import qlib import qlib
import optuna import optuna
from qlib.config import REG_CN from qlib.constant import REG_CN
from qlib.utils import init_instance_by_config from qlib.utils import init_instance_by_config
from qlib.tests.data import GetData from qlib.tests.data import GetData
from qlib.tests.config import get_dataset_config, CSI300_MARKET, DATASET_ALPHA360_CLASS from qlib.tests.config import get_dataset_config, CSI300_MARKET, DATASET_ALPHA360_CLASS

View File

@@ -3,7 +3,7 @@
import qlib import qlib
from qlib.config import REG_CN from qlib.constant import REG_CN
from qlib.utils import init_instance_by_config from qlib.utils import init_instance_by_config
from qlib.tests.data import GetData from qlib.tests.data import GetData

View File

@@ -11,7 +11,7 @@ from pprint import pprint
import fire import fire
import qlib import qlib
from qlib.config import REG_CN from qlib.constant import REG_CN
from qlib.workflow import R from qlib.workflow import R
from qlib.workflow.task.gen import RollingGen, task_generator from qlib.workflow.task.gen import RollingGen, task_generator
from qlib.workflow.task.manage import TaskManager, run_task from qlib.workflow.task.manage import TaskManager, run_task

View File

@@ -100,7 +100,8 @@ from copy import deepcopy
import qlib import qlib
import fire import fire
import pandas as pd import pandas as pd
from qlib.config import REG_CN, HIGH_FREQ_CONFIG from qlib.constant import REG_CN
from qlib.config import HIGH_FREQ_CONFIG
from qlib.data import D from qlib.data import D
from qlib.utils import exists_qlib_data, init_instance_by_config, flatten_dict from qlib.utils import exists_qlib_data, init_instance_by_config, flatten_dict
from qlib.workflow import R from qlib.workflow import R

View File

@@ -10,7 +10,7 @@ Next, we will finish updating online predictions.
import copy import copy
import fire import fire
import qlib import qlib
from qlib.config import REG_CN from qlib.constant import REG_CN
from qlib.model.trainer import task_train from qlib.model.trainer import task_train
from qlib.workflow.online.utils import OnlineToolR from qlib.workflow.online.utils import OnlineToolR
from qlib.tests.config import CSI300_GBDT_TASK from qlib.tests.config import CSI300_GBDT_TASK

View File

@@ -6,7 +6,7 @@ import fire
import pickle import pickle
from datetime import datetime from datetime import datetime
from qlib.config import REG_CN from qlib.constant import REG_CN
from qlib.data.dataset.handler import DataHandlerLP from qlib.data.dataset.handler import DataHandlerLP
from qlib.utils import init_instance_by_config from qlib.utils import init_instance_by_config
from qlib.tests.data import GetData from qlib.tests.data import GetData

View File

@@ -20,7 +20,6 @@ from operator import xor
from pprint import pprint from pprint import pprint
import qlib import qlib
from qlib.config import REG_CN
from qlib.workflow import R from qlib.workflow import R
from qlib.tests.data import GetData from qlib.tests.data import GetData

View File

@@ -61,7 +61,7 @@
"\n", "\n",
"import qlib\n", "import qlib\n",
"import pandas as pd\n", "import pandas as pd\n",
"from qlib.config import REG_CN\n", "from qlib.constant import REG_CN\n",
"from qlib.utils import exists_qlib_data, init_instance_by_config\n", "from qlib.utils import exists_qlib_data, init_instance_by_config\n",
"from qlib.workflow import R\n", "from qlib.workflow import R\n",
"from qlib.workflow.record_temp import SignalRecord, PortAnaRecord\n", "from qlib.workflow.record_temp import SignalRecord, PortAnaRecord\n",

View File

@@ -2,7 +2,7 @@
# Licensed under the MIT License. # Licensed under the MIT License.
import qlib import qlib
from qlib.config import REG_CN from qlib.constant import REG_CN
from qlib.utils import init_instance_by_config, flatten_dict from qlib.utils import init_instance_by_config, flatten_dict
from qlib.workflow import R from qlib.workflow import R
from qlib.workflow.record_temp import SignalRecord, PortAnaRecord, SigAnaRecord from qlib.workflow.record_temp import SignalRecord, PortAnaRecord, SigAnaRecord

View File

@@ -14,7 +14,8 @@ import numpy as np
import pandas as pd import pandas as pd
from ..data.data import D from ..data.data import D
from ..config import C, REG_CN from ..config import C
from ..constant import REG_CN
from ..log import get_module_logger from ..log import get_module_logger
from .decision import Order, OrderDir, OrderHelper from .decision import Order, OrderDir, OrderHelper
from .high_performance_ds import BaseQuote, PandasQuote, NumpyQuote from .high_performance_ds import BaseQuote, PandasQuote, NumpyQuote

View File

@@ -22,6 +22,8 @@ from pathlib import Path
from typing import Optional, Union from typing import Optional, Union
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from qlib.constant import REG_CN, REG_US
if TYPE_CHECKING: if TYPE_CHECKING:
from qlib.utils.time import Freq from qlib.utils.time import Freq
@@ -74,10 +76,6 @@ class Config:
self.update(**config_c.__dict__["_config"]) self.update(**config_c.__dict__["_config"])
# REGION CONST
REG_CN = "cn"
REG_US = "us"
# pickle.dump protocol version: https://docs.python.org/3/library/pickle.html#data-stream-format # pickle.dump protocol version: https://docs.python.org/3/library/pickle.html#data-stream-format
PROTOCOL_VERSION = 4 PROTOCOL_VERSION = 4

9
qlib/constant.py Normal file
View File

@@ -0,0 +1,9 @@
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# REGION CONST
REG_CN = "cn"
REG_US = "us"
# Epsilon for avoiding division by zero.
EPS = 1e-12

View File

@@ -25,6 +25,7 @@ except:
from tqdm import tqdm from tqdm import tqdm
from qlib.utils import get_or_create_path from qlib.utils import get_or_create_path
from qlib.constant import EPS
from qlib.log import get_module_logger from qlib.log import get_module_logger
from qlib.model.base import Model from qlib.model.base import Model
from qlib.contrib.data.dataset import MTSDatasetH from qlib.contrib.data.dataset import MTSDatasetH
@@ -791,7 +792,7 @@ def minmax_norm(x):
xmin = x.min(dim=-1, keepdim=True).values xmin = x.min(dim=-1, keepdim=True).values
xmax = x.max(dim=-1, keepdim=True).values xmax = x.max(dim=-1, keepdim=True).values
mask = (xmin == xmax).squeeze() mask = (xmin == xmax).squeeze()
x = (x - xmin) / (xmax - xmin + 1e-12) x = (x - xmin) / (xmax - xmin + EPS)
x[mask] = 1 x[mask] = 1
return x return x

View File

@@ -5,15 +5,12 @@ import abc
from typing import Union, Text from typing import Union, Text
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import copy
from ...log import TimeInspector from ...constant import EPS
from .utils import fetch_df_by_index from .utils import fetch_df_by_index
from ...utils.serial import Serializable from ...utils.serial import Serializable
from ...utils.paral import datetime_groupby_apply from ...utils.paral import datetime_groupby_apply
EPS = 1e-12
def get_group_columns(df: pd.DataFrame, group: Union[Text, None]): def get_group_columns(df: pd.DataFrame, group: Union[Text, None]):
""" """

View File

@@ -1,7 +1,7 @@
import unittest import unittest
from .data import GetData from .data import GetData
from .. import init from .. import init
from ..config import REG_CN from ..constant import REG_CN
class TestAutoData(unittest.TestCase): class TestAutoData(unittest.TestCase):

View File

@@ -62,7 +62,8 @@ qlib.init(provider_uri=provider_uri, region=REG_US)
```python ```python
import qlib import qlib
from qlib.config import REG_CN from qlib.constant import REG_CN
provider_uri = "~/.qlib/qlib_data/cn_data" # target_dir provider_uri = "~/.qlib/qlib_data/cn_data" # target_dir
qlib.init(provider_uri=provider_uri, region=REG_CN) qlib.init(provider_uri=provider_uri, region=REG_CN)
``` ```

View File

@@ -13,7 +13,7 @@ import requests
import pandas as pd import pandas as pd
from loguru import logger from loguru import logger
from dateutil.tz import tzlocal from dateutil.tz import tzlocal
from qlib.config import REG_CN as REGION_CN from qlib.constant import REG_CN as REGION_CN
CUR_DIR = Path(__file__).resolve().parent CUR_DIR = Path(__file__).resolve().parent
sys.path.append(str(CUR_DIR.parent.parent)) sys.path.append(str(CUR_DIR.parent.parent))

View File

@@ -22,7 +22,7 @@ from dateutil.tz import tzlocal
from qlib.tests.data import GetData from qlib.tests.data import GetData
from qlib.utils import code_to_fname, fname_to_code, exists_qlib_data from qlib.utils import code_to_fname, fname_to_code, exists_qlib_data
from qlib.config import REG_CN as REGION_CN from qlib.constant import REG_CN as REGION_CN
CUR_DIR = Path(__file__).resolve().parent CUR_DIR = Path(__file__).resolve().parent
sys.path.append(str(CUR_DIR.parent.parent)) sys.path.append(str(CUR_DIR.parent.parent))

View File

@@ -5,7 +5,6 @@ from qlib.backtest.decision import BaseTradeDecision, TradeRangeByTime
import qlib import qlib
from qlib.tests import TestAutoData from qlib.tests import TestAutoData
import unittest import unittest
from qlib.config import REG_CN, HIGH_FREQ_CONFIG
import pandas as pd import pandas as pd

View File

@@ -5,7 +5,6 @@ import fire
import pandas as pd import pandas as pd
import qlib import qlib
from qlib.config import REG_CN
from qlib.data import D from qlib.data import D
from qlib.model.trainer import task_train from qlib.model.trainer import task_train
from qlib.tests import TestAutoData from qlib.tests import TestAutoData