0%

基础概念

  • 证券市场的交易机制

    分为报价驱动市场(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

jupyter notebook extensions 安装

pip方式安装

pip install jupyter_contrib_nbextensions

或者通过github master branch安装

pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master

Conda方式安装

conda install -c conda-forge jupyter_contrib_nbextensions

通过github 仓库安装

git clone https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git
pip install -e jupyter_contrib_nbextensions

常用插件列表

全部jupyter插件列表在这里:

http://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions.html

我觉得有用的插件列表:

  • Autopep8

    格式化代码插件

  • Codefolding 和 Codefolding in Editor

    折叠代码插件

  • Collapsible Headings

    Collapsible Headings icon
    Allows notebook to have collapsible sections, separated by headings

  • contrib_nbextensions_help_item:帮助

  • Drag and Drop

    This extension allows dragging&dropping images from the desktop or other programs into a notebook.

  • ExecuteTime:

    Display when each cell has been executed and how long it took

  • Freeze

    Freeze cells (forbid editing and executing) or make them read-only

  • highlighter

    markdown内容高亮

  • Hinterland

    实时的自动补全,很不错

  • Nbextensions dashboard tab & Nbextensions edit menu item

  • ScrollDown

    自动向下滚动输出

  • Snippets & Snippets Menu

    插入代码片段的,可以自定义

  • Table of Contents (2)

    The toc2 extension enables to collect all running headers and display them in a floating window, as a sidebar or with a navigation menu. The extension is also draggable, resizable, collapsable, dockable and features automatic numerotation with unique links ids, and an optional toc cell.

  • table_beautifier

    Add bootstrap styling to tables in markdown cells and in html/md output

  • Toggle all line numbers

    Add a toolbar button and hotkey to toggle all cells’ line numbers on or off

  • Tree Filter

    An extension that allows you to filter by filename in the Jupyter notebook file tree (aka dashboard) page.

  • Variable Inspector

    The Variable Inspector extension collects all defined variables and display them in a floating window.

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

原始数据样例如下:

date        code    count
20170801    000001      10
20170802    000002      20
20170803    000001      30

使用pivot处理数据,命令如下:

df.pivot(index=‘date’,columns=‘code’,values=‘count’)

执行后报错信息:

ValueError: Index contains duplicate entries, cannot reshape

说明column有重复信息,使用如下命令检查重复列内容:

df = df.sort_values(['date','code','count'],ascending=[1,1,0])
df = df[(df['code'] == df['code'].shift(1)) | (df['code'] == df['code'].shift(-1))]

发现code列有哪些重复数据

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