精华内容
下载资源
问答
  • python量化投资

    2017-12-19 19:24:01
    量化投资策略与技术修订版.pdf,零起点Python大数据与量化交易.pdf
  • Python量化投资

    2017-12-14 01:56:51
    安装Python开发环境 密码:hhsc Python Pandas Anaconda 勾选 Add Anaconda...... Register Anaconda...... 检查命令行:conda list 安装Pycharm Interpreter改成Anaconda 检查:setting -> Project demo ...
    安装Python开发环境
    • 密码:hhsc
    • Python
    • Pandas
    • Anaconda
      • 勾选 Add Anaconda...... Register Anaconda......
      • 检查命令行:conda list
    • 安装Pycharm
      • Interpreter改成Anaconda
      • 检查:setting -> Project demo
    预习Python基础知识
    • 密码:x4gv
    • 预习《Python基础教程(第二版)》前五章
    • 不用精读,快速浏览

    量化投资介绍
    • 什么是量化投资
      • 策略开发的过程
      • 本质:数据里面找规律
      • 规律会失效吗
      • 可靠的规律:长期存在的规律;有理论支撑的规律;符合人性的规律;简单的规律;
      • 越不成熟的市场,量化投资越有效
    • 量化投资的分类
      • 择时策略
      • 选股策略
      • 仓位管理
      • 其他:套利、算法交易等
    • 数据的分类
      • 交易数据
      • 宏观经济数据

    转载于:https://juejin.im/post/5a31da63f265da430e4f2af8

    展开全文
  • ** **Python量化投资与A股量化实战课程概述越来越多的投资者和机构对量化投资及程序化交易产生了兴趣。也许你想求得一份量化投资的相关工作,但又觉得量化投资很神秘,不知道从何学起。马云说,对于新兴事物,绝大...

    ** <<<【点击】传送门-加入 Python量化投资与A股量化实战课程(网易云课堂)>>> **

    wAAACwAAAAAAQABAEACAkQBADs=

    Python量化投资与A股量化实战课程概述

    越来越多的投资者和机构对量化投资及程序化交易产生了兴趣。也许你想求得一份量化投资的相关工作,但又觉得量化投资很神秘,不知道从何学起。马云说,对于新兴事物,绝大多数人第一看不见,第二看不起,第三看不懂,第四来不及。如果你对量化投资处于“看不懂”阶段,不想等到“来不及”阶段。不妨来听听在量化投资行业的资深从业者为量化小白们定制的量化投资课程

    课程适合人群金融工程/数学专业背景的同学/工作人士,希望进一步学习Python编程以及在量化投资的实战应用

    非金融工程专业背景的同学/工作人士,希望迅速成为宽客

    金融相关人员,希望学习如何系统的做量化策略

    个人投资者,希望系统学习掌握量化投资相关的实务技能,从模型开发,回测,策略改进,搭建稳定的量化交易系统

    讲师介绍

    wAAACwAAAAAAQABAEACAkQBADs=

    课程目录

    章节1:量化投资前导课程为什么学Python?

    Python 环境搭建

    Jupyter Notebook 介绍及插件安装

    Python 第三方包安装

    量化投资介绍、特点及优势

    章节3:Python 基础数据结构与操作示例

    数据类型:字符串、整数、浮点数

    数据类型:列表

    数据类型:元组

    数据类型: 布尔值, 字典

    运算符 与 控制流

    函数

    全局变量与局部变量

    章节4:Python 进阶numpy

    pandas

    数据可视化分析

    数据统计与分析

    章节5:Python 高级15如何更改python,创建虚拟环境、安装新Spyder

    章节6:量化平台介绍优矿平台介绍

    策略回测框架介绍1

    策略回测框架介绍

    CONTEXT策略编写环境讲解

    账户相关属性讲解

    因子选股策略代码讲解

    章节7:多因子系列多因子模型理论背景

    多因子模型构建流程

    因子数据预处理- 去极值,中性化,标准化

    单因子分组回测代码模板讲解

    数据预处理后的单因子分组回测

    单因子分组回测结果分析 (原始因子 VS 数据处理因子)

    多因子选股策略代码讲解

    章节8:MongoDB数据库管理MongoDB 数据库介绍

    数据库安装及可视化工具安装

    数据库配置

    使用Python 操作MongoDB数据库

    章节9:量化CTA策略基于MACD的策略(回测收益280%,年化47%,2015.06- 2018.11)

    CTA策略介绍 【主观 VS 量化】

    双均线策略103:20

    均线突破策略 【商品期货】【收益441%,16年至18年】【聚宽】

    章节10:本地搭建Python回测框架项目介绍及安装,更新数据

    运行策略

    账户设置及策略运行的不同方法

    策略编写流程

    如何获取数据

    订单管理

    定时器使用方法

    章节11:本地搭建聚宽Python回测平台如何本地使用聚宽回测

    编写策略回测

    模拟交易

    实盘交易接口配置

    章节12:Python策略管理择时策略

    多因子选股策略

    动量策略

    章节13:自动化交易自动化交易API介绍

    自动化交易解决方案

    自动化接口推荐1

    自动化接口2

    自动化接口3

    章节14:数字货币方向【赠送课程】CCXT 万能交易所接口项目介绍

    使用CCXT连接BITMEX交易所获取行情需购买观看

    章节15:开源量化交易平台框架系列【Bonus】初始开源交易平台开发框架

    开源交易平台配置

    wAAACwAAAAAAQABAEACAkQBADs=

    ##常见问题

    Q1、你是否看到别人投资期货暴富撒钱的新闻以及自动化交易赚钱的神话而蠢蠢欲动?

    A1: 参加课程,快速学习。无需编程基础,小白从零开始也可入门,从数据,回测框架、回测报告数据可视化及报告分析、实盘接口及经典策略等一整套的PYTHON期货解决方案教学及代码都在这了,从0到1学习量化,节省时间,短时间获得老师数年编程经验。你还在犹豫什么呢?学完课程,也可以服务其他人,往往1个任务就能赚回学费!

    Q2、您是否有一个好的投资策略想法,但是不知道实盘结果?

    A2: 章节6会教你如何管理数据,章节5会教你如何构建自己的事件驱动系统,轻松回测您的策略并画出资金曲线等盈利指标进行分析, **

    **也可以在过程中记录你想要的数据,进行个性化的分析。

    Q3、我是否需要自己搭建一套回测系统?

    答案是 Yes, 有一套自己的回测框架及实盘体系是非常重要的。 然而,编写自己的事件驱动的回测系统是一种很好的学习经历。首先,它迫使您考虑交易基础设施的所有方面,而不仅仅是花时间修改特定策略。 不过,您也可以学习使用开源的框架进行修改学习。

    课程咨询

    有任何问题都可以咨询老师微信: 82789754

    关注微信公众号 量化投资学院

    回复“Python“领取Python与量化投资入门课程

    回复**“量化礼包“ **领取区块链,量化,AI,金融工程,PYTHON精选书等资料

    更多资讯可查看 www.studyquant.com

    展开全文
  • Python量化投资与A股量化实战课程概述 越来越多的投资者和机构对量化投资及程序化交易产生了兴趣。也许你想求得一份量化投资的相关工作,但又觉得量化投资很神秘,不知道从何学起。马云说,对于新兴事物,绝大多数人...

    <<<****【点击】传送门-加入 Python量化投资与A股量化实战课程(网易云课堂)>>>>>
    header

    Python量化投资与A股量化实战课程概述
    越来越多的投资者和机构对量化投资及程序化交易产生了兴趣。也许你想求得一份量化投资的相关工作,但又觉得量化投资很神秘,不知道从何学起。马云说,对于新兴事物,绝大多数人第一看不见,第二看不起,第三看不懂,第四来不及。如果你对量化投资处于“看不懂”阶段,不想等到“来不及”阶段。不妨来听听在量化投资行业的资深从业者为量化小白们定制的量化投资课程

    课程适合人群

    • 金融工程/数学专业背景的同学/工作人士,希望进一步学习Python编程以及在量化投资的实战应用

    • 非金融工程专业背景的同学/工作人士,希望迅速成为宽客

    • 金融相关人员,希望学习如何系统的做量化策略

    • 个人投资者,希望系统学习掌握量化投资相关的实务技能,从模型开发,回测,策略改进,搭建稳定的量化交易系统

    讲师介绍
    Rudy

    课程目录

    章节1:量化投资前导课程

    • 为什么学Python?

    • Python 环境搭建

    • Jupyter Notebook 介绍及插件安装

    • Python 第三方包安装

    • 量化投资介绍、特点及优势

    章节3:Python 基础

    • 数据结构与操作示例

    • 数据类型:字符串、整数、浮点数

    • 数据类型:列表

    • 数据类型:元组

    • 数据类型: 布尔值, 字典

    • 运算符 与 控制流

    • 函数

    • 全局变量与局部变量

    章节4:Python 进阶

    • numpy

    • pandas

    • 数据可视化分析

    • 数据统计与分析

    章节5:Python 高级

    • 15如何更改python,创建虚拟环境、安装新Spyder

    章节6:量化平台介绍

    • 优矿平台介绍

    • 策略回测框架介绍1

    • 策略回测框架介绍

    • CONTEXT策略编写环境讲解

    • 账户相关属性讲解

    • 因子选股策略代码讲解

    章节7:多因子系列

    • 多因子模型理论背景

    • 多因子模型构建流程

    • 因子数据预处理- 去极值,中性化,标准化

    • 单因子分组回测代码模板讲解

    • 数据预处理后的单因子分组回测

    • 单因子分组回测结果分析 (原始因子 VS 数据处理因子)

    • 多因子选股策略代码讲解

    章节8:MongoDB数据库管理

    • MongoDB 数据库介绍

    • 数据库安装及可视化工具安装

    • 数据库配置

    • 使用Python 操作MongoDB数据库

    **章节9:量化CTA策略 **

    • 基于MACD的策略(回测收益280%,年化47%,2015.06- 2018.11)

    • CTA策略介绍 【主观 VS 量化】

    • 双均线策略103:20

    • 均线突破策略 【商品期货】【收益441%,16年至18年】【聚宽】

    章节10:本地搭建Python回测框架

    • 项目介绍及安装,更新数据

    • 运行策略

    • 账户设置及策略运行的不同方法

    • 策略编写流程

    • 如何获取数据

    • 订单管理

    • 定时器使用方法

    章节11:本地搭建聚宽Python回测平台

    • 如何本地使用聚宽回测

    • 编写策略回测

    • 模拟交易

    • 实盘交易接口配置

    章节12:Python策略管理

    • 择时策略

    • 多因子选股策略

    • 动量策略

    章节13:自动化交易

    • 自动化交易API介绍

    • 自动化交易解决方案

    • 自动化接口推荐1

    • 自动化接口2

    • 自动化接口3

    章节14:数字货币方向【赠送课程】

    • CCXT 万能交易所接口项目介绍

    • 使用CCXT连接BITMEX交易所获取行情需购买观看

    章节15:开源量化交易平台框架系列【Bonus】

    • 初始开源交易平台开发框架

    • 开源交易平台配置

    image

    ##常见问题

    Q1、你是否看到别人投资期货暴富撒钱的新闻以及自动化交易赚钱的神话而蠢蠢欲动?

    A1: 参加课程,快速学习。无需编程基础,小白从零开始也可入门,从数据,回测框架、回测报告数据可视化及报告分析、实盘接口及经典策略等一整套的PYTHON期货解决方案教学及代码都在这了,从0到1学习量化,节省时间,短时间获得老师数年编程经验。你还在犹豫什么呢?学完课程,也可以服务其他人,往往1个任务就能赚回学费!

    Q2、您是否有一个好的投资策略想法,但是不知道实盘结果?

    A2: 章节6会教你如何管理数据,章节5会教你如何构建自己的事件驱动系统,轻松回测您的策略并画出资金曲线等盈利指标进行分析, **

    **也可以在过程中记录你想要的数据,进行个性化的分析。

    Q3、我是否需要自己搭建一套回测系统?

    答案是 Yes, 有一套自己的回测框架及实盘体系是非常重要的。 然而,编写自己的事件驱动的回测系统是一种很好的学习经历。首先,它迫使您考虑交易基础设施的所有方面,而不仅仅是花时间修改特定策略。 不过,您也可以学习使用开源的框架进行修改学习。

    课程咨询

    在这里插入图片描述
    有任何问题都可以咨询老师微信: 82789754

    关注微信公众号 量化投资学院

    回复**“Python“**领取Python与量化投资入门课程

    回复**“量化礼包“ **领取区块链,量化,AI,金融工程,PYTHON精选书等资料

    更多资讯可查看 www.studyquant.com

    展开全文
  • Catalyst 快速搭建 数字货币Python量化投资回测及实盘交易平台环境安装Windows要求Installing with pip交易所数据导入导入数据运行策略回测结果其他更多量化学习资源关注StudyQuant环境安装Windows要求Installing ...


    之前就听说过Catalyst这个项目,Github,1.2k star, 今天来写个搭建教程,希望能帮到大家。

    Enigma- Catalyst

    量化交易龙头

    Enigma是数字货币量化交易的龙头,但Enigma是一个保护数据隐私的分布式计算平台,而在其之上建立的第一个应用Catalyst才是龙头级的量化投资平台,它是用Python编写的加密资产的算法交易市场。我们可以把Enigma理解为就是Catalyst底层的一个计算协议,通过Enigma来获取数据源和对数据的加密计算,而Catalyst是一个应用平台,开放给量化投资者进行数据预测和测试。因为面向投资者,Catalyst提供了丰富的API接口和交易策略的SDK供开发者使用,开发者们可以快速简单的使用这些接口来对交易策略进行开发,并通过Enigma提供的计算来验证其可行性。

    其代币一个作用是是可以作为节点的保证金**,由于Enigma是公链,其**提出的类POS共识机制引入了惩罚机制,保证节点提供有效的数据。**此外,其代币可以作为计算费用,储存、检索、计算数据都需要一定的消耗(类似Gas)。

    Enigma代币去年10月上交易所,随后持续了大概两个月的破发横盘,投资者怨声载道,而在今年一月开始有了爆发性的增长,高点接近20倍的涨幅,随后跟随大盘一路持续下跌,后续的发展还要看其具体的应用效果了。

    Catalyst是一个用Python编写的加密资产的算法交易库。它允许交易策略易于表达,并根据历史数据(每日和分钟的分辨率)进行反向测试,提供有关特定策略性能的分析和见解。 Catalyst还支持加密资产的实时交易,从四个交易所(Binance,Bitfinex,Bittrex和Poloniex)开始,随着时间的推移会增加更多。 Catalyst使用户能够共享和策划数据,并构建有利可图的数据驱动型投资策略。请访问catalystcrypto.io以了解有关Catalyst的更多信息。

    Catalyst建立在完善的Zipline项目之上。我们尽最大努力减少对通用API的结构更改,以最大限度地兼容现有的交易算法,开发人员知识和教程。

    概观
    易于使用:Catalyst试图摆脱你的方式,以便你可以专注于算法开发。查看提供的交易策略示例。
    通过交易量支持几个顶级加密交易:Bitfinex,Bittrex,Poloniex和Binance。
    安全:您和您只有权访问您帐户的每个交换API密钥。
    通过交换输入所有加密资产的历史定价数据,具有每日和分钟的分辨率。请参阅Catalyst市场覆盖率概述。
    回测和实时交易功能,两种模式之间的无缝过渡。
    性能统计数据的输出基于Pandas DataFrames,可以很好地集成到现有的PyData生态系统中。
    像matplotlib,scipy,statsmodels和sklearn这样的统计和机器学习库支持最先进的交易系统的开发,分析和可视化。
    增加比特币价格(btc_usdt)作为比较交易算法性能的基准。

    环境安装

    Windows要求

    在Windows中,您首先需要安装Microsoft Visual C ++编译器,这取决于您计划使用的Python版本:

    Python 3.5,3.6:Visual C ++ 2015 Build Tools,安装Visual C ++版本14.0。 这是推荐的版本
    Python 2.7:用于Python 2.7的Microsoft Visual C ++编译器,安装Visual C ++版本9.0
    该软件包包含编译器和为Python软件包生成二进制轮所需的系统头集。 如果它尚未在您的系统中,请下载并安装它,然后再继续下一步。 如果您需要其他帮助,或者正在寻找其他版本的Visual C ++ for Windows(仅限高级用户),请单击此链接。

    Installing with pip

    $ pip install enigma-catalyst matplotlib

    交易所数据导入

    导入数据

    在您可以回溯测试算法之前,首先需要加载Catalyst通过称为摄取的过程运行模拟所需的历史定价数据。当您提取数据时,Catalyst会从Enigma服务器(最终将迁移到Enigma Data Marketplace)以压缩形式下载该数据,并将其存储在本地以使其在运行时可用。

    要获取数据,您需要运行如下命令:

    catalyst ingest-exchange -x bitfinex -i btc_usd
    

    这指示Catalyst从Bitfinex交易所下载btc_usd货币对的定价数据(这来自我们想要交易的简单算法btc_usd),我们选择使用Bitfinex交易所的历史定价数据来测试我们的算法。默认情况下,Catalyst假定您需要具有每日频率的数据(每天一个烛台)。如果您想要小频率(每分钟一个蜡烛条),您需要指定如下:

    catalyst ingest-exchange -x bitfinex -i btc_usd -f minute
    
    

    [====================================]摄取bitfinex的每日价格数据:100%
    我们认为,对数据的管理方式有一个高层次的理解非常重要,因此需要进行以下概述:

    定价数据被拆分并打包成捆绑:按时间序列组织的数据块每天在Enigma的服务器上保持最新。 Catalyst下载请求的包并重建硬盘中的完整数据集。
    定价数据以每日和分钟的分辨率提供。这些是不同的捆绑数据集,并单独管理。
    捆绑包是特定于交易所的,因为定价数据特定于每个交易所发生的交易。因此,您必须在摄取数据时指定要从中获取定价数据的交换。
    Catalyst会跟踪所有下载的软件包,因此只需下载一次,并根据需要进行增量更新。
    在实时交易模式下运行时,Catalyst将首先在本地存储的捆绑包中查找历史定价数据。如果缺少任何内容,Catalyst将在交换机上查找最新数据,并将其与本地捆绑包合并,以优化其需要对交换机发出的请求数。

    image.png

    运行策略

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    from logbook import Logger
    
    from catalyst import run_algorithm
    from catalyst.api import (record, symbol, order_target_percent,)
    from catalyst.exchange.utils.stats_utils import extract_transactions
    
    NAMESPACE = 'dual_moving_average'
    log = Logger(NAMESPACE)
    
    
    def initialize(context):
        context.i = 0
        context.asset = symbol('ltc_usd')
        context.base_price = None
    
    
    def handle_data(context, data):
        # define the windows for the moving averages
        short_window = 50
        long_window = 200
    
        # Skip as many bars as long_window to properly compute the average
        context.i += 1
        if context.i < long_window:
            return
    
        # Compute moving averages calling data.history() for each
        # moving average with the appropriate parameters. We choose to use
        # minute bars for this simulation -> freq="1m"
        # Returns a pandas dataframe.
        short_data = data.history(context.asset,
                                  'price',
                                  bar_count=short_window,
                                  frequency="1T",
                                  )
        short_mavg = short_data.mean()
        long_data = data.history(context.asset,
                                 'price',
                                 bar_count=long_window,
                                 frequency="1T",
                                 )
        long_mavg = long_data.mean()
    
        # Let's keep the price of our asset in a more handy variable
        price = data.current(context.asset, 'price')
    
        # If base_price is not set, we use the current value. This is the
        # price at the first bar which we reference to calculate price_change.
        if context.base_price is None:
            context.base_price = price
        price_change = (price - context.base_price) / context.base_price
    
        # Save values for later inspection
        record(price=price,
               cash=context.portfolio.cash,
               price_change=price_change,
               short_mavg=short_mavg,
               long_mavg=long_mavg)
    
        # Since we are using limit orders, some orders may not execute immediately
        # we wait until all orders are executed before considering more trades.
        orders = context.blotter.open_orders
        if len(orders) > 0:
            return
    
        # Exit if we cannot trade
        if not data.can_trade(context.asset):
            return
    
        # We check what's our position on our portfolio and trade accordingly
        pos_amount = context.portfolio.positions[context.asset].amount
    
        # Trading logic
        if short_mavg > long_mavg and pos_amount == 0:
            # we buy 100% of our portfolio for this asset
            order_target_percent(context.asset, 1)
        elif short_mavg < long_mavg and pos_amount > 0:
            # we sell all our positions for this asset
            order_target_percent(context.asset, 0)
    
    
    def analyze(context, perf):
        # Get the quote_currency that was passed as a parameter to the simulation
        exchange = list(context.exchanges.values())[0]
        quote_currency = exchange.quote_currency.upper()
    
        # First chart: Plot portfolio value using quote_currency
        ax1 = plt.subplot(411)
        perf.loc[:, ['portfolio_value']].plot(ax=ax1)
        ax1.legend_.remove()
        ax1.set_ylabel('Portfolio Value\n({})'.format(quote_currency))
        start, end = ax1.get_ylim()
        ax1.yaxis.set_ticks(np.arange(start, end, (end - start) / 5))
    
        # Second chart: Plot asset price, moving averages and buys/sells
        ax2 = plt.subplot(412, sharex=ax1)
        perf.loc[:, ['price', 'short_mavg', 'long_mavg']].plot(
            ax=ax2,
            label='Price')
        ax2.legend_.remove()
        ax2.set_ylabel('{asset}\n({quote})'.format(
            asset=context.asset.symbol,
            quote=quote_currency
        ))
        start, end = ax2.get_ylim()
        ax2.yaxis.set_ticks(np.arange(start, end, (end - start) / 5))
    
        transaction_df = extract_transactions(perf)
        if not transaction_df.empty:
            buy_df = transaction_df[transaction_df['amount'] > 0]
            sell_df = transaction_df[transaction_df['amount'] < 0]
            ax2.scatter(
                buy_df.index.to_pydatetime(),
                perf.loc[buy_df.index, 'price'],
                marker='^',
                s=100,
                c='green',
                label=''
            )
            ax2.scatter(
                sell_df.index.to_pydatetime(),
                perf.loc[sell_df.index, 'price'],
                marker='v',
                s=100,
                c='red',
                label=''
            )
    
        # Third chart: Compare percentage change between our portfolio
        # and the price of the asset
        ax3 = plt.subplot(413, sharex=ax1)
        perf.loc[:, ['algorithm_period_return', 'price_change']].plot(ax=ax3)
        ax3.legend_.remove()
        ax3.set_ylabel('Percent Change')
        start, end = ax3.get_ylim()
        ax3.yaxis.set_ticks(np.arange(start, end, (end - start) / 5))
    
        # Fourth chart: Plot our cash
        ax4 = plt.subplot(414, sharex=ax1)
        perf.cash.plot(ax=ax4)
        ax4.set_ylabel('Cash\n({})'.format(quote_currency))
        start, end = ax4.get_ylim()
        ax4.yaxis.set_ticks(np.arange(0, end, end / 5))
    
        plt.show()
    
    
    if __name__ == '__main__':
    
        run_algorithm(
                capital_base=1000,
                data_frequency='minute',
                initialize=initialize,
                handle_data=handle_data,
                analyze=analyze,
                exchange_name='bitfinex',
                algo_namespace=NAMESPACE,
                quote_currency='usd',
                start=pd.to_datetime('2018-02-07', utc=True),
                end=pd.to_datetime('2018-05-09', utc=True),
            )
       
    

    回测结果

    image.png

    其他

    如果还有什么不懂的,欢迎添加 微信 82789754 咨询
    另外课程有详细的教CATALYST搭建和策略分享
    量化投资与数字货币实战

    更多量化学习资源

    介绍.png
    扫上方二维码,关注公众账号 量化投资学院 ,获取下列免费资源

    • 回复**“热点研报”**,获取近年热点券商金融工程研究报告
    • 回复**“Python3”**,获取Python免费学习教程

    关注StudyQuant

    Enigma- Catalyst

    量化交易龙头

    Enigma是数字货币量化交易的龙头,但Enigma是一个保护数据隐私的分布式计算平台,而在其之上建立的第一个应用Catalyst才是龙头级的量化投资平台,它是用Python编写的加密资产的算法交易市场。我们可以把Enigma理解为就是Catalyst底层的一个计算协议,通过Enigma来获取数据源和对数据的加密计算,而Catalyst是一个应用平台,开放给量化投资者进行数据预测和测试。因为面向投资者,Catalyst提供了丰富的API接口和交易策略的SDK供开发者使用,开发者们可以快速简单的使用这些接口来对交易策略进行开发,并通过Enigma提供的计算来验证其可行性。

    其代币一个作用是是可以作为节点的保证金**,由于Enigma是公链,其**提出的类POS共识机制引入了惩罚机制,保证节点提供有效的数据。**此外,其代币可以作为计算费用,储存、检索、计算数据都需要一定的消耗(类似Gas)。

    Enigma代币去年10月上交易所,随后持续了大概两个月的破发横盘,投资者怨声载道,而在今年一月开始有了爆发性的增长,高点接近20倍的涨幅,随后跟随大盘一路持续下跌,后续的发展还要看其具体的应用效果了。

    Catalyst是一个用Python编写的加密资产的算法交易库。它允许交易策略易于表达,并根据历史数据(每日和分钟的分辨率)进行反向测试,提供有关特定策略性能的分析和见解。 Catalyst还支持加密资产的实时交易,从四个交易所(Binance,Bitfinex,Bittrex和Poloniex)开始,随着时间的推移会增加更多。 Catalyst使用户能够共享和策划数据,并构建有利可图的数据驱动型投资策略。请访问catalystcrypto.io以了解有关Catalyst的更多信息。

    Catalyst建立在完善的Zipline项目之上。我们尽最大努力减少对通用API的结构更改,以最大限度地兼容现有的交易算法,开发人员知识和教程。

    概观
    易于使用:Catalyst试图摆脱你的方式,以便你可以专注于算法开发。查看提供的交易策略示例。
    通过交易量支持几个顶级加密交易:Bitfinex,Bittrex,Poloniex和Binance。
    安全:您和您只有权访问您帐户的每个交换API密钥。
    通过交换输入所有加密资产的历史定价数据,具有每日和分钟的分辨率。请参阅Catalyst市场覆盖率概述。
    回测和实时交易功能,两种模式之间的无缝过渡。
    性能统计数据的输出基于Pandas DataFrames,可以很好地集成到现有的PyData生态系统中。
    像matplotlib,scipy,statsmodels和sklearn这样的统计和机器学习库支持最先进的交易系统的开发,分析和可视化。
    增加比特币价格(btc_usdt)作为比较交易算法性能的基准。

    环境安装

    Windows要求

    在Windows中,您首先需要安装Microsoft Visual C ++编译器,这取决于您计划使用的Python版本:

    Python 3.5,3.6:Visual C ++ 2015 Build Tools,安装Visual C ++版本14.0。 这是推荐的版本
    Python 2.7:用于Python 2.7的Microsoft Visual C ++编译器,安装Visual C ++版本9.0
    该软件包包含编译器和为Python软件包生成二进制轮所需的系统头集。 如果它尚未在您的系统中,请下载并安装它,然后再继续下一步。 如果您需要其他帮助,或者正在寻找其他版本的Visual C ++ for Windows(仅限高级用户),请单击此链接。

    Installing with pip

    $ pip install enigma-catalyst matplotlib

    交易所数据导入

    导入数据

    在您可以回溯测试算法之前,首先需要加载Catalyst通过称为摄取的过程运行模拟所需的历史定价数据。当您提取数据时,Catalyst会从Enigma服务器(最终将迁移到Enigma Data Marketplace)以压缩形式下载该数据,并将其存储在本地以使其在运行时可用。

    要获取数据,您需要运行如下命令:

    catalyst ingest-exchange -x bitfinex -i btc_usd
    

    这指示Catalyst从Bitfinex交易所下载btc_usd货币对的定价数据(这来自我们想要交易的简单算法btc_usd),我们选择使用Bitfinex交易所的历史定价数据来测试我们的算法。默认情况下,Catalyst假定您需要具有每日频率的数据(每天一个烛台)。如果您想要小频率(每分钟一个蜡烛条),您需要指定如下:

    catalyst ingest-exchange -x bitfinex -i btc_usd -f minute
    
    

    [====================================]摄取bitfinex的每日价格数据:100%
    我们认为,对数据的管理方式有一个高层次的理解非常重要,因此需要进行以下概述:

    定价数据被拆分并打包成捆绑:按时间序列组织的数据块每天在Enigma的服务器上保持最新。 Catalyst下载请求的包并重建硬盘中的完整数据集。
    定价数据以每日和分钟的分辨率提供。这些是不同的捆绑数据集,并单独管理。
    捆绑包是特定于交易所的,因为定价数据特定于每个交易所发生的交易。因此,您必须在摄取数据时指定要从中获取定价数据的交换。
    Catalyst会跟踪所有下载的软件包,因此只需下载一次,并根据需要进行增量更新。
    在实时交易模式下运行时,Catalyst将首先在本地存储的捆绑包中查找历史定价数据。如果缺少任何内容,Catalyst将在交换机上查找最新数据,并将其与本地捆绑包合并,以优化其需要对交换机发出的请求数。

    image.png

    运行策略

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    from logbook import Logger
    
    from catalyst import run_algorithm
    from catalyst.api import (record, symbol, order_target_percent,)
    from catalyst.exchange.utils.stats_utils import extract_transactions
    
    NAMESPACE = 'dual_moving_average'
    log = Logger(NAMESPACE)
    
    
    def initialize(context):
        context.i = 0
        context.asset = symbol('ltc_usd')
        context.base_price = None
    
    
    def handle_data(context, data):
        # define the windows for the moving averages
        short_window = 50
        long_window = 200
    
        # Skip as many bars as long_window to properly compute the average
        context.i += 1
        if context.i < long_window:
            return
    
        # Compute moving averages calling data.history() for each
        # moving average with the appropriate parameters. We choose to use
        # minute bars for this simulation -> freq="1m"
        # Returns a pandas dataframe.
        short_data = data.history(context.asset,
                                  'price',
                                  bar_count=short_window,
                                  frequency="1T",
                                  )
        short_mavg = short_data.mean()
        long_data = data.history(context.asset,
                                 'price',
                                 bar_count=long_window,
                                 frequency="1T",
                                 )
        long_mavg = long_data.mean()
    
        # Let's keep the price of our asset in a more handy variable
        price = data.current(context.asset, 'price')
    
        # If base_price is not set, we use the current value. This is the
        # price at the first bar which we reference to calculate price_change.
        if context.base_price is None:
            context.base_price = price
        price_change = (price - context.base_price) / context.base_price
    
        # Save values for later inspection
        record(price=price,
               cash=context.portfolio.cash,
               price_change=price_change,
               short_mavg=short_mavg,
               long_mavg=long_mavg)
    
        # Since we are using limit orders, some orders may not execute immediately
        # we wait until all orders are executed before considering more trades.
        orders = context.blotter.open_orders
        if len(orders) > 0:
            return
    
        # Exit if we cannot trade
        if not data.can_trade(context.asset):
            return
    
        # We check what's our position on our portfolio and trade accordingly
        pos_amount = context.portfolio.positions[context.asset].amount
    
        # Trading logic
        if short_mavg > long_mavg and pos_amount == 0:
            # we buy 100% of our portfolio for this asset
            order_target_percent(context.asset, 1)
        elif short_mavg < long_mavg and pos_amount > 0:
            # we sell all our positions for this asset
            order_target_percent(context.asset, 0)
    
    
    def analyze(context, perf):
        # Get the quote_currency that was passed as a parameter to the simulation
        exchange = list(context.exchanges.values())[0]
        quote_currency = exchange.quote_currency.upper()
    
        # First chart: Plot portfolio value using quote_currency
        ax1 = plt.subplot(411)
        perf.loc[:, ['portfolio_value']].plot(ax=ax1)
        ax1.legend_.remove()
        ax1.set_ylabel('Portfolio Value\n({})'.format(quote_currency))
        start, end = ax1.get_ylim()
        ax1.yaxis.set_ticks(np.arange(start, end, (end - start) / 5))
    
        # Second chart: Plot asset price, moving averages and buys/sells
        ax2 = plt.subplot(412, sharex=ax1)
        perf.loc[:, ['price', 'short_mavg', 'long_mavg']].plot(
            ax=ax2,
            label='Price')
        ax2.legend_.remove()
        ax2.set_ylabel('{asset}\n({quote})'.format(
            asset=context.asset.symbol,
            quote=quote_currency
        ))
        start, end = ax2.get_ylim()
        ax2.yaxis.set_ticks(np.arange(start, end, (end - start) / 5))
    
        transaction_df = extract_transactions(perf)
        if not transaction_df.empty:
            buy_df = transaction_df[transaction_df['amount'] > 0]
            sell_df = transaction_df[transaction_df['amount'] < 0]
            ax2.scatter(
                buy_df.index.to_pydatetime(),
                perf.loc[buy_df.index, 'price'],
                marker='^',
                s=100,
                c='green',
                label=''
            )
            ax2.scatter(
                sell_df.index.to_pydatetime(),
                perf.loc[sell_df.index, 'price'],
                marker='v',
                s=100,
                c='red',
                label=''
            )
    
        # Third chart: Compare percentage change between our portfolio
        # and the price of the asset
        ax3 = plt.subplot(413, sharex=ax1)
        perf.loc[:, ['algorithm_period_return', 'price_change']].plot(ax=ax3)
        ax3.legend_.remove()
        ax3.set_ylabel('Percent Change')
        start, end = ax3.get_ylim()
        ax3.yaxis.set_ticks(np.arange(start, end, (end - start) / 5))
    
        # Fourth chart: Plot our cash
        ax4 = plt.subplot(414, sharex=ax1)
        perf.cash.plot(ax=ax4)
        ax4.set_ylabel('Cash\n({})'.format(quote_currency))
        start, end = ax4.get_ylim()
        ax4.yaxis.set_ticks(np.arange(0, end, end / 5))
    
        plt.show()
    
    
    if __name__ == '__main__':
    
        run_algorithm(
                capital_base=1000,
                data_frequency='minute',
                initialize=initialize,
                handle_data=handle_data,
                analyze=analyze,
                exchange_name='bitfinex',
                algo_namespace=NAMESPACE,
                quote_currency='usd',
                start=pd.to_datetime('2018-02-07', utc=True),
                end=pd.to_datetime('2018-05-09', utc=True),
            )
       
    

    回测结果

    image.png

    其他

    如果还有什么不懂的,欢迎添加 微信 82789754 咨询
    另外课程有详细的教CATALYST搭建和策略分享
    量化投资与数字货币实战

    更多量化学习资源

    介绍.png
    扫上方二维码,关注公众账号 量化投资学院 ,获取下列免费资源

    • 回复**“热点研报”**,获取近年热点券商金融工程研究报告
    • 回复**“Python3”**,获取Python免费学习教程

    关注StudyQuant

    展开全文
  • Python量化投资实战线下班在大家的期待下开课啦!允许小编简单的介绍下Python量化投资实战课程。一、课程内容:1、量化投资基础主要涵盖了量化领域的必备知识:包括:基本面分析、技术分析、数量分析、固定收益、资产...
  • Backtrader 教程 — Python 量化投资实战教程(1) Python 量化投资实战教程(2) —MACD策略 Python 量化投资实战教程(3) —A股回测MACD策略 Python 量化投资实战教程(4) —KDJ 策略 Python 量化投资实战教程(5) — A股...
  • 原标题:Python量化投资实训营 时间:基础班:2018.2.2~2018.2.7(五天)地点:清华大学深圳研究生院量化研究中心在2017年,已经成功举办3期线下营队公益支持方为清华大学深圳研究生院量化研究中心配合大鱼金融联手...
  • Backtrader 教程 — Python 量化投资实战教程(1) Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库:https://github.com/Ckend/pythondict-quant 今天我们...
  • Python量化投资与股票投资实战 毕业于利物浦大学数学学院金融数学专业,获...
  • Backtrader 教程 — Python 量化投资实战教程(1) Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Python 量化投资实战教程(4) —KDJ 策略 Github仓库:...
  • Backtrader 教程 — Python 量化投资实战教程(1) Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库:https://github.com/Ckend/pythondict-quant 上次,...
  • Backtrader 教程 — Python 量化投资实战教程(1) Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库:https://github.com/Ckend/pythondict-quant 上一回,...
  • 课程介绍 课程内容的设置或者教学目标 课程特色: 1. 项目化教学。每位同学在课程结束时,都能有自己的策略。... 多个A股量化投资策略实证,分享 策略、回测、数据可视化、实盘接口等解决方案及代码
  • 初学python量化投资,第一个策略 我从去年开始炒股,疫情期间又在家里学了学python,开学以后看了一本利用excel的量化投资书籍,所以想自己在python上捣鼓捣鼓 数据来源 量化第一步,首先要搞到数据,刚开始我上炒股...
  • Python量化投资与期货实战 课程概要 越来越多的投资者和机构对期货投资程序化交易产生了兴趣。在成熟的正规期货市场上,有着不少的神话故事,如1、"中国期市第一人"王宝峰:连续22年盈利 2、 伊士顿高频交易获利20亿...
  • ++++++++++++++++++++++++++++++++++++++++++++++++++++++Python是一种多功能语言。...Python在量化领域的现状就跟JavaScript在web领域无可撼动的地位一样,Python也已经在金融量化投资领域占据了重要位置,...
  • 原标题:【Python量化投资】趋向系统指标策略 ADX、DMI指标用于股票池(附源码) [什么是ADX]ADX(average directional indicator) 平均趋向指数,常用的趋势衡量指标。通常与趋向系统(DMI)一起使用,利用多空趋向...
  • 原标题:基于python的开源量化交易,量化投资架构github地址:https://github.com/bbfamily/abuabu能够帮助用户自动完善策略,主动分析策略产生的交易行为,智能拦截策略生成的容易失败的交易单。现阶段的量化策略...
  • 往期推荐量化投资原来这么简单(1)量化投资原来这么简单(2)—MACD策略(+26.9%)量化投资原来这么简单(3) —A股回测MACD策略Python 量化投资原来这么简单(4) —KD...
  • 初学python量化投资(二) MACD 小白刚开始炒股,学了看K线和均线之后,再想学指标估计就是MACD了,MACD的图形也比较好理解,一条快线(DIF),大于零说明多头强,小于零说明空头暂时nb一些,一条慢线(DEA),实际...
  • Python量化投资——利用tushare和mplfinance生成K线图tushare介绍mplfinance介绍获取K线数据处理数据数据的可视化更多的效果 tushare介绍 tushare是一个立足于国内的金融数据包。通过它可以相当容易地获取包括股票、...
  • 原标题:零基础学Python量化投资,超值线上课程反复回看超值网络课程量化投资是一种严谨、系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析、计算机编程技术、金融工程...
  • 于是呢,想了一下,想学习python量化投资,毕竟我是学金融的嘛,还是用python解决一下本专业的问题吧。 小目标: 2019/8/31日之前,学习完python量化交易这本书。 后续大部分知识记录均来自这本书或其他网络,书籍...
  • Python量化投资与A股量化 -论数据预处理的重要性前言量化投资介绍前导多因子选股策略多因子模型理论背景单因子测试分层回溯法市盈率的用法PE因子分组回测PE单因子分组回测结果单因子分组回测(数据预处理后结果)单...
  • 本文选自《Python量化投资:从基础到实战》一书。作为投资者,我们常听到的一句话是“不要把鸡蛋放入同一个篮子中”,可见分散投资可以降低风险,但如何选择不同的篮子、每个篮子放多少鸡蛋,便是见仁见智的事情了...
  • 原标题:零基础学Python量化投资,超值线上课程反复回看超值网络课程量化投资是一种严谨、系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析、计算机编程技术、金融工程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,556
精华内容 2,622
关键字:

python量化投资

python 订阅