1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-19 10:24:35 +08:00

Compare commits

...

26 Commits

Author SHA1 Message Date
Linlang
304f586f45 optimize README 2024-03-06 19:22:30 +08:00
Linlang
467b352553 optimize get_data code 2024-03-06 15:46:26 +08:00
Linlang
e85580600c optimize get_data code 2024-03-06 15:17:42 +08:00
Linlang
fd0863b0bb optimize get_data code 2024-03-06 15:17:04 +08:00
Linlang
0c14952136 test fix CI error 2024-03-06 13:57:37 +08:00
Linlang
e979590083 test fix CI error 2024-03-06 13:20:42 +08:00
Linlang
4023277874 test fix CI error 2024-03-06 12:53:52 +08:00
Linlang
f206f0a6da test fix CI error 2024-03-06 12:32:13 +08:00
Linlang
cac66e9c9d test fix CI error 2024-03-06 11:17:41 +08:00
Linlang
cb0712a953 test fix CI error 2024-03-06 10:55:07 +08:00
Linlang
1dc5e7308d test fix CI error 2024-03-06 10:51:55 +08:00
Linlang
240cdff0f3 test fix CI error 2024-03-06 10:47:21 +08:00
Linlang
25a6ff0812 test fix CI error 2024-03-06 10:42:26 +08:00
Linlang
f568c2f126 test fix CI error 2024-03-06 10:19:54 +08:00
Linlang
1f390feafd test fix CI error 2024-03-06 10:14:28 +08:00
Linlang
f095792231 test fix CI error 2024-03-05 23:29:20 +08:00
Linlang
835ef12c20 test fix CI error 2024-03-05 23:21:22 +08:00
Linlang
77b6fcb92a test fix CI error 2024-03-05 23:13:23 +08:00
Linlang
66fad0a92e test fix CI error 2024-03-05 23:10:28 +08:00
Linlang
5af52c2472 test fix CI error 2024-03-05 23:09:09 +08:00
Linlang
3f41787dea test fix CI error 2024-03-05 23:03:49 +08:00
Linlang
e71ee221f9 test fix CI error 2024-03-05 23:00:56 +08:00
Linlang
9f1808378d test fix CI error 2024-03-05 22:25:22 +08:00
Linlang
8cf7bb3aaf fix CI error 2024-03-05 17:24:03 +08:00
Linlang
6ea921bd84 fix CI error 2024-03-05 17:14:36 +08:00
Linlang
fbe5695eda download orderbook data 2024-03-05 17:01:13 +08:00
14 changed files with 30 additions and 34 deletions

View File

@@ -324,7 +324,6 @@ class TRAModel(Model):
class LSTM(nn.Module): class LSTM(nn.Module):
"""LSTM Model """LSTM Model
Args: Args:
@@ -414,7 +413,6 @@ class PositionalEncoding(nn.Module):
class Transformer(nn.Module): class Transformer(nn.Module):
"""Transformer Model """Transformer Model
Args: Args:
@@ -475,7 +473,6 @@ class Transformer(nn.Module):
class TRA(nn.Module): class TRA(nn.Module):
"""Temporal Routing Adaptor (TRA) """Temporal Routing Adaptor (TRA)
TRA takes historical prediction errors & latent representation as inputs, TRA takes historical prediction errors & latent representation as inputs,

View File

@@ -27,13 +27,11 @@ pip install arctic # NOTE: pip may fail to resolve the right package dependency
2. Please follow following steps to download example data 2. Please follow following steps to download example data
```bash ```bash
cd examples/orderbook_data/ cd examples/orderbook_data/
wget http://fintech.msra.cn/stock_data/downloads/highfreq_orderboook_example_data.tar.bz2 python ../../scripts/get_data.py download_data --target_dir . --file_name highfreq_orderbook_example_data.zip
tar xf highfreq_orderboook_example_data.tar.bz2
``` ```
3. Please import the example data to your mongo db 3. Please import the example data to your mongo db
```bash ```bash
cd examples/orderbook_data/
python create_dataset.py initialize_library # Initialization Libraries python create_dataset.py initialize_library # Initialization Libraries
python create_dataset.py import_data # Initialization Libraries python create_dataset.py import_data # Initialization Libraries
``` ```
@@ -42,7 +40,6 @@ python create_dataset.py import_data # Initialization Libraries
After importing these data, you run `example.py` to create some high-frequency features. After importing these data, you run `example.py` to create some high-frequency features.
```bash ```bash
cd examples/orderbook_data/
pytest -s --disable-warnings example.py # If you want run all examples pytest -s --disable-warnings example.py # If you want run all examples
pytest -s --disable-warnings example.py::TestClass::test_exp_10 # If you want to run specific example pytest -s --disable-warnings example.py::TestClass::test_exp_10 # If you want to run specific example
``` ```

View File

@@ -162,13 +162,15 @@ def create_account_instance(
init_cash=init_cash, init_cash=init_cash,
position_dict=position_dict, position_dict=position_dict,
pos_type=pos_type, pos_type=pos_type,
benchmark_config={} benchmark_config=(
{}
if benchmark is None if benchmark is None
else { else {
"benchmark": benchmark, "benchmark": benchmark,
"start_time": start_time, "start_time": start_time,
"end_time": end_time, "end_time": end_time,
}, }
),
) )

View File

@@ -622,9 +622,11 @@ class Indicator:
print( print(
"[Indicator({}) {}]: FFR: {}, PA: {}, POS: {}".format( "[Indicator({}) {}]: FFR: {}, PA: {}, POS: {}".format(
freq, freq,
(
trade_start_time trade_start_time
if isinstance(trade_start_time, str) if isinstance(trade_start_time, str)
else trade_start_time.strftime("%Y-%m-%d %H:%M:%S"), else trade_start_time.strftime("%Y-%m-%d %H:%M:%S")
),
fulfill_rate, fulfill_rate,
price_advantage, price_advantage,
positive_rate, positive_rate,

View File

@@ -3,6 +3,7 @@ Here is a batch of evaluation functions.
The interface should be redesigned carefully in the future. The interface should be redesigned carefully in the future.
""" """
import pandas as pd import pandas as pd
from typing import Tuple from typing import Tuple
from qlib import get_module_logger from qlib import get_module_logger

View File

@@ -511,7 +511,6 @@ class TRAModel(Model):
class RNN(nn.Module): class RNN(nn.Module):
"""RNN Model """RNN Model
Args: Args:
@@ -601,7 +600,6 @@ class PositionalEncoding(nn.Module):
class Transformer(nn.Module): class Transformer(nn.Module):
"""Transformer Model """Transformer Model
Args: Args:
@@ -649,7 +647,6 @@ class Transformer(nn.Module):
class TRA(nn.Module): class TRA(nn.Module):
"""Temporal Routing Adaptor (TRA) """Temporal Routing Adaptor (TRA)
TRA takes historical prediction errors & latent representation as inputs, TRA takes historical prediction errors & latent representation as inputs,

View File

@@ -373,7 +373,6 @@ class WeightStrategyBase(BaseSignalStrategy):
class EnhancedIndexingStrategy(WeightStrategyBase): class EnhancedIndexingStrategy(WeightStrategyBase):
"""Enhanced Indexing Strategy """Enhanced Indexing Strategy
Enhanced indexing combines the arts of active management and passive management, Enhanced indexing combines the arts of active management and passive management,

View File

@@ -30,7 +30,6 @@ class Ensemble:
class SingleKeyEnsemble(Ensemble): class SingleKeyEnsemble(Ensemble):
""" """
Extract the object if there is only one key and value in the dict. Make the result more readable. Extract the object if there is only one key and value in the dict. Make the result more readable.
{Only key: Only value} -> Only value {Only key: Only value} -> Only value
@@ -64,7 +63,6 @@ class SingleKeyEnsemble(Ensemble):
class RollingEnsemble(Ensemble): class RollingEnsemble(Ensemble):
"""Merge a dict of rolling dataframe like `prediction` or `IC` into an ensemble. """Merge a dict of rolling dataframe like `prediction` or `IC` into an ensemble.
NOTE: The values of dict must be pd.DataFrame, and have the index "datetime". NOTE: The values of dict must be pd.DataFrame, and have the index "datetime".

View File

@@ -247,9 +247,7 @@ class ShrinkCovEstimator(RiskModel):
v1 = y.T.dot(z) / t - cov_mkt[:, None] * S v1 = y.T.dot(z) / t - cov_mkt[:, None] * S
roff1 = np.sum(v1 * cov_mkt[:, None].T) / var_mkt - np.sum(np.diag(v1) * cov_mkt) / var_mkt roff1 = np.sum(v1 * cov_mkt[:, None].T) / var_mkt - np.sum(np.diag(v1) * cov_mkt) / var_mkt
v3 = z.T.dot(z) / t - var_mkt * S v3 = z.T.dot(z) / t - var_mkt * S
roff3 = ( roff3 = np.sum(v3 * np.outer(cov_mkt, cov_mkt)) / var_mkt**2 - np.sum(np.diag(v3) * cov_mkt**2) / var_mkt**2
np.sum(v3 * np.outer(cov_mkt, cov_mkt)) / var_mkt**2 - np.sum(np.diag(v3) * cov_mkt**2) / var_mkt**2
)
roff = 2 * roff1 - roff3 roff = 2 * roff1 - roff3
rho = rdiag + roff rho = rdiag + roff

View File

@@ -90,7 +90,6 @@ class OnlineStrategy:
class RollingStrategy(OnlineStrategy): class RollingStrategy(OnlineStrategy):
""" """
This example strategy always uses the latest rolling model sas online models. This example strategy always uses the latest rolling model sas online models.
""" """

View File

@@ -146,9 +146,7 @@ class DumpDataBase:
return ( return (
self._include_fields self._include_fields
if self._include_fields if self._include_fields
else set(df_columns) - set(self._exclude_fields) else set(df_columns) - set(self._exclude_fields) if self._exclude_fields else df_columns
if self._exclude_fields
else df_columns
) )
@staticmethod @staticmethod

View File

@@ -132,10 +132,12 @@ class DumpPitData:
return ( return (
set(self._include_fields) set(self._include_fields)
if self._include_fields if self._include_fields
else set(df[self.field_column_name]) - set(self._exclude_fields) else (
set(df[self.field_column_name]) - set(self._exclude_fields)
if self._exclude_fields if self._exclude_fields
else set(df[self.field_column_name]) else set(df[self.field_column_name])
) )
)
def get_filenames(self, symbol, field, interval): def get_filenames(self, symbol, field, interval):
dir_name = self.qlib_dir.joinpath(self.PIT_DIR_NAME, symbol) dir_name = self.qlib_dir.joinpath(self.PIT_DIR_NAME, symbol)

View File

@@ -65,6 +65,8 @@ REQUIRED = [
# To ensure stable operation of the experiment manager, we have limited the version of mlflow, # To ensure stable operation of the experiment manager, we have limited the version of mlflow,
# and we need to verify whether version 2.0 of mlflow can serve qlib properly. # and we need to verify whether version 2.0 of mlflow can serve qlib properly.
"mlflow>=1.12.1, <=1.30.0", "mlflow>=1.12.1, <=1.30.0",
# mlflow 1.30.0 requires packaging<22, so we limit the packaging version, otherwise the CI will fail.
"packaging<22",
"tqdm", "tqdm",
"loguru", "loguru",
"lightgbm>=3.3.0", "lightgbm>=3.3.0",

View File

@@ -9,7 +9,9 @@ from qlib.tests import TestAutoData
class WorkflowTest(TestAutoData): class WorkflowTest(TestAutoData):
TMP_PATH = Path("./.mlruns_tmp/") # Creating the directory manually doesn't work with mlflow,
# so we add a subfolder named .trash when we create the directory.
TMP_PATH = Path("./.mlruns_tmp/.trash")
def tearDown(self) -> None: def tearDown(self) -> None:
if self.TMP_PATH.exists(): if self.TMP_PATH.exists():
@@ -17,6 +19,8 @@ class WorkflowTest(TestAutoData):
def test_get_local_dir(self): def test_get_local_dir(self):
""" """ """ """
self.TMP_PATH.mkdir(parents=True, exist_ok=True)
with R.start(uri=str(self.TMP_PATH)): with R.start(uri=str(self.TMP_PATH)):
pass pass