期权公式
香草期权 (Vanilla Option)
香草期权是“最简单”的期权, 通常有欧式期权(到期日才能行权)和美式期权(到期日前任意交易日行权)之分. 在冰淇淋中, 国外认为香草味是最纯粹, 最原始的味道, 所以用它来命名期权的原因就是:这种期权的结构是最单一、最普通的, 没有内嵌任何特殊条款.
看涨期权 (Call(T,K)) 是在未来时刻 T 以价格 K 买入标的的权利, 看跌期权是(Put(T,K)) 是在未来时刻 T 以价格 K 卖出标的的权利.
期权的理论价格可以用蒙特卡洛模拟获得, 也可以用 BS 公式求得. 这些定价基于无套利, 且以波动率 sigma 作为参数.
中国市场的期权都是欧式期权
BS 公式
Black-Sholes 定价的起源是无套利, 即风险中性测度下, 期权的价格为期望收益的折现:
C=e−rTE[max(S(T)−K),0]C = e^{-rT} E[\max(S(T) - K), 0]
C=e−rTE[max(S(T)−K),0]
假设标的价格的 SDE 为
dStdt=rdt+σdBt\frac{dS_t}{dt} = rdt + \sig ...
排序问题
排序问题
讲讲排序问题.
常见的排序算法有冒泡排序, 归并排序, 快速排序, 桶排序等. 这里都不会讲因为到处都有. 大致掌握排序算法后, 只要定义元素的大小比较方式, 不管什么高级编程语言基本上都可以直接调用sort函数求解.
基数排序和桶排序
基数排序是对传统桶排序的扩展, 速度很快.
基数排序也是搞一堆的桶, 从低位开始每次根据这轮的比较位放到相应的桶里面然后按顺序拿出来, 这一位就排好了.
时间复杂度是 O(M+N) 空间复杂度 O(MN) m是保存桶的元素个数数组占的空间, n是保存桶的二维数组占的空间.
稳定排序
如果相同的元素排序之后顺序保证不变, 则排序算法是稳定的.
冒泡排序, 插入排序, 基数排序, 归并排序等都是稳定排序.
快速排序是稳定的吗?原始的快速排序算法是不稳定的. 因为如果选定的轴(pivot)有相同元素, 按照规则 把大于等于轴的元素放到右边小于轴的元素放到左边 那相同的其余元素都得到右边去了, 因此快速排序不是稳定的.
我们讨论快速排序, 往往就想到分治法且每一步把大于等于轴的元素放到右边小于轴的元素放到左边就完事了. 但是至于怎么把元素放到对应的左 ...
Socket编程基础
Socket编程基础
简单来说, socket 可以看作网络中通信的方式, 虽然它也可以作为本地通信的方式 (比如Unix Socket). 跳过网上随处可见的介绍, 这里只强调一下 socket 位于应用层和传输层之间, 也就是说, socket 封装的是 TCP/IP 的数据包 (所以 socket 需要手动处理例如 TCP 三次握手之类的请求), 接口直接面向用户 (也就是进程直接把配置好的 socket 当做 IO 使用). 网上的教程和实例代码随便找有一大堆, 所以我来讲讲 windows 下的 socket 编程.
echo 客户端与服务器
在这部分我们试图实现一个最简单的 socket 通信 server 与 client. server 总是返回 client 发送的相同内容.
Server
最简单的例子就是这个, 服务端建立一个套接字在端口上监听, 等待客户端连接后 echo 客户端发来的所有内容. 开始之前我们仍然复习一下这张流程图.
先来说一下头文件, 在 Linux 中, 网络编程的头文件一般需要引入 arpa/inet.h 和 sys/socket.h (回 ...
vPro与AMT
vPro与AMT
概述
vPro 是英特尔为企业用途打造的商用PC平台, 具体介绍在官网以及售卖PC的网站上都可以看到. 总体来说想要粗略理解 vPro, 只需要掌握一下概念即可:
vPro 是一个完整的平台技术, 其实现需要芯片组, 处理器的共同支持, 很多功能还需要人为设置;
vPro 包括众多功能, 在较新的 vPro 认证模式下, 不仅需要基础设施(CPU,芯片组)的支持, 还需要 PC 满足一些条件(例如笔记本的续航, 台式机的运行稳定性等).
我们常常听说 vPro 最重要的一个特性就是带外管理 (Out of Band Management), 也就是即使设备不在局域网内, 甚至不开机, 管理者依然可以对电脑进行控制. 简单理解就是管理者可以在电脑关机, 死机或者BIOS状态下进行管理, 实现普通远程控制做不到的事情. 这其实主要依赖 vPro 中的 AMT(Active Management Technology) 功能. 如果有过企业级服务器的管理经验, 应该会对这种功能比较熟悉, 例如惠普的 iLO, 戴尔的 IDRAC 都属于带外管理. 这些带外管理往往使用的 ...
PHP Mysql与OpenSSL
前段时间开了没有SSL的FTP端口, 不到两天就中勒索病毒, 现在对于网络传输安全也开始重视起来. 这几天在折腾 PHP 的一些功能, 需要连接本地 MySQL 服务, 于是尝试使用 SSL 加密, 在这里记录一下踩到的坑.
生成自签名的证书
据说 Mysql 可以使用 mysql_ssl_rsa_setup 生成证书, 但是我已经切换到了 mariadb, 并没有看到这个功能, 所以只能自己用 openssl 生成.
网上有很多方法是先生成数字证书, 然后分别生成服务端和客户端的密钥和数字证书, 但是这个方法我用了提示证书错误. 下面这个方法生成的证书是可以使用的:
123456789$ openssl req -x509 -newkey rsa:1024 -days 3650 -keyout server-key-enc.pem -out server-cert.pem -subj '/DC=com/DC=example/CN=server' -passout pass:qwerty$ openssl rsa -in server-key-enc.pem -ou ...
Sublime_Text开启markdown预览
Sublime_Text开启markdown预览
目前 Sublime Text 原生支持 Markdown 语法高亮, 但是还是没法像 typora 一样直接把文字渲染成文档. 现在的解决方法是生成一个网页并打开.
安装 Markdown Preview 插件
如果没有安装 Package Control 则先安装 (Ctrl + Shift + P 输入 install package control, 过一会就会弹窗说安装完成), 然后Ctrl + Shift + P 输入 install package, 输入 Markdown Preview. 操作时其实不用完整输入因为会自动补全.
开启预览
打开一个 Markdown 文件, 按下 Ctrl + Shift + P 输入 preview, 可以看到第一个匹配的应该就是 Markdown Preview 的 Preview in Browser. 理论上回车之后就会在浏览器中打开渲染好的界面, 如果要实时刷新的话也可以网上参考下 LiveReload 相关的资料, 总体来说这部分教程很多而且没有难度就不赘述了.
公式渲染
数 ...
故事一则 0713
记得我在小学的时候,有一次集体外出活动参观消防队,可以有部分幸运的同学登上救援用的登高车体验。在一片嘈杂中老师开始一个个点同学的名字,点到的人可以上车。那时的我满怀期待,希望老师可以注意到我,给我一个体验的机会。但是正如我平常的运气一样,我没能听到我的名字响起,然后老师就在一群学生的簇拥下登上了举升平台。平台升起后我逐渐看不到上面的同学,然后看不到老师的脸,只能听到上面传来的欢笑声。游玩结束回去的路上我正好和老师坐在一排,于是我问老师为什么没有选我,明明我那时一直睁大了眼睛看着她。”我点你的名字了呀,难道你没有上去吗?“老师显得十分惊讶,用十分夸张的语气回答我。那时的我感到十分遗憾,明明这个机会已经轮到我了,却因为我没仔细听而错过。这么多年过去我甚至记不起那位老师的名字,却一直记得这段故事。遗憾过后的我总会回想,真的是我粗心大意没有听到吗?还是老师对所有来问他的同学都说了这番相同的话?但是如果我是那时的老师,我可根本想不到这样的回应方式。
开盘策略的探索
开盘5分钟价格反转的探索
动机说明
市场中经常存在过度反应和跟风的现象, 反映在价格表现上即过冲. 偏离市场均衡价格的资产会在供需关系的调整中向均衡价格调整. 从交易时间和交易量的关系来看, 这种偏离和回复的过程最容易发生在开盘阶段, 因为此时的交易量很大, 且市场刚刚开始交易, 需要时间从偏离的价格回到均衡. 于是我们探求以下可能性: 当开盘的价格与前一天收盘价格相差较大 (跳空) 时, 市场很有可能出现了过度反应的表现, 因此在开盘的短时间内价格可能会反向变动. 通过刻画这样的规律, 我们可能可以在其中获利.
实证检验
我们使用近十年的期货5分钟频率交易数据, 检验此猜想的正确性.
由于期货交易存在夜盘, 开盘的时间可能在晚上九点也可能在早上九点. 在统计过程中我们选择每个收盘数据 (下午三点) 的下一条作为开盘的数据, 计算开盘价格与收盘价格的差距 DIFF, 并使用开盘第一条数据的 open 和 close 价格计算对应的收益 PNL. 但是应当注意的是: 开盘时期价格变动快, 考虑到交易上的细节 (滑点和延时等), 这样计算的收益可能和真实操作所得并不相同.
我们对每个期货品 ...
Docker入门
Docker 入门
这篇文章讲讲 Docker 的入门级使用.
最初使用 Docker 是编译原理的大作业, 助教提供了配置好的 Docker 镜像, 这样就免去了系统与环境配置的烦恼. 购入了苹果的 Apple Silicon 芯片笔记本之后, 又开始考虑运行 x86 程序的问题. 这里只是记录下 MacOS 安装使用过程中遇到的问题, 不做深入讨论.
安装完 Docker 后, 需要打开 Docker 才能在终端执行 Docker 相关命令.
这里有镜像和容器的概念, 简单理解就是镜像是用于分发的打包文件, 在实例运行时(一般)会基于镜像创建一个容器(运行实例), 而一个镜像可以被多个容器使用. 在需要上传到 Dockerhub 时, 又要把容器打包成镜像.
寻找需要的镜像
首先我们要找到需要使用的镜像文件. Dockerhub 提供了众多官方与非官方的打包镜像. 这里以 Ubuntu 作为演示.
搜索 Ubuntu 并进入官方链接后, 右侧显示有最基本的拉取镜像方法:
1docker pull ubuntu
这会根据系统的架构自动拉取最新的镜像. 但是我们这里需要用 Docker ...
CLoudFlare部署静态网站
CLoudFlare部署静态网站
在之前的文章中, 已经实现了纯 ipv6 网页的 ipv4 代理, 极大增加了可访问性. 但是这样就需要家中的服务器始终在线, 网络环境的稳定性也十分重要. 现在想要更进一步, 把这些静态内容直接托管, 岂不是美滋滋?
现在许多代码托管平台都提供了静态网页的部署, 但是能够申请到的仅仅是三级域名. 而且主流的 Github 在大陆的访问非常不稳定. 今天查看 Cloudflare 控制台时发现有 pages 选项卡, 可以部署一些网页, 且可以直接从代码托管平台接入, 于是马上尝试.
Github 接入 Cloudflare 并设置 Gitee 自动推送
转了一圈还得是 Github 啊, 下面原先的 Gitlab 还是比较麻烦.
事情的起因是这样的, 虽然 Gitlab 可以访问但是速度还是不尽人意. 且下面我看到明明可以设置 mirror 实际上并没有做到, 实现起来各种问题. 然后我看到 Gitee 支持与 Github 的双向同步了 (其实是两个单向拼起来的实际上也建议只开一个方向不然可能会有代码丢失的风险), 那我何不直接使用 Github ...