0%

什么是ETF套利

ETF套利,是指投资者可以在一级市场通过指定的ETF交易商向基金管理公司用一篮子股票组合申购ETF份额或把ETF份额赎回成一篮子股票组合,同时又可以在二级市场上以市场价格买卖ETF。

假设在某个时段中,某只ETF成分股暴跌,使得该ETF的净值迅速走低,但该ETF的市场价格未能及时跟上,两者短暂地出现了一个价差,这时就可以选择买入ETF一篮子股票组合申购成ETF(以净值计价),然后将ETF在二级市场上出售(以市场价格计价),从而实现低买高卖,获取价差。

ETF套利的原理

一切要从ETF套利交易开始说起。这项交易模式在国内券商中比较普遍,甚至大型的私募基金也在做这种交易。

ETF套利交易原理通俗地说,就是一价原则,同一件产品在不同的市场有不同的价格,通过利用这些价差来获得盈利。比如上证50ETF对应的是上证50指数(1594.903, -6.48, -0.40%)成份股所组成的一揽子股票组合,组合中各只成份股权重不同,而不同的权重造成了一个兑换比例,投资者可以通过这种比例获得ETF份额,同时这些ETF份额也可以像股票一样在二级市场上交易。

于是ETF套利就有两种交易顺序,一种是从股票二级市场购入一揽子股票,按照一定比例兑换成ETF份额,然后在ETF二级市场上卖出份额,这样的前提是一揽子股票价格比ETF价格低,所谓溢价;另一种则刚好相反,从ETF二级市场买入份额,按照一定比例兑换成一揽子股票,再拿到股票二级市场卖出,这样的前提是ETF价格低于一揽子股票价格,所谓折价。

以光大证券操作ETF套利为例,8月16日上午,套利交易指令已经成交了72.7亿元股票,这说明光大证券正在进行溢价套利,希望用一揽子股票组合兑换ETF份额,并卖出ETF份额。

该公司公告称,捅娄子的策略投资部在当天卖出了18.5亿元的50ETF、180ETF,如此计算尚有近54亿元的误操作股票没有处理,按照上述套利原则,这有可能是当日的溢价套利空间已经消失。

ETF套利四大技巧

交易型开放式指数基金(ETF)综合了开放式和封闭式基金的优点,既可向基金公司申购或赎回基金份额,又可像封闭式基金一样在二级市场按照市价进行买卖。由于跨市场间交易形式和交易机制的不同,基金一级市场份额净值和二级市场买卖价格间会存在价差的情况,这样套利空间应运而生。

瞬间套利

ETF基本的套利交易主要有两种。一是折价套利,当ETF基金份额二级市场价格小于基金份额净值时,可通过二级市场买入ETF,之后在一级市场赎回一篮子股票,卖出股票组合获取现金。另外一种是溢价套利,和折价套利的方向相反,当ETF二级市场价格超过份额净值时,可买入股票组合,一级市场申购基金份额,之后在二级市场卖出获取现金。这两种就是ETF最常规的套利模式——瞬间套利。需要注意的是由于ETF申购赎回都有最小规模限制,例如100万份,瞬间套利并不适合中小投资者操作。

延时套利

作为瞬间套利的延伸,ETF套利可以采取延时套利模式,也就是说投资者“非同步”地买卖ETF和一篮子股票,完成一圈完整交易的时间较长,这类套利其实更像是T+0交易。

充分利用ETF交易规则,在相对低点,申购或买入ETF,在相对高点,再将ETF卖出或赎回。和瞬间套利相比,这类套利能否成功更看重指数短期的走势,风险更大。在实际操作中,为了确保收益的稳定性,减少风险,一般是当天完成一个交易轮回。

事件套利

第三类ETF套利是事件套利。当ETF标的指数成分股停牌或涨跌停时,可利用ETF进行事件套利,套取看涨的股票或者减持看空的股票。事件套利的收益取决于停牌成分股的个体因素,具体包括两种模式。如果预计成分股在复牌后大幅度上涨,折价套利具体操作是在二级市场买入ETF,在一级市场进行赎回,得到一篮子股票组合,留下停牌股票,卖出其他股票。   例如,2008年10月9日长安汽车停牌,2009年2月16日复牌,期间深100指数涨幅32%,汽车板块因国家政策鼓励涨幅更甚,预计长安汽车开盘后会涨停复牌,投资者二级市场成功买入可能性较低。可通过赎回深100ETF,按停牌前价格3.67元获得长安汽车股票,复牌后该股有7个涨停板。如果预估成分股在复牌后会大幅度下跌,溢价套利具体操作是在二级市场上买入其他成分股组合和利用“允许现金替代”的标志,用现金来替代停牌股票,然后在一级市场申购ETF,然后在二级市场上卖出ETF。2008年的“长电事件”是这种套利的典型案例,当年5月8日,长江电力因整体上市开始停牌,此后沪深股市大幅下挫,上证指数跌幅近50%,为了降低损失,将长电套现,可先从二级市场市价买入上证50ETF其他49只股票,之后一级市场申购上证50ETF份额,再在二级市场卖出上证50ETF,顺利将长江电力出货。

期现套利

股指期货和融资融券的推出,为做空A股市场提供了较好的工具。沪深指数期货是国内A股市场第一只也是唯一一只指数期货品种。沪深300指数包含的成分股多达300只,采用完全复制法难道较大,ETF根据标的指数,且能在二级市场交易,是期现套利中较好的现货工具。由于技术上的原因,国内目前还没有直接标的沪深300指数的ETF,多数进行期现套利的投资者采用的是“75%上证180ETF+25%深证100ETF”复合指数ETF作为现货替代品。

自从2010年4月16日股指期货上市以来,上证180ETF和深100ETF二级市场成交量大幅激增。例如,股指期货上市初期,期货相对现货存在着一定的溢价,所谓的套利基本都是买入ETF,卖出股指期货合约,而在期现价差消除后,套利平仓盘卖出ETF,买入股指期货合约。

ETF套利与衍生品

A股首只股票指数期货品种沪深300期货自推出以来,成交活跃,已成为期货市场的主力品种之一。理论上来讲,剔除时间价值后,期货应与现货具有完全相同的走势。但事实上,由于期货投资者与现货投资者大多情况下分属两个投资群体,其对市场事件会有不同程度的解读,从而造成期货价格与现货价格的偏离。

一旦价格偏离幅度大于套利成本,则套利投资者可以通过买入低估品种,同时卖出高估品种锁定价差。具体而言,当期货价格高于现货时,投资者可以通过买入沪深300ETF,卖出期货合约,锁定溢价,也就是我们常说的正向套利;相反,当期货价格低于现货时,投资者则可以通过买入期货,卖出沪深300ETF的方式获得反向套利折价。

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

概念

证券公司PB业务(Prime Broker),即主经纪商业务,也称为主券商业务或大宗经纪业务,是指证券公司向专业机构投资者和高净值客户等提供集中托管清算、后台运营、研究支持、杠杆融资、证券拆借、资金募集等一站式综合金融服务。

模式

相关文档

券商PB业务历史演进及对私募基金的影响浅析
https://wenku.baidu.com/view/c9a4952ae45c3b3566ec8b2e.html

PB业务整体情况介绍及相关建议
https://wenku.baidu.com/view/ae353b446529647d26285208.html

PB系统介绍
https://wenku.baidu.com/view/d55488ca376baf1ffd4fad8f.html

我国证券公司发展PB业务现状及建议
https://wenku.baidu.com/view/a794f2475022aaea998f0fba.html

https://www.zhihu.com/question/41086914/answer/98165214

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

Level 1 Market Data

Basic market data is known as level 1 market data, and includes the following information:

  • Bid price: The highest price that a trader is willing to buy an asset at.
  • Bid size: The number of shares, forex lots or contracts that are available at the bid price.
  • Ask price: The lowest price that a trader is willing to sell an asset at.
  • Ask size: The number of shares, forex lots or contracts that are available at the ask price.
  • Last price: The price at which the most recent trade was completed.
  • Last size: The number of shares, forex lots or contracts that were traded in the most recent trade.

Level 1 market data provides all of the information needed to trade using most trading systems. If you are trading a price action or indicator based strategy, then Level 1 market data should satisfy your informational needs.

Scalpers, and traders who trade based on changes in how other traders are bidding and offering (offer and ask are used interchangeably), will need Level 2 market data, which provides multiple levels of bids and offers.

Level 2 Market Data

Additional market data is known as level 2 market data, the order book, or the depth of market, and includes the following additional information:

  • Highest bid prices: The highest 5 to 15 prices (depending upon the market) where traders are willing to buy an asset. This means you not only see the current bid, but also all the bids currently below it. In actively traded stocks, there will typically be bids every $0.01 below the current bid, and in actively traded futures, there will typically be a bid each tick below the current bid. If there is a gap between the current bid and next bid, that typically means the stock or contract may experience a larger bid/ask spread and less volume.

  • Bid sizes: The number of shares, forex lots or contracts that are available at each of the bid prices.

  • Lowest ask prices: The lowest 5 to 15 prices (depending upon the market) where traders are willing to sell an asset. This means you not only see the current ask, but also all the asks above the current ask. In actively traded stocks, there will typically be asks every $0.01 above the current ask, and in actively traded futures, there will typically be an ask each tick above the current ask. If there is a gap between the current ask and next ask, that typically means the stock or contract may experience a larger bid/ask spread and less volume.

  • Ask sizes: The number of shares, forex lots or contracts that are available at each of the ask prices.

Level 2 market data provides the additional information that is needed to trade based on changes that occur in the bids and offers. Level 2 market data is also known as the order book, because it shows the orders that are currently pending for the market. It is also known as the depth of market, or market depth, because it shows the number of contracts (or shares or lots) that are available at each of the bid and ask prices.

Order Book

An order book is the list of orders (manual or electronic) that a trading venue (in particular stock exchanges) uses to record the interest of buyers and sellers in a particular financial instrument. A matching engine uses the book to determine which orders can be fulfilled i.e. what trades can be made. --wikipedia

Level2行情

买卖行情

买入委托和卖出委托前10档的委托价和委托量,投资者可以看得更远,哪个价位有阻力?哪个价位有支撑?哪个价位有大笔挂单,一目了然。

总买总卖

当前全部买入(卖出)委托的总量和加权均价,据此投资者可以判断盘中的支撑位(委买均价)、阻力位(委卖均价)、支撑力度(委买总量)、阻力大小(委卖总量),还可以根据这些数据的动态变化分析多空双方力量的变化,寻找行情的转折点

成交明细

在Level-2之前,沪深交易所提供的都是行情快照,大家看到的分笔成交其实是两次快照期间累计的成交量和最后一笔的价格,而逐笔成交则是真实的每笔成交价和成交量的明细数据。逐笔成交极大地提高了行情的透明度。

买卖队列

买一或卖一的前50笔委托单明细,根据委托单的大小或委托单是否有规律,可以判断委托是机构、大户、或散户所为。

逐笔数据与分笔数据的根本区别

国内的Tick数据指的是 按固定时间间隔取个快照记录下来

  1. 逐笔成交一般显示的数据格式为在几分几秒以多少价格分几笔成交了多少手。在这里我们要注意的是成交手数有时候是带小数点的,这是因为股票买进的股数最少是100股,委托的股数也应是100的整数倍,卖出却没有限制,因此成交的手数会有小数点。另外一点就是如果在成交价格和手数前面没有显示,则一半是默认的1笔。
  2. 分时成交一般显示的数据格式为在几分几秒以多少价格成交了多少手。这里需要注意的是成交手数永远是整数,不会出现小数点数字。其中现手累计数就是总手数。总手数也叫做成交量。有些软件在现量后面标注蓝色S和红色B,前者代表卖,后者代表买。目前市面上出现了LEVEL-2行情数据,比较具有代表性的是大智慧,在那里把分笔成交是叫分时成交,实际上就是我们在普通分析软件上F1看到的“分笔成交明细”,但是他和LEVEL-2行情数据提供的逐笔成交明细是不一样的。
  3. 分笔数据由于是合成混合数据,它是以最后1笔的买卖方向来表示该时间内(3秒或者6秒)的买卖方向,所以误差很大。(见下图说明)
  4. 一个孤独的数字是缺乏意义的,但是一些连续的数字则是充满想像的。一般来说,成交笔数越少,金额越大,表示成交比较强势,反之是弱势。尤其是成交手数比较大而集中的时候,表示有大资金活跃迹象,该股出现价格异动的概率就大,应该引起投资者的注意。而如果半天也没人买或者都是一些小单子在交易,则至少短期不大可能成为好股。
  5. 交易数据三要素----成交量、成交价格和成交笔数。不陌生的是前面两个,笔数就是交易批次。在成交量一定的前提下,笔数少说明交易力度强,反之就弱。笔数的变动与数量方向一致,交易为常态,反之就是非常态。

引用

https://www.thebalance.com/order-book-level-2-market-data-and-depth-of-market-1031118

https://baike.baidu.com/item/Level-2

https://www.zhihu.com/question/26950456

http://www.cnblogs.com/chuncn/archive/2009/03/13/1410144.html

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

迅投交易终端——股票期货一体交易

迅投交易终端是一款集股票交易、期货交易、组合交易为一体的智能化金融交易工具软件。其开放式的策略接口、智能算法交易、组合交易管理、多账户管理、高度自定义交易界面、完整数据导入导出功能,为大资金客户、机构客户和自动化交易客户提供了一支虚拟交易团队,高效、精准、优秀地完成每一个任务指令,为用户做多品种交易、大资金分批建仓、对冲套利交易提供极大的便利性,是投资者最强大的交易助手。

策略接口:

√ 开放的策略交易接口,无缝对接多种研发平台;
√ 迅投解决交易周边问题,复杂策略高效执行;
√ 策略与交易安全隔离,核心策略安全有保障。

智能算法交易:

√ 一键智能下单,软件自动下单、撤单、追单,减少人为操作失误;
√ 支持多种算法交易策略,有效控制冲击成本、减少交易滑点;
√ 各种策略参数在交易界面灵活设置,方便调用;
√ 自动化执行与人工监控相结合,交易任务高效有序完成。

组合交易管理:

√ 完美股票组合导入导出,支持多篮子股票并行操作;
√ 配合高效算法交易模块,一键轻松实现一篮子股票的批量交易,自动下单、撤单、追单;
√ 支持多种策略快速下达组合交易任务;
√ 支持预设多种手动补单策略;
√ 篮子交易任务过程动态可视、人为可控。

多账户管理:

√ 多账户统一管理,实现多个账户的登录、委托、撤单、查询等功能;
√ 分组管理、分组交易、批量下单;
√ 支持多种交易任务分配方式;
√ 支持跨公司账户交易管理。

高度自定义交易界面:

√ 所有模块随意拖拽、组合、定制,打造独一无二的自定义交易界面;
√ 支持下单面板快捷复制,多品种交易尽在掌握;
√ 单面板一键快捷下单,前所未有的轻松交易体验。

完整数据导入导出:

√ 支持多种格式的交易、分析数据导入导出,为投资者的交易分析、交易策略实现提供最大的便利性。

原文地址: http://www.thinktrader.net/product/index.html

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

启动jupyter遇到的问题
```
Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;
```
原因是因为spark依赖的scala版本与系统的不匹配,我的系统环境中scala版本是2.11.11,spark2.2.0目录下jars的scala版本是2.11.8
Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。

Anaconda 安装包可以到 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下载。

TUNA 还提供了 Anaconda 仓库的镜像,运行以下命令:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

conda config --set show_channel_urls yes

说明:

conda-forge:

A community led collection of recipes, build infrastructure and distributions for the conda package manager.

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

搭建github博客,参考如下步骤

https://pages.github.com/

注册域名,修改域名DNS地址

找个域名服务商注册个域名,我使用的是godaddy,如果以后需要指向国内空间,建议在国内域名服务商注册。

注册好域名后,可以直接将域名cname到github博客地址,也可以使用dnspod.com的dns解析域名,在域名管理中把dns地址修改dnspod的dns:

    a.dnspod.com
    b.dnspod.com
    c.dnspod.com

然后需要在github上做个设置,把域名绑定到github账号上,否则直接访问域名会报404,具体设置步骤如下:

https://help.github.com/articles/adding-or-removing-a-custom-domain-for-your-github-pages-site/

使用hexo管理博客

Hexo是一个简单、快速、强大的基于 Github Pages 的博客发布工具,支持Markdown格式,有众多优秀插件和主题。

hexo安装步骤参考:

https://hexo.io/

推荐next博客主题,我的博客就是使用的这个主题,地址是:

https://github.com/iissnan/hexo-theme-next

设置_config.yml和github sshkey

deploy:
  type: git
  repo: https://github.com/YourgithubName/YourgithubName.github.io.git
  branch: master

hexo发布时会把更新提交到仓库,所以需要设置github sshkey

发布文章

基本命令如下:

进入blog目录下,执行如下命令创建一篇博客

hexo new post 文章标题

创建好后可以在markdown工具中编写文章,macbook下推荐用MWeb来写博客,MWeb有两种模式:文档库和外部模式,使用外部模式到blog目录下就可以编写了

编写好博客后发布:

hexo d -g

等待几秒中后刷新博客地址就可以看到更新了。

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

基础概念

  • 证券市场的交易机制

    分为报价驱动市场(Quote-driven Market 和订单驱动市场(Order-driven Market)两类,前者依赖做市商提供流动性,后者通过限价单订单提供流动性,交易通过投资者的买进委托和卖出委托竞价所形成。中国的证券市场属于订单驱动市场,包括股票市场和期货市场。

  • 金融市场微观结构理论

    是对金融市场上金融资产的交易机制及其价格形成过程和原因进行分析。一般认为该理论产生于1960年代末,德姆塞茨1968年发表的论文《交易成本》奠定了其基础。

  • 订单簿(order book)

  • 信息簿(MessageBook)

    包括最明细的订单撮合数据,包括每个订单的下单量、成交价、订单类型等信息

  • 对冲

金融学上,对冲(hedge)指特意减低另一项投资的风险的投资。它是一种在减低商业风险的同时仍然能在投资中获利的手法。一般对冲是同时进行两笔行情相关、方向相反、数量相当、盈亏相抵的交易。行情相关是指影响两种商品价格行情的市场供求关系存在同一性,供求关系若发生变化,同时会影响两种商品的价格,且价格变化的方向大体一致。方向相反指两笔交易的买卖方向相反,这样无论价格向什么方向变化,总是一盈一亏。当然要做到盈亏相抵,两笔交易的数量大小须根据各自价格变动的幅度来确定,大体做到数量相当。

期货

  • 合约

指由期货交易所统一制订的、规定在将来某一特定的时间和地点交割一定数量和质量实物商品或金融商品的标准化合约。通常所说的期货就是指期货合约。

  • 主力合约

指的是成交量最大的合约。因为它是市场上最活跃的合约,所有投机者基本上都在参与这个合约。也有说法是主力合约是持仓量最大的合约,因为通常来讲,持仓量最大的合约也是成交量最大的合约。

  • IF、IH、IC

IF:(share price)Index Future,直译就是股指期货,标的物是沪深300指数。命名来自英文。
IH:I表示股指期货,H是“沪”的拼音第一个字母。标的物是上证50。命名中英混杂。
IC:I表示股指期货,C是China的第一个字母,标的物是中证500。命名更是不伦不类。

  • Open Interest

未平仓合约,持仓兴趣

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

执行命令:

pip install pymssql

报错信息如下:

  Running setup.py install for pymssql ... error
    Complete output from command /home/lthpc/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-cpwncwyq/pymssql/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-4l_hdx9q-record/install-record.txt --single-version-externally-managed --compile:
    setup.py: platform.system() => 'Linux'
    setup.py: platform.architecture() => ('64bit', 'ELF')
    setup.py: platform.linux_distribution() => ('debian', 'stretch/sid', '')
    setup.py: platform.libc_ver() => ('glibc', '2.2.5')
    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include']
    setup.py: library_dirs = ['/usr/local/lib']
    running install
    running build
    running build_ext
    cythoning _mssql.pyx to _mssql.c
    warning: _mssql.pyx:143:4: Exception already a builtin Cython type
    building '_mssql' extension
    creating build
    creating build/temp.linux-x86_64-3.6
    gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I/home/lthpc/anaconda3/include/python3.6m -c _mssql.c -o build/temp.linux-x86_64-3.6/_mssql.o -DMSDBLIB
    _mssql.c:435:22: fatal error: sqlfront.h: No such file or directory
    compilation terminated.
    error: command 'gcc' failed with exit status 1

google得到以下解决办法:

https://stackoverflow.com/questions/17368964/trying-to-install-pymssql-on-ubuntu-12-04-using-pip

尝试执行命令安装FreeTDS依赖包:

sudo apt-get install freetds-dev

如果安装过程出现依赖包版本的问题请先更新ubuntu软件源

sudo apt-get update

再次执行pymssql,安装成功:

$ pip install pymssql
Collecting pymssql
  Using cached pymssql-2.1.3.tar.gz
Building wheels for collected packages: pymssql
  Running setup.py bdist_wheel for pymssql ... done
  Stored in directory: /home/lthpc/.cache/pip/wheels/c1/1e/75/bc600eb8a5c9ed77fb1edf15ae5a48b5b427b0390c9a7c9dff
Successfully built pymssql
Installing collected packages: pymssql
Successfully installed pymssql-2.1.3
Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant

docker启动Grafana + Influexdb

docker run -d \
  --name docker-statsd-influxdb-grafana \
  -p 3003:3003 \
  -p 8083:8083 \
  -p 8086:8086 \
  -p 22022:22 \
  -p 8125:8125/udp \
  samuelebistoletti/docker-statsd-influxdb-grafana:latest

设置InfluxDB

打开 http:localhost:8083,设置用户名密码

Username: root
Password: root
Port: 8086

设置Grafana

打开http:localhost:3003,登录用户名密码为

Username: root
Password: root

登录之后按步骤设置数据源

Url: http://localhost:8086
Database:	telegraf
User: telegraf
Password:	telegraf

安装并设置TeleGraf

下载地址:https://portal.influxdata.com/downloads

设置

/etc/telegraf/telegraf.conf
修改influxdb地址,用户名及密码,设置hostname

重启服务

service telegraf restart

导入Grafana Dashboard

下载最新版本的dashboard配置:
https://grafana.com/dashboards/1443/revisions

在grafana的新建dashboard并导入配置,完成。

注意

docker内部已经启动了telegraf,如果不需要的话可以停掉,在多台服务器上安装并配置Telegraf写入同一Influxdb就可以实现对集群进行系统监控。

参考

  1. 使用 Grafana、collectd 和 InfluxDB 打造现代监控系统
  2. docker-statsd-influxdb-grafana
  3. Send CollectD metrics to InfluxDB
Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant