股票期权组合策略持仓优化方法探究

论坛 期权论坛 期权     
期权世界   2019-10-13 22:52   7769   0
王建晗 范林燕 永安期货/作者 期货日报/来源


近日,上海证券交易所(下称交易所)发布了股票期权组合策略业务方案,拟在10月具体实施,该业务可以帮助投资者根据自身持仓,通过期权经营机构向交易所申请构建组合策略或解除组合策略,交易所根据构建的策略类别,可以减少甚至免收保证金,以此提高投资者的资金利用效率。



股票期权组合策略业务方案

   
构建组合策略是指由投资者申报构建组合策略指令,将多个成分合约(目前最多支持四个成分合约)的持仓构建成为一个组合策略持仓。经交易所交易系统校验确认后,即时返还多余保证金。解除组合策略是指由投资者申报解除组合策略指令,将已建组合策略拆分成多个成分合约的持仓。经由交易所交易系统检查确认,拆分成各单个成分合约保证金必须足额,并加收保证金后,才能拆分成功。
   
目前交易所推出了垂直价差组合策略和跨式、宽跨式组合策略,其中垂直价差组合策略有认购牛市价差、认沽熊市价差、认沽牛市价差和认购熊市价差,跨式、宽跨式组合策略包括跨式空头策略和宽跨式空头策略,下面主要分析具体策略的构成、检查条件和保证金收取情况。
   
垂直价差组合策略
   
认购牛市价差策略(CNSJC)
   
组合策略构成:一个较低行权价的认购期权权利方头寸,一个相同标的、相同到期日、行权价较高的认购期权义务方头寸。
   
检查条件:两个成分合约是否为相同到期日、相同标的证券、相同合约单位的认购期权,第一个成分合约的行权价是否低于第二个成分合约的行权价格,持仓是否足额(按权利仓或义务仓,下同)。
   
开仓保证金收取:无。
   
认沽熊市价差策略(PXSJC)
   
组合策略构成:一个较高行权价的认沽期权权利方头寸,一个相同标的、相同到期日、行权价较低的认沽期权义务方头寸。
   
检查条件:两个成分合约是否为相同到期日、相同标的证券、相同合约单位的认沽期权,第一个成分合约的行权价是否高于第二个成分合约的行权价格,持仓是否足额。
   
开仓保证金收取:无。
   
认沽牛市价差策略(PNSJC)
   
组合策略构成:一个较低行权价的认沽期权权利方头寸,一个相同标的、相同到期日、行权价较高的认沽期权义务方头寸。
   
检查条件:两个成分合约是否为相同到期日、相同标的证券、相同合约单位的认沽期权,第一个成分合约的行权价格是否低于第二个成分合约的行权价格,持仓是否足额。
   
开仓保证金收取:合约单位×组合策略数量×行权价之差。
  
认购熊市价差策略(CXSJC)
   
组合策略构成:一个较高行权价的认购期权权利方头寸,一个相同标的、相同到期日、行权价较低的认购期权义务方头寸。
   
检查条件:两个成分合约是否为相同到期日、相同标的证券、相同合约单位的认购期权,第一个成分合约的行权价是否高于第二个成分合约的行权价格,持仓是否足额。
   
开仓保证金收取:合约单位×组合策略数量×行权价之差。
   
跨式、宽跨式组合策略
  
跨式空头策略(KS)
  
组合策略构成:一个认购期权义务方头寸,一个相同标的、相同到期日、相同行权价格的认沽期权义务方头寸。
   
检查条件:第一个成分合约是否为认购期权,第二个成分合约是否为认沽期权,两个成分合约是否为相同到期日、相同行权价格、相同标的证券、相同合约单位,持仓是否足额。
   
开仓保证金收取:组合策略数量×(认购期权开仓保证金和认沽期权开仓保证金中较大的一方+保证金较低方合约的前结算价×合约单位)。
   
宽跨式空头策略(KKS)
   
组合策略构成:一个较高行权价格的认购期权义务方头寸,一个相同标的、相同到期日、较低行权价格的认沽期权义务方头寸。
   
检查条件:第一个成分合约是否为认购期权,第二个成分合约是否为认沽期权,两个成分合约是否为相同到期日、相同标的证券、相同合约单位,认购期权行权价是否高于认沽期权,持仓是否足额。
   
开仓保证金收取:组合策略数量×(认购期权开仓保证金和认沽期权开仓保证金中较大的一方+保证金较低方合约的前结算价×合约单位)。
   
股票期权组合策略持仓优化方法
   
针对股票期权组合业务方案,下面具体分析一种方法,以能够帮助投资者根据自身持仓,选择出能最大限度节约保证金的策略组合,并且将各策略由具体哪几个合约构成、策略的数量和策略占用保证金都明确显示给投资者。
   
梯度下降法
   
假设有目标函数f(x),我们的目的是求出一个x的值使得f(x)达到最小值。
   
先举一个简单的例子,令f(x)=x2,我们可以很轻易地看出当x=0时,目标函数取到最小值,但如果目标函数变得更复杂一些,就不那么容易通过经验得出答案,因此我们需要一个通用的方法,在面对复杂目标函数时也能起作用,梯度下降法可以解决这个问题。
   
要运用梯度下降法,首先我们需要给x设定一个初始值,由这个初始值一步步接近目标值,那么现在的问题就是如何从初始值移动到目标值,这里我们需要用到导数的概念,导数
代表着目标函数值fx和因变量x的变化关系,当导数值为正时,x的增大会使fx增大,当导数值为负时,x的增大会使fx减小,因此要使fx取得最小值,我们要在
为正时,让x变小,在
>为负时,让x变大,数学表达式为:
其中newx代表我们新的x的值,x为我们的初始值,
为目标函数在初始值处的导数,λ可以理解为影响初始值变化速度的参数,λ越大,x变化的速度越快,λ的值可以自由设定但一般函数包中都会自动帮我们选择合适的λ。
   
得到newx后,将newx重新视为初始值,再对其进行移动,如此反复多次迭代,当
为零,或者x的变化幅度低于我们的设定值,可以忽略不计时,我们认为这时的目标函数fx达到了最小值,此时的x即为我们所求的目标值。
   
梯度下降法的优点是简单易行,缺点是对目标函数要求较高,比如要求目标函数必须可导,并且最优解有可能是局部最优解而非全局最优解,具体如下图所示。
   
下图显示的是一个三次函数的函数图像,在x=0时,
为零,如果我们的初始点选择为正数,那么梯度下降法会在x=0处停止,但实际上整个函数的最小值并不在此处,此时求得的最优解为局部最优解而非全局最优解,这就是梯度下降法的局部最优解问题。
   
虽然存在一些问题,但在本次探究的保证金问题中,梯度下降法是适用的,其缺陷不会对结果产生影响,这点会在后面论证。


持仓资金占用模型构建
   
使用梯度下降法首先要明确目标函数,在本问题中,目标函数应该是持仓资金占用的数额,因此第一步就是构建出一个能够计算持仓资金占用的模型。举个例子,假定目前持仓情况如下表所示:




   
以上持仓情况较为简单,根据股票期权组合策略业务方案,可以看出最优持仓策略组合应该为两个9月合约组成认购熊市价差策略(CXSJC)、两个10月合约组成跨式空头策略(KS)和1手无法组成策略的50ETF购9月3.10权利仓,因此持仓资金占用可以表示为:fx1,x2=CXSJC×x1+KS×x2+剩余合约占用资金,其中f(x1,x2)代表持仓资金占用,CXSJC代表每个认购熊市价差策略占用的保证金,在本例中应为1000,KS代表每个跨式空头策略占用的保证金,本例中应为3500,x1及x2分别代表两种策略的数量,剩余合约占用资金代表未能组成策略的合约所占用的资金,这一项可以写成x1及x2的表达式,本例中应为35。
   
从上例拓展到更加普遍的情况,目标函数应该如何构建呢?首先应该明确,我们要求的值是x,即每个策略的数量,那么参数就应该为每个策略的资金占用,上例中总共有两个参数,因为上例的持仓仅能构成两种策略组合,如果持仓能构成n种策略组合,那参数也应该设置为n个,可表示为:fx1,x2,…,xn=S1x1+……+Snxn+剩余合约占用资金,其中S表示每个策略的资金占用,x表示每个策略的数量,剩余合约占用资金可以通过x表示,例如持仓有1号合约m手,每手资金占用y元,如果策略3和策略4用到了1号合约,那么剩余1号合约的占用资金就应为m-x3-x4×y元,其他合约同理,将每个合约的剩余占用资金算出并加总,就得到了剩余合约占用资金。
   
目标函数构建完成,但我们还需要给x加一些限制条件,因为每个合约的持仓数量有限,要确保构成策略的合约数量不超过持仓量,例如假设1号合约持仓量为m手,策略3和策略4用到了1号合约,那么我们就有限制条件m-x3-x4>0,对于其他持仓合约也是同理,每个合约都有一条限制条件。
   
程序设计及验证
   
使用优化程序需要用户输入持仓合约的代码,每个合约的持仓量及每手资金占用,然后程序会根据用户输入的持仓合约种类和股票期权组合策略业务方案中写明的检查条件,筛选出所有可能的策略种类并同时算出每个策略对应的资金占用。
   
值得一提的是,在后续测试中发现,如果只用组合策略业务方案中的检查条件筛选,结果会出现问题,经检查发现,有时组合策略并不能起到减少保证金的作用,因此在筛选可能的策略种类时还要加上一个限制条件,就是组合策略占用资金要小于原持仓占用资金。
   
得到目标函数和限制条件后,就可以利用梯度下降法计算出每个策略对应的数量,Python和Matlab都有已经封装好的函数可以做到这点,考虑到程序的效率还有实用性等问题,本文优先使用Matlab中的fmincon函数,因此有时求出的策略数量会存在小数,不过这不会对结果产生影响,因为结果一般都是极其接近整数的数字,只需四舍五入就可以取到合适值,这点也是可以进行证明的。现在让我们跳出本方法,用解数学题的思维来看待资金占用问题——选取一种方法让资金占用达到最小,本质上就是选择能最大限度减少当前资金占用的方法,假设情况如下:




   
那么最优解一定是优先满足第一种策略,其次第二种,最后第三种。换句话说,理性的投资者一定会优先构成第一种策略,当构成第一种策略的成分1或成分3达到持仓限制时,才开始构建第二种策略,因为持仓限制一定是整数,所以最后的策略数量也一定是整数,如果fmincon函数返回的结果小数部分是0.4或0.5之类的,则程序很有可能存在问题。
   
为了更进一步减小误差,我们会对剩余合约再筛选一遍,确保其中不存在能减少资金占用的策略组合,这样即使存在误差其数值也不会很大,影响较小。
   
关于局部最优解问题,在本模型中,参数的实际意义是策略的资金占用额,都为普通的常数,并且x代表策略的数量,无二次项三次项,因此即使模型是多元的,其函数图像也不会出现“坑坑洼洼”的情况。以上面的例子为例,用图像表示结果如下:


如图所示,整个函数图像非常光滑,当两个策略数量均为1时达到最小值,因此在本问题中,使用梯度下降法不会出现局部最优解的情况。
  
最后,我们使用一组较为复杂的持仓情况来测试程序的稳定性及有效性,持仓情况和测试结果如下:





原持仓资金占用168600元,组合后资金占用82630元,仅为原持仓的49%,大幅提升资金利用效率。在将来,如果交易所推出新的期权组合策略业务,也可将其通过以上方法加入到程序中。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:14304
帖子:3032
精华:1
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP