1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-19 18:27:38 +08:00

Compare commits

...

6 Commits

Author SHA1 Message Date
Linlang
b85a5c224e fixed pytest error in CI 2025-03-12 14:11:42 +08:00
Linlang
880a5d27b1 fix issue 1887 2025-03-11 20:19:13 +08:00
Linlang
922494bdbb format with black 2025-03-10 17:15:37 +08:00
Linlang
3277c2a512 fix pytest error 2025-03-10 17:06:36 +08:00
Linlang
06c8c4e37f format with black 2025-03-10 17:04:51 +08:00
Linlang
84373de6e5 fix the bug that the HS STMBOLS URL is faild 2025-03-10 16:57:53 +08:00
10 changed files with 19 additions and 32 deletions

View File

@@ -1,8 +1,8 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# Licensed under the MIT License. # Licensed under the MIT License.
""" """
The motivation of this demo The motivation of this demo
- To show the data modules of Qlib is Serializable, users can dump processed data to disk to avoid duplicated data preprocessing - To show the data modules of Qlib is Serializable, users can dump processed data to disk to avoid duplicated data preprocessing
""" """
from copy import deepcopy from copy import deepcopy

View File

@@ -1,8 +1,8 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# Licensed under the MIT License. # Licensed under the MIT License.
""" """
The motivation of this demo The motivation of this demo
- To show the data modules of Qlib is Serializable, users can dump processed data to disk to avoid duplicated data preprocessing - To show the data modules of Qlib is Serializable, users can dump processed data to disk to avoid duplicated data preprocessing
""" """
from copy import deepcopy from copy import deepcopy

View File

@@ -1,10 +1,10 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# Licensed under the MIT License. # Licensed under the MIT License.
""" """
NOTE: NOTE:
- This scripts is a demo to import example data import Qlib - This scripts is a demo to import example data import Qlib
- !!!!!!!!!!!!!!!TODO!!!!!!!!!!!!!!!!!!!: - !!!!!!!!!!!!!!!TODO!!!!!!!!!!!!!!!!!!!:
- Its structure is not well designed and very ugly, your contribution is welcome to make importing dataset easier - Its structure is not well designed and very ugly, your contribution is welcome to make importing dataset easier
""" """
from datetime import date, datetime as dt from datetime import date, datetime as dt
import os import os

View File

@@ -79,6 +79,7 @@ package = [
test = [ test = [
"yahooquery", "yahooquery",
"baostock", "baostock",
"akshare",
] ]
analysis = [ analysis = [
"plotly", "plotly",

View File

@@ -1,9 +1,9 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# Licensed under the MIT License. # Licensed under the MIT License.
""" """
This module is not a necessary part of Qlib. This module is not a necessary part of Qlib.
They are just some tools for convenience They are just some tools for convenience
It is should not imported into the core part of qlib It is should not imported into the core part of qlib
""" """
import torch import torch
import numpy as np import numpy as np

View File

@@ -200,7 +200,7 @@ class Trainer:
if ckpt_path is not None: if ckpt_path is not None:
_logger.info("Resuming states from %s", str(ckpt_path)) _logger.info("Resuming states from %s", str(ckpt_path))
self.load_state_dict(torch.load(ckpt_path)) self.load_state_dict(torch.load(ckpt_path, weights_only=False))
else: else:
self.initialize() self.initialize()

View File

@@ -13,6 +13,7 @@ import functools
from pathlib import Path from pathlib import Path
from typing import Iterable, Tuple, List from typing import Iterable, Tuple, List
import akshare as ak
import numpy as np import numpy as np
import pandas as pd import pandas as pd
from loguru import logger from loguru import logger
@@ -202,18 +203,9 @@ def get_hs_stock_symbols() -> list:
------- -------
{600000.ss, 600001.ss, 600002.ss, 600003.ss, ...} {600000.ss, 600001.ss, 600002.ss, 600003.ss, ...}
""" """
url = "http://99.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=10000&po=1&np=1&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f12" stock_info_a_code_name_df = ak.stock_info_a_code_name()
try: stock_codes = stock_info_a_code_name_df["code"].tolist()
resp = requests.get(url, timeout=None) _symbols = [code for code in stock_codes if code and code.strip()]
resp.raise_for_status()
except requests.exceptions.HTTPError as e:
raise requests.exceptions.HTTPError(f"Request to {url} failed with status code {resp.status_code}") from e
try:
_symbols = [_v["f12"] for _v in resp.json()["data"]["diff"]]
except Exception as e:
logger.warning("An error occurred while extracting data from the response.")
raise
if len(_symbols) < 3900: if len(_symbols) < 3900:
raise ValueError("The complete list of stocks is not available.") raise ValueError("The complete list of stocks is not available.")

View File

@@ -50,12 +50,6 @@ pip install -r requirements.txt
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data_1min --region cn --interval 1min python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data_1min --region cn --interval 1min
# us 1d # us 1d
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/us_data --region us --interval 1d python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/us_data --region us --interval 1d
# us 1min
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/us_data_1min --region us --interval 1min
# in 1d
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/in_data --region in --interval 1d
# in 1min
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/in_data_1min --region in --interval 1min
``` ```
### Collector *YahooFinance* data to qlib ### Collector *YahooFinance* data to qlib

View File

@@ -194,7 +194,7 @@ def test_trainer_checkpoint():
assert (output_dir / "002.pth").exists() assert (output_dir / "002.pth").exists()
assert os.readlink(output_dir / "latest.pth") == str(output_dir / "002.pth") assert os.readlink(output_dir / "latest.pth") == str(output_dir / "002.pth")
trainer.load_state_dict(torch.load(output_dir / "001.pth")) trainer.load_state_dict(torch.load(output_dir / "001.pth", weights_only=False))
assert trainer.current_iter == 1 assert trainer.current_iter == 1
assert trainer.current_episode == 100 assert trainer.current_episode == 100