使用 Boosted.ai API

前言

此自述文件用于 Boosted API 版本 2.x。需要 Python 3。可以从以下网址下载 python 库:

https://boosted-downloads.s3-us-west-2.amazonaws.com/boosted_insights_python_client-2.0.0-py3-none-any.whl

 

身份验证

Boosted.ai 会为您签发一个 API 密钥帮助您完成身份验证。这个密钥类似于密码:在静止状态下进行加密,并且只通过 HTTPS 发送。

 

审查

数据集有三种类型:从属数据、全局数据和独立数据。所有数据集的索引列必须采用 ISO 格式的日期(年-月-日)(YYYY-MM-DD)。

  • 从属数据集为股票所特有。股票通过 ISIN 编码识别。前几列必须是日期、ISIN、3 个字符的 ISO 国家/地区代码和 3 个字符的货币代码。
  • 全局数据集是可用于股票模型或自定义策略模型的数据,不是某只股票或证券所特有。比如利率和其他宏观经济数据。第一列必须是日期。
  • 独立数据集为自定义策略所特有。前几列必须是日期和策略名称。

数据集可以在 UI 中创建,通过这个 API 更新,也可以使用这个 API 创建新数据集。数据集创建完成之后,在创建模型的过程中,可以将数据集的变量包含在 Boosted 模型中。

 

快速入门

这个 API 最好与 Pandas DataFrames 一起使用。它们可以用来存储数据集,也可以表示股票池。

可以在 UI 中创建数据集。我们还提供通过这个 API 创建新数据集的功能。若要通过 API 创建新数据集,请使用以下代码:

 from boosted.api import api
dataset_ID = api.addDependentDataset( your_API_key, dataset, dataset_name )

上述调用返回新创建数据集的数据集 ID。您也可以在 UI 中找到这些 ID。

若要导出数据集,请使用以下代码:

 from boosted.api import api
df = api.exportDependentDataset( your_API_key, dataset_ID )

若要在现有数据集中添加其他数据,请使用以下代码:

 from boosted.api import api
api.addDependentData( your_API_key, dataset_ID, new_data )

新数据的列必须与原始数据集相同。和之前一样,数据以 Pandas DataFrame 的形式输入。

若要查询数据集的状态,请使用以下代码:

 from boosted.api import api
api.queryDataset( your_API_key, dataset_ID )

若要获取模型的股票池,请使用以下代码:

 from boosted.api import api
df = api.getUniverse( your_API_key, model_ID, date=None )

模型 ID 可以在 UI 中找到(*注:在模型的汇总页面上,点击“模型名称 (Model Name)”旁边的“复制到剪贴板 (Copy to Clipboard)”)。日期是可选项。如果您想要查看特定日期的股票池,请输入日期。如果您漏掉一个日期,返回的表格将包括开始和结束日期,以便包含一只股票。如果输入一个日期,则只返回一份股票清单。

若要修改股票池(只允许修改未来的日期),请使用以下代码:

 from boosted.api import api
df = api.updateUniverse( your_API_key, model_ID, new_universe, date )

股票池由数据帧定义,具有 ISIN、“国家/地区 (Country)”和“货币 (Currency)”列。请将 ISIN 设置为索引。

 

高级用途

上述 API 调用是快速入门的便捷包装器。如果您想对 API 进行更精细的控制,可以使用下面这些调用。

     import boosted.api as api
from datetime import datetime
client = api.BoostedClient( your_API_key )

 

创建新数据集

创建新数据集需要为数据集定义一个模式。最便捷的方法是从 Pandas DataFrame 中引出一个模式。

 new_schema = api.inferDataSetSchema("My new dataset name", dataframe)

然后,用返回数据集 ID 的模式创建新数据集。

 dataset_ID = client.createDataset(new_schema.toDict())

然后,上传新数据集。

 result = client.add_dependent_dataset(dataset_ID, dataframe)

您可以查询该数据集,验证是否准备就绪。当它准备就绪(状态为“可用 (AVAILABLE)”)时,创建新模型时就可以使用此数据集。

 result = client.query_dataset(dataset_ID)

输出示例为:

{   'created': '2020-07-22T17:09:58.44158Z',
'fileSize': None,
'id': '053d3b4b-2cc4-4a7a-xxxx-xxxxxxxxxxxx',
'name': 'test data',
'ownerId': '076beab4-984d-43d5-xxxx-xxxxxxxxxxxx',
'region': None,
'status': 'AVAILABLE',
'type': 'STOCK',
'universeId': 'f1d57356-5a4c-4979-xxxx-xxxxxxxxx',
'validFrom': [2015, 1, 8],
'validTo': [2015, 11, 19]}

 

为现有数据集添加数据

(从属数据)

     client.add_dependent_data( dataset_ID, a_Pandas_DataFrame )

(独立数据)

     client.add_independent_data( dataset_ID, a_Pandas_DataFrame )

列名称必须与原数据集中所用的列名称匹配。

 

导出数据

此调用将以 Pandas DataFrame 的形式返回您的数据。输入日期的 datetime 对象。每次调用最多可以检索一年的数据。默认返回截至今天的一年数据。

(从属数据)

     df = client.export_dependent_data( dataset_ID, start = start_date, end = end_date )

(独立数据)

     df = client.export_independent_data( dataset_ID, start = start_date, end = end_date )

 

推理

若要检索推理信号,请使用以下代码:

     results = client.get_inference( model_ID, inference_date )

如果没有可用的推理结果,或者有一个针对模型 ID 和日期的现有推理作业正在运行,则不会返回任何结果。如果您希望在结果准备就绪之前阻止 get_inference()

     results = client.get_inference( model_ID, inference_date, block = True )

这样就会每十秒轮询一次,查看您的推理结果是否准备就绪。如果存在历史推理结果,您可以随时检索。

 

注释

从属数据上传必须使用 ISIN。

有关 API 函数的更多详细信息,请参阅我们的参考指南