国内期权监测。
从各大交易所获取期货和期权数据,计算期货历史波动率,计算期权综合隐含波动率。
由于郑商所使用了反爬,所以需要先安装 proxy_pool
cd 3rd/proxy_pool.git
sudo apt-get install libxml2-dev libxslt1-dev
sudo pip install lxml
pip3 install -r ./requirements.txt
pip3 install werkzeug --upgrade
更新配置
# setting.py 为项目配置文件
# 配置API服务
HOST = "0.0.0.0" # IP
PORT = 5000 # 监听端口
# 配置数据库
DB_CONN = 'redis://:[email protected]:8888/0'
# 配置 ProxyFetcher
PROXY_FETCHER = [
"freeProxy01", # 这里是启用的代理抓取方法名,所有fetch方法位于fetcher/proxyFetcher.py
"freeProxy02",
# ....
]
启动 proxy_pool
# 如果已经具备运行条件, 可用通过proxyPool.py启动。
# 程序分为: schedule 调度程序 和 server Api服务
# 启动调度程序,启动webApi服务
bash ./start_proxy_pool.sh -m restart
第一次下载数据耗时较长,且可能中途暂停,可能需要多次重新启动服务。
# 期权定价模型 cython 版本编译
pip3 install Cython
cd ./pricing/cython_model/binomial_tree_cython/
pip3 install .
cd ./pricing/cython_model/black_76_cython/
pip3 install .
cd ./pricing/cython_model/black_scholes_cython/
pip3 install .
pip3 install -r ./requirements.txt
pip3 install .
# copy and edit your push.ini if needed.
cp ./data/push.back.ini ./data/push.ini
# start the monitor at back
# -m start|restart|stop
# -i ananlyze immediately
# -p push message by dingding
# -r recalculate siv, this maybe called when siv calculation method changed
bash ./start_monitor.sh -m restart -p 2>1& &
# check if any error occurred
tail ./nohup.out
0.10.0 增加 siv web 浏览页面,使用 flask 和 pyecharts (最终转移至 https://github.com/zhangr011/vix_web_viewer )
各品种商品指数以各月份持仓加权平均计算;
v = sqrt(Σ(Xi - Xp)² / (n - 1))
Xi = ln(Pi / Pi-1),Pi 为第 i 天的收盘价;Xp 为 Xi 的平均值。
综合隐含波动率 = Σ(隐含波动率 × 成交量 × 距离系数)/ Σ(成交量 × 距离系数)
距离系数 = (行权价与标的物价格之间距离的百分比 - a)² / a² 当 x < a 时, a 是最大百分比距离,超过的权重为 0
上述计算方式,当近月期权即将到期时,会有大量的近月低价值期权干扰(由于距离交割日比较近,计算出的隐含波动率往往不准确,参考意义不大) 因此在实际使用时,采用成交额系数替换成交量系数
综合隐含波动率 = Σ(隐含波动率 × 成交额 × 距离系数)/ Σ(成交额 × 距离系数) 其中成交额 = 期权收盘价 × 成交量