V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
1722332572
V2EX  ›  Python

配对交易-低风险统计套利量化交易 Python 实战

  •  
  •   1722332572 · 2020-04-14 22:03:03 +08:00 · 3480 次点击
    这是一个创建于 1719 天前的主题,其中的信息可能已经有所发展或是发生改变。

    配对交易简介

    配对交易是指八十年代中期华尔街著名投行 Morgan Stanley 的数量交易员 Nunzio Tartaglia 成立的一个数量分析团队提出的一种市场中性投资策略,其成员主要是物理学家、数学家、以及计算机学家。

    Ganapathy Vidyamurthy 在《 Pairs Trading: Quantitative Methods and Analysis 》一书中定义配对交易为两种类型:一类是基于统计套利的配对交易,一类是基于风险套利的配对交易。

    基于统计套利的配对交易策略是一种市场中性策略,具体的说,是指从市场上找出历史股价走势相近的股票进行配对,当配对的股票价格差( Spreads )偏离历史均值时,则做空股价较高的股票同时买进股价较低的股票,等待他们回归到长期均衡关系,由此赚取两股票价格收敛的报酬。

    数据分析

    数据来自交易所:币安,数据下载:http://www.tf86.com/binance/

    数据包括几种常见数据货币每个小时的价格,每一种数字火币的交易记录有 20000 条。 如下图所示:

    具体的数据如下图所示:

    数据处理

    因为每种数字货币的价格不一样,为了体现出他们的关联性,首先要进行归一化操作,将价格归一化处理。这里采用的是 sklearn 中的 MinMaxScaler 。

    ## 节选代码
    from sklearn.preprocessing import MinMaxScaler
    min_max_scaler = MinMaxScaler()
    np_list=np.asarray(data_items).reshape(-1,1)
    X_train_minmax = min_max_scaler.fit_transform(np_list)
    
    

    归一化之后,基于 matplotlib 进行可视化

    肉眼可见,最上面两个曲线之间有一定的关联性,两者在分离之后多次汇合,接下来借助协方差来评估二者之间的关联度。

    模型实现

    协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

    采用 numpy 中的 cov 函数来实现协方差的计算。

    import numpy as np
    np.cov(x,y)
    

    输出样例:

    [[ 9.44749900e-09 -4.05910662e-09]
     [-4.05910662e-09  3.38730102e-08]]
    

    效果评估

    4 个数字货币的交易记录 其中 0,1 之间有很高的关联度

    可以在两个价格分离的时候,买入低价的 A,卖出高价的 B,当二者价格重新回归的时候平仓,即可以获得盈利。

    相关知识

    配对交易: https://wiki.mbalib.com/wiki/%E9%85%8D%E5%AF%B9%E4%BA%A4%E6%98%93

    币安: https://www.binance.com/cn/register?ref=23297069

    协方差: https://www.zhihu.com/question/20852004

    相关教程

    sklearn:http://sklearn123.com/

    Python:http://pythonok.com/

    Pytorch:http://pytorch123.com/

    8 条回复    2020-04-15 09:46:51 +08:00
    andy101wong
        1
    andy101wong  
       2020-04-14 22:05:57 +08:00
    配对交易,嗯,楼主你等等,我明天再来和你说配对交易是怎么破产的。
    1722332572
        2
    1722332572  
    OP
       2020-04-14 22:07:53 +08:00
    @andy101wong 为何要明天,不如今晚。
    jarry777
        3
    jarry777  
       2020-04-14 22:26:28 +08:00
    找出历史股价走势相近的股票,还需要用 Python 么,麻烦下载个同花顺,点击工具栏上的“预测”。
    arthurire
        4
    arthurire  
       2020-04-14 22:31:56 +08:00
    难点不是 Pair Trading,而是提前想好何时采用 Pair Trading,还有就是爆仓了在哪里跳楼.
    chen1164162915
        5
    chen1164162915  
       2020-04-14 22:40:55 +08:00
    跳楼前记得发个帖子 警示后人
    randm
        6
    randm  
       2020-04-15 09:08:51 +08:00
    17 年入币圈至今,每年正收益,17/18 区块链元年不说,胆有多大赚的多大,19/20 年收益都翻倍了,从最开始分钟线到小时线再到日线,目前是看周线在玩,网格交易,向上偏离均线就慢慢卖,向下偏离就慢慢买,只玩几个大币种现货。潜伏在几个交易所量化群,火币,中币等,能以年为单位赢的真不多,耗费了青春,蹉跎了岁月,养活了交易所
    1722332572
        7
    1722332572  
    OP
       2020-04-15 09:45:16 +08:00
    @randm 每年正收益不香吗?
    1722332572
        8
    1722332572  
    OP
       2020-04-15 09:46:51 +08:00
    @jarry777 多谢,已经下载同花顺,学习中。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1216 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:07 · PVG 02:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.