/alpha-mind

quantitative security portfolio analysis

Primary LanguageJupyter NotebookMIT LicenseMIT

Alpha - Mind

Python version
Build Status travis build status
Coverage coverage

Alpha - Mind 是基于 Python 开发的股票多因子研究框架。

依赖

该项目主要有两个主要的github外部依赖:

  • portfolio - optimizer:该项目是相同作者编写的用于资产组合配置的优化器工具包;

  • xgboost: 该项目是alpha - mind中一些机器模型的基础库。

这两个库都已经使用git子模块的方式打包到alpha-mind代码库中。

功能

alpha - mind 提供了多因子研究中常用的工具链,包括:

  • 数据清洗
  • alpha 模型
  • 风险模型
  • 组合优化
  • 执行器

所有的模块都设计了完整的测试用例以尽可能保证正确性。同时,所有的数值模型开发中都对性能给予了足够高的关注,参考了优秀的第三方工具以保证性能:

  • numpy
  • numba
  • cvxopt
  • cvxpy
  • pandas
  • scipy

同时还依赖于一个工具包

编译依赖

  • Windows

    在Windows上完整安装,需要有C++编译器(例如msvc)

    具体可按照如下流程配置(以VS2015为例):

    1. 安装VS2015 社区版,在微软官网可以免费下载。

    2. 安装CMake, 可以从官网下载二进制安装文件,如"Windows win64-x64 ZIP",解压缩后环境变量的设置可以参见此文

      • 可以按照文中的例子,尝试使用如下CMake命令编译一个HelloWorld项目。
      cmake -G "Visual Studio 14 2015 Win64"
      • 将MSBuild的路径(默认是"C:\Program Files (x86)\MSBuild\14.0\Bin"")加入环境变量中。
    3. 在项目子目录"\alphamind\pfopt"下使用如下命令进行更新,确保所需文件都已经拷贝到本地。

      git submodule init
      git submodule update
      
    4. 在项目根目录下双击批处理文件"build_windows_dependencies.bat"或者通过命令行执行

      build_windows_dependencies.bat

      随后一系列依赖项目会自动编译。可能有若干警告,但没有错误。

  • Linux

    在linux上,需要c++编译器(例如g++)以及fortran编译器(例如gfortran):

    build_linux_dependencies.sh

安装

安装需要直接clone或者下载源代码安装,具体流程为:

  1. 克隆项目到本地
git clone https://github.com/alpha-miner/alpha-mind.git
cd alpha-mind
git submodule init
git submodule update
  1. 参照上节内容,编译好依赖的子项目。

  2. 确保环境变量'VS90COMNTOOLS'的值为安装的VS的Comntools下的地址,如'\vs2015\Common7\Tools'

  3. 回到项目的根目录下运行:

python setup.py install
  • 注意事项:
  1. 在Linux系统上,请确保gcc版本大于4.8;
  2. 在libs下面提供了依赖的一些库的二进制文件。linux版本的是在一台具有两个intel cpu的docker虚机上面编译完成的。如果需要实现最佳的性能,建议用户在目标机器上编译相关依赖的库。依赖的库源码地址:portfolio-optimizer

数据源

我们在工具包中也提供了一个数据源的参考实现。这个数据源的参考实现来自于通联数据提供的股票因子数据和风险模型数据等,具体细节可以参考:优矿

该数据源使用RMDBS,供参考的数据库可以是Postgresql。在工具包中我们已经提供了命令行工具,帮助用户一键配置好数据库。步骤如下:

下面的步骤以Ubuntun上Postgresql为例子:

  • 安装数据库软件

 请前往PostgreSQL官网,根据指导,下载安装PostgreSQL数据库。

  • 新建数据库

    在安装完成的数据库中新建Database,例如名字:alpha注意这个数据需要使用utf8作为编码

  • 一键配置数据库

    在命令行中运行:

    alphadmind initdb --url postgresql+psycopg2://user:pwd@host/alpha

    其中:

    • user:数据库用户名
    • pwd:用户密码
    • host:数据库服务器地址

    如果成功,会有类似的输出:

    2017-06-29 14:48:36,678 - ALPHA_MIND - INFO - DB: postgresql+psycopg2://user:pwd@host/alpha
    2017-06-29 14:48:37,515 - ALPHA_MIND - INFO - DB: initialization finished.
    
  • Windows

    对于Windows使用者,命令行工具alphamind并不能直接使用,这个时候可以使用变通的办法,进入源码alphamind/bin目录下:

    python alphadmind initdb --url postgresql+psycopg2://user:pwd@host/alpha

    可以达到一样的效果。

  • 数据库更新

    在目录scripts 下有airflow脚本文件update_uqer_data.py可以用来做每天的数据更新。使用之前除了要配置好airflow服务器之外,需要更新脚本中以下两行:

    _ = uqer.Client(token='')
    engine = sqlalchemy.create_engine('')
    

    其中token需要填入有效的通联数据认证信息;engine需要填入上面指定的数据库地址。