Quantlab数据下载与因子计算

图片

01 下载全市场的数据

数据接口是统一的,一行代码就可以下载A股全市场股票日线从上市以来的所有数据。(我会下载好,以网盘的形式提供给大家,下载直接使用即可)

如果你不想使用使用默认的zvt_home目录,请设置环境变量ZVT_HOME再运行。

图片

大家想自己下载的话,代码在工程的如下位置:

图片

# 下载A股后复权日频数据
def download_astock_hfq_quotes():
    Stock1dHfqKdata.record_data(provider='em')

而且是自动增量更新的:

图片

我使用mongo数据库做过类似的事情,蛮多事情需要处理的。

另外从本地使用的角度,日频的数据使用Sqlite不失为一种选择,可以快速打包上传与分发,同时也支持增量更新(使用csv或者hdf5)增量更新,断点续采与统一管理是比较麻烦的;使用mongo的话,打包给别人需要安装mongo程序与导入。

更多的财务数据,财务报表以及ETF都可以下载。

当然zvt没有支持akshare或者tushare可以自行考虑扩展一下。

02 因子计算

策略的核心或者说基本要素是因子的计算。

咱们Quantlab之前一直使用类似qlib的因子表达式。

数据查询使用query_data,返回dataframe,然后使用因子表达式对时间序列进行计算,这里我们不使用zvt的加载数据,然后加transformer的算子,这个如果要在机器学习多因子的环境下,维护成本太高。

咱们的因子表达式,加载数据,然后给数据打标,就与Quantlab无缝衔接上了。

from pathlib import WindowsPath

import pandas as pd
from datetime import datetime

import requests
from tqdm import tqdm
import abc
# from .expr import calc_expr
from zvt.domain import Stock1dHfqKdata


class Dataloader:

    def __init__(self, symbols, start_date='2010-01-01', end_date=datetime.now().strftime('%Y-%m-%d')):
        self.symbols = symbols
        self.start_date = start_date
        if not end_date or end_date == '':
            end_date = datetime.now().strftime('%-Y%m-%d')
        self.end_date = end_date

    def _load_df(self):
        df = Stock1dHfqKdata.query_data(entity_ids=self.symbols, provider='em', columns=['open', 'close', 'code'])
        return df

    def _reset_index(self, df: pd.DataFrame):
        trade_calendar = list(set(df.index))
        trade_calendar.sort()

        def _ffill_df(sub_df: pd.DataFrame):
            df_new = sub_df.reindex(trade_calendar, method='ffill')
            return df_new

        df = df.groupby('symbol', group_keys=False).apply(lambda sub_df: _ffill_df(sub_df))
        return df

    def load(self, fields=None, names=None):
        df = self._load_df()
        print(df)


if __name__ == '__main__':
    Dataloader(['stock_sz_000338', 'stock_sz_000002']).load()

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103441
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注