mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-14 08:16:54 +08:00
Merge github.com:microsoft/qlib into qlib_register_ops
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,6 +2,7 @@
|
|||||||
__pycache__/
|
__pycache__/
|
||||||
|
|
||||||
*.pyc
|
*.pyc
|
||||||
|
*.pyd
|
||||||
*.so
|
*.so
|
||||||
*.ipynb
|
*.ipynb
|
||||||
.ipynb_checkpoints
|
.ipynb_checkpoints
|
||||||
|
|||||||
@@ -312,6 +312,7 @@ Qlib data are stored in a compact format, which is efficient to be combined into
|
|||||||
|
|
||||||
|
|
||||||
# Related Reports
|
# Related Reports
|
||||||
|
- [Guide To Qlib: Microsoft’s AI Investment Platform](https://analyticsindiamag.com/qlib/)
|
||||||
- [【华泰金工林晓明团队】微软AI量化投资平台Qlib体验——华泰人工智能系列之四十](https://mp.weixin.qq.com/s/Brcd7im4NibJOJzZfMn6tQ)
|
- [【华泰金工林晓明团队】微软AI量化投资平台Qlib体验——华泰人工智能系列之四十](https://mp.weixin.qq.com/s/Brcd7im4NibJOJzZfMn6tQ)
|
||||||
- [微软也搞AI量化平台?还是开源的!](https://mp.weixin.qq.com/s/47bP5YwxfTp2uTHjUBzJQQ)
|
- [微软也搞AI量化平台?还是开源的!](https://mp.weixin.qq.com/s/47bP5YwxfTp2uTHjUBzJQQ)
|
||||||
- [微矿Qlib:业内首个AI量化投资开源平台](https://mp.weixin.qq.com/s/vsJv7lsgjEi-ALYUz4CvtQ)
|
- [微矿Qlib:业内首个AI量化投资开源平台](https://mp.weixin.qq.com/s/vsJv7lsgjEi-ALYUz4CvtQ)
|
||||||
|
|||||||
@@ -106,6 +106,11 @@ if __name__ == "__main__":
|
|||||||
model = init_instance_by_config(task["model"])
|
model = init_instance_by_config(task["model"])
|
||||||
dataset = init_instance_by_config(task["dataset"])
|
dataset = init_instance_by_config(task["dataset"])
|
||||||
|
|
||||||
|
# NOTE: This line is optional
|
||||||
|
# It demonstrates that the dataset can be used standalone.
|
||||||
|
example_df = dataset.prepare("train")
|
||||||
|
print(example_df.head())
|
||||||
|
|
||||||
# start exp
|
# start exp
|
||||||
with R.start(experiment_name="workflow"):
|
with R.start(experiment_name="workflow"):
|
||||||
R.log_params(**flatten_dict(task))
|
R.log_params(**flatten_dict(task))
|
||||||
|
|||||||
@@ -221,7 +221,11 @@ class InstrumentProvider(abc.ABC):
|
|||||||
_df_list = []
|
_df_list = []
|
||||||
# FIXME: each process will read these files
|
# FIXME: each process will read these files
|
||||||
for _path in Path(C.get_data_path()).joinpath("instruments").glob("*.txt"):
|
for _path in Path(C.get_data_path()).joinpath("instruments").glob("*.txt"):
|
||||||
_df = pd.read_csv(_path, sep="\t", names=["inst", "start_datetime", "end_datetime", "save_inst"])
|
_df = pd.read_csv(
|
||||||
|
_path,
|
||||||
|
sep="\t",
|
||||||
|
names=["inst", "start_datetime", "end_datetime", "save_inst"],
|
||||||
|
)
|
||||||
_df_list.append(_df.iloc[:, [0, -1]])
|
_df_list.append(_df.iloc[:, [0, -1]])
|
||||||
df = pd.concat(_df_list, sort=False).sort_values("save_inst")
|
df = pd.concat(_df_list, sort=False).sort_values("save_inst")
|
||||||
df = df.drop_duplicates(subset=["save_inst"], keep="first").fillna(axis=1, method="ffill")
|
df = df.drop_duplicates(subset=["save_inst"], keep="first").fillna(axis=1, method="ffill")
|
||||||
@@ -587,7 +591,11 @@ class LocalInstrumentProvider(InstrumentProvider):
|
|||||||
if not os.path.exists(fname):
|
if not os.path.exists(fname):
|
||||||
raise ValueError("instruments not exists for market " + market)
|
raise ValueError("instruments not exists for market " + market)
|
||||||
_instruments = dict()
|
_instruments = dict()
|
||||||
df = pd.read_csv(fname, sep="\t", names=["inst", "start_datetime", "end_datetime", "save_inst"])
|
df = pd.read_csv(
|
||||||
|
fname,
|
||||||
|
sep="\t",
|
||||||
|
names=["inst", "start_datetime", "end_datetime", "save_inst"],
|
||||||
|
)
|
||||||
df["start_datetime"] = pd.to_datetime(df["start_datetime"])
|
df["start_datetime"] = pd.to_datetime(df["start_datetime"])
|
||||||
df["end_datetime"] = pd.to_datetime(df["end_datetime"])
|
df["end_datetime"] = pd.to_datetime(df["end_datetime"])
|
||||||
for row in df.itertuples(index=False):
|
for row in df.itertuples(index=False):
|
||||||
@@ -1034,12 +1042,31 @@ class ClientProvider(BaseProvider):
|
|||||||
DatasetD.set_conn(self.client)
|
DatasetD.set_conn(self.client)
|
||||||
|
|
||||||
|
|
||||||
Cal = Wrapper()
|
import sys
|
||||||
Inst = Wrapper()
|
|
||||||
FeatureD = Wrapper()
|
if sys.version_info >= (3, 9):
|
||||||
ExpressionD = Wrapper()
|
from typing import Annotated
|
||||||
DatasetD = Wrapper()
|
|
||||||
D = Wrapper()
|
CalendarProviderWrapper = Annotated[CalendarProvider, Wrapper]
|
||||||
|
InstrumentProviderWrapper = Annotated[InstrumentProvider, Wrapper]
|
||||||
|
FeatureProviderWrapper = Annotated[FeatureProvider, Wrapper]
|
||||||
|
ExpressionProviderWrapper = Annotated[ExpressionProvider, Wrapper]
|
||||||
|
DatasetProviderWrapper = Annotated[DatasetProvider, Wrapper]
|
||||||
|
BaseProviderWrapper = Annotated[BaseProvider, Wrapper]
|
||||||
|
else:
|
||||||
|
CalendarProviderWrapper = CalendarProvider
|
||||||
|
InstrumentProviderWrapper = InstrumentProvider
|
||||||
|
FeatureProviderWrapper = FeatureProvider
|
||||||
|
ExpressionProviderWrapper = ExpressionProvider
|
||||||
|
DatasetProviderWrapper = DatasetProvider
|
||||||
|
BaseProviderWrapper = BaseProvider
|
||||||
|
|
||||||
|
Cal: CalendarProviderWrapper = Wrapper()
|
||||||
|
Inst: InstrumentProviderWrapper = Wrapper()
|
||||||
|
FeatureD: FeatureProviderWrapper = Wrapper()
|
||||||
|
ExpressionD: ExpressionProviderWrapper = Wrapper()
|
||||||
|
DatasetD: DatasetProviderWrapper = Wrapper()
|
||||||
|
D: BaseProviderWrapper = Wrapper()
|
||||||
|
|
||||||
|
|
||||||
def register_all_wrappers(C):
|
def register_all_wrappers(C):
|
||||||
|
|||||||
@@ -461,5 +461,14 @@ class QlibRecorder:
|
|||||||
self.get_exp().get_recorder().set_tags(**kwargs)
|
self.get_exp().get_recorder().set_tags(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.version_info >= (3, 9):
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
QlibRecorderWrapper = Annotated[QlibRecorder, Wrapper]
|
||||||
|
else:
|
||||||
|
QlibRecorderWrapper = QlibRecorder
|
||||||
|
|
||||||
# global record
|
# global record
|
||||||
R = Wrapper()
|
R: QlibRecorderWrapper = Wrapper()
|
||||||
|
|||||||
Reference in New Issue
Block a user