设计原理

BigQuant 将复杂的算法和逻辑代码封装为简单易用的模块。模块支持一致的命名约定、版本控制和缓存/增量计算等功能。

我们将开放模块平台,用户可以开发自己的模块,在平台上使用、分享并获得收益。

# 设计原理

# 命名规则

模块的命名遵循如下规则:

M.模块名.v版本号(参数1=值1, 参数2=值2, ..)

# 版本管理

  • 模块支持版本管理,新版本发布后,旧版本仍然可以工作
  • 一个版本发布后,除了特别严重的bug,将不再修改。新功能将在新的版本上发布
  • 除非特殊情况,建议尽量使用最新模块的最新版本,版本不一定向后兼容,升级到新版的时候,可能需要对代码做一些改动

# 缓存/增量计算

  • 模块默认支持缓存功能 (部分模块根据需要显式的关闭了缓存)
  • 缓存key根据模块名、版本号和输入参数生成
  • 如果输入参数函数,建议函数需要用的局部变量都通过参数传入,不推荐使用全局变量,否则 在只是全局变量值更新时,模块仍然返回旧的缓存数据
  • 如果一定要在函数参数中使用全局变量,请将用到的全局变量放到 m_deps 参数中,具体见 Meta参数部分

# 获取帮助

  • M.模块名.m_get_version:获取指定模块的所有版本
  • M.模块名.v版本号:接着按下快捷键Shift + Tab可以弹出该模块版本的帮助信息

# Meta参数

meta参数可以用来控制模块的一些功能,使用方法见 使用模块

  • m_cached: 禁用缓存
  • m_deps: 额外的依赖,主要用于缓存key生成
  • m_silent: 是否输出meta logs

# 查看可用模块可用版本

M.hellomodule.m_get_version

运行结果

bound method BigQuantModule.m_get_version of 模块:hellomodule
可用版本(推荐使用最新版本):v1

查看模块源代码 (部分模块已经开放了源代码)

print(''.join(M.hellomodule.v1.m_sourcecode[0]))