Category Archives: 技术相关

极客,技术,其他的别人不关心的东西

关于交易策略的回测

上次写技术相关的内容应该是前年研究delta对冲和gamma的关系了,后面实在没有什么技术升级可言。交易上面有一些心得,但总觉得太过粗浅,也不用记录在博客上了。 今天说这个回测,倒是最近半年持续关注的话题,因为做策略回测最基本的。 初期,我在matlab上自己写回测,这个基本上就很基础了,统计一下收益率和波动率。倒是后来照抄丁鹏有一本matlab的书后面的代码,还加上了一些其他的持仓回测指标。 这种自己手工写代码回测,好处在于随便怎么折腾,坏处也明显,效率很低,任务比较简单还成,任务一旦复杂,各种数据处理就是非常困难的任务。 后来来到公司,开始关注wind的backtest和天软的回测平台。天软用了一套自己的语言,实话说,语法奇怪,关键问题是,我实在不想学它那种奇葩的语言和函数,自己稍微编了几段试用了一段时间,就放弃了,不过因为我试用这些日子,他们客服还可以过来忽悠我们买。 wind的回测机构版自带,一开始在matlab里面使用,它的backtest只是交易函数的回测,还算方便,但是并不支持期权,因此我编过几个简单的策略回测也就停止了。 后来就是各种量化量化平台在今年雨后春笋,纷纷扩大,我花时间最多的是ricequant,它的语法是python的。自己感觉到确实python才是未来策略回测的通用语言,于是开始强迫自己熟悉python。 但是有个问题是量化平台都是在流量器运行,导致程序调试非常麻烦,后来ricequant又开源了它的回测,ricequant alph。我深度使用了一段时间,觉得这个确实是个好东西,实话说,比wind的backtest不知道好多少倍。 如果仅仅是回测股票策略,肯定就使用ricequant alpha了。不过这个开源平台的局限是,它只能支持日线数据,没法回测更高频的数据,我想,他的机构版应该就可以开放平台下回测高频数据了吧。我和他的合伙人简单聊过,据说有这个计划,本来说在上海再聊聊,后来也没音信,大概觉得我们这个机构对回测平台缺乏投入诚意吧。 另外,ricequant还没有支持期权回测,我想他未来肯定也会支持吧,不过最近我发现wind PMS支持期权,于是就在这个上面研究了一段时间。 wind PMS 主要用两个函数 wpf 和wupf,wpf从pms下载数据,wupf向pms上传数据。不过需要特别注意的是:wupf上传的是持仓数据,也就是说,每次上床当天的持仓界面,不在持仓截面里面的,就自动清仓了,而且应该是按照结算价清仓。 和按照交易回测相比,这种处理方式非常粗暴,但是目前也只能适应,想wind去修改wupf函数,还不如指望ricequant增加期权。 实际上,对于我们这样的机构来说,早就应该开发一套自己的回测平台了,这应该算是一个基础设施,但是一个好的回测平台,开发时间肯定也不断,各种人力投入,这也不是我能轻易建言了,只能感叹一下,然后自己将就着,准备着,后面应该能用的上的,毕竟策略开发这个活,亲自动手总归更放心些,也不会那么容易被机器取代。

Posted in 技术相关 | Leave a comment

Gamma与对冲损益之二数据实证研究

  Gamma与对冲损益之 数据实证研究 1. 研究思路 在上一份报告中,我们从理论上分析了Gamma和对冲损益之间关系的积分表达式,这次我们利用实际数据去检验对冲损益的变化。 我们利用一个月的股指期权的仿真数据和当月股指期货的,然后固定不同水平的对冲波动率去进行gamma交易,然后检验最后的盈亏情况。 2. 研究假设 第一步的实证研究我们并不考虑交易费用的存在; 设定对冲频率每天收盘价对冲; 所有价格以收盘价计; 设定对冲数量可以精确到7位小数,即可以购买0.0001份指数; 这里分别用股指期货和股票指数来为期权做定价模型,以已实现波动作为对冲波动率条件下,以pl绝对值最小为标准,筛选最优期权对冲定价模型。 3. 数据样本 图 1 hs300指数价格真实走势 其中,该价格路径波动率年化为12.7% 4. 初始状态 在t0时间点,沪深300指数收盘价为2374.6; 行权价为2350的认购期权此时价格为74.4; BS定价模型下的隐含波动率为20.02%。 5. 对冲过程 这里的设想是卖出期权,同时进行delta,不考虑保证金等其他费用,并且连续对冲。 卖出期权的权利金收入为74.4,对冲标的买入费用1589.59,则期初资金投入1515.19. 数据选取的是2014/8/18至2014/9/19这一段时间的沪深300指数数据。 5.1. 使用realizedVol进行对冲回溯 最后的对冲盈亏为17.71。 对冲示例如下: 基本参数是: 对冲结果 对冲过程如下: 整个过程解释如下: 我们用12.7%波动率对期权进行对冲,最后对冲盈亏为17.17。 那么实际上所卖出的期权,对我们来说,成本为74.40-17.17exp(-rT)=57.31。接近BS73下,期权在realizedVol的理论价格。 … Continue reading

Posted in 技术相关 | Tagged , , | Leave a comment

gamma与对冲损益之一

  1. 从无套利角度理解(连续对冲,对冲波动率=标的波动率=常数) 股票及衍生品的运动过程分别为: 为消除不确定性,构造投资组合: 衍生品:-1;股票:+ 投资组合的价值为: 投资组合的价值变动为: 组合价值的变化量仅与时间有关,因此该组合成功消除了带来的不确定性。 根据无套利定价原理,组合收益率应等于无风险利率: 得到: 这也就是Black-Scholes 微分方程。 上述组合中,每时每刻的期权合约的价值变动与持仓期货合约价值变动刚好的差,刚好等于组合价值的无风险收益。 这也就是说,如果我们连续对冲的话,那么得到的收益,完全就是无风险收益。 由于我们连续对冲,每时每刻delta都是中性的,因此gamma不产生影响。 而又假设波动率和无风险利率不变,因此vega和rho对我们组合的价值不产生影响。 因此唯一对组合价值产生影响的就是theta,影响的程度和期初组合的价值大小有关。 2. 连续对冲,对冲波动率不等于标的已实现波动率 行权价为K到期时间为T的认购期权,在BS模型下,其t时刻的期权价值为,特别的,到期时。 假设股票价格S满足下面的这个SDE模型: 其中本身可以是随机的。 那么,把期权价格的变化划分为无穷小段,期权价格在这些时间片段中逐步变化,利用泰勒公式对BS模型下期权价格的变化进行展开(忽略): 其中,远期方差 因此,如果我们使用BS模型下的delta来进行连续对冲,这段期间的标的对冲损益是 那么上述积分式的第一部分就被delta对冲完全消除,那么组合对冲之后的损益,也即我们对冲的误差为 从上面式子可以看出,在BS模型的假设下,波动率是确定的,因为(对于任意的St都成立),这样对冲的损益为0。 但实际上我们的对冲结果取决于gamma和对冲波动率与已实现波动率的差。从上述积分的式子中就能看到对应着波动率之差,而就是期权合约下BS模型得到的gamma。 上述的推导过程中,我们依据的是BS模型算出的delta进行对冲,对冲的波动也不做修改,由于对冲标的的实际波动是在不断变化的,因此投资组合会出现无风险收益指望的损益。 在实际对冲过程中,这一损益受gamma影响,但并不全部由gamma决定,还和波动率之差的路径积分有关。 如果给定波动率之差为一个确定的值,比如实际波动率大于对冲波动率也即,而持仓gamma是多头,那么gamma给对冲带来的就是收益;如果实际波动率小于对冲波动率,而持仓gamma是多头,那么gamma给对冲带来的就是亏损。 其实上述结论也容易理解,我们持有gamma是希望标的真实波动超过期权理论价值所设定的波动率(其实也就是期初期权价格对应的隐含波动率,而我们用这个波动率进行对冲),那么当我们判断正确时,我们是获得收益的,如果判断不正确,那么我们就会出现亏损。 但需要注意的是,上面表达式是一个在时间区间上积分的表达式,无论是标的真实波动率(已实现波动率),还是对冲波动率(交易员每天调整)是随时间变化的,而gamma本身也随时间变化,因此即使交易完成后,检查发现区间标的已实现波动率大于期初期权价格对应的隐含波动率,也不能保证gamma的多头一定会在对冲中获取盈利。 3. 不连续对冲,对冲波动率等于标的已实现波动率 事实上,由于我们根本做不到连续对冲,在非连续对冲的时候,gamma肯定会对我们的对冲效果造成影响。 因为不是连续对冲,因此每次对冲完delta后,等到下一次对冲,期间gamma是的delta不连续变化,我们总是对冲少了或者多了。如图所示: 不连续对冲,对冲误差的大小,一方面取决于当时的gamma值,一方面也取决于对冲频率。 假定为一个较小时间区间内内股票价格的变化,为相应delta对冲组合价格变化,当忽略高阶项后, … Continue reading

Posted in 技术相关 | Tagged , | Leave a comment