期权的风险要素通常用
希腊字母来表示,包括:
delta值、
gamma值、
theta值、vega值、
rho值、charm值等。
简介
Vega值是期权对标的资产价格波动率变动的敏感度,它反映当波动率变化一个单位时(通常用1%来衡量),期权
价格理论上的变化,Vega值永远都是
正数,值越大,投资者面对波动率变化的风险便越大。
期权
波幅每1%的改变会造成其价若干的变动,也称Vega值。
期权的风险指标通常用希腊字母来表示,包括:
delta值、
gamma值、
theta值、vega值、
rho值等。
Vega(ν):衡量
标的资产价格
波动率变动时,
期权价格的
变化幅度,是用来衡量
期货价格的波动率的变化对
期权价值的影响。
Vega,指
期权费(P)变化与标的汇率
波动性(Volatility)变化的
敏感性。
公式为:Vega=期权价格变化/波动率的变化。
认识
对权证有一定认识的投资者,相信都知道影响权证价格的主要因素,包括相关资产的价格、
引伸波幅、权证的剩余年期、
市场利率及相关资产的预期
派息率等。条款不同的权证,其
理论价格对上述五大因素变动的敏感程度亦各有不同,而
Greeks值[如
对冲值(
Delta)、Vega值等]便是用来量度权证理论价格对上述各因素敏感度的工具。
其中,早前提及过的对冲值便代表权证价格对相关
资产价格变动的敏感程度。除相关资产价格外,引伸波幅便是影响权证价格的另一个重要因素,而Vega值便代表权证价格对引伸波幅变动的敏感程度。Vega值并非常数,一般而言,到价证的Vega值最高,若以权证价格的
百分比计,则Vega值占深入价
外证的比重最高。举例言之,假设某权证的Vega值为0.05,则代表当该证的
引伸波幅每升或跌一个
波幅点,该证
理论价格便会跟随上升或下跌0.05。
理论上,在
正股股价及引伸波幅同时上升时,两只实际杠杆相同的
认购权证当中,Vega值较高的一只
升幅会相对较大;不过,若出现相反的情况,即引伸波幅下调时,Vega值愈高的权证,其理论价格的
跌幅同样亦会较大。
所以,若拣选高Vega值的权证而又能看中引伸波幅上升的话,则无论买认购权证或
认沽权证,均可能有较大的升幅。唯引伸波幅受到各方因素影响,一般投资者能准确预测的难度极高;因此,我们认为投资权证应从多注意相关资产的走势出发,在对
正股或指数有明确预期方向时,应多参考其他因素,如
行使价、到期日、
引伸波幅高低、Vega值的高低及发行人素质等因素,再作投资决定;若纯为希望利用引伸波幅升跌而投资于权证的话,可能是较本末倒置的做法。
实际应用
如果某期权的Vega为0.15,若价格波动率上升(下降)1%,期权的价值将上升(下降)0.15。若
期货价格波动率为20%,
期权理论价值为3.25,当波动率上升为22%,期权理论价值为 3.55(3.25+2×0.15);当波动率下为18%,期权理论价值为2.95(3.25-2×0.15)。当价格波动率增加或减少时,期权的价值都会增加或减少因此,
看涨期权与
看跌期权的Vega都是正数。期权
多头部位的Vega都是正数, 期权空头的Vega都是负数。
如果投资者的部位Vega值为正数,将会从价格波动率的上涨中获利,反之,则希望价格波动率下降。对于
Delta中性的部位,就可以不受
期货价格的影响,而从价格波动率的变化中寻找盈利机会。
对于
外汇期权的买方而言,Vega值始终大于零,说明标的汇率波动性的增加将提高外汇期权的价值;相反,对于外汇期权的卖方而言,其Vega值始终为负。同样,当外汇期权处于平价状态时,Vega值最大;当期权处于较深的价内或者价外时,Vega值接近于零。
程序设计
函数介绍
vgsystem是一个属性函数,它用于设置控制错误的操作和通知、帧更新、多处理设置以及如何适当退出
应用程序。由
Lynx或者通过删使用的vgprop函数取代缺省设置的所有属性。使用vgGetprop函数可查询设置;使用vgGetSys函数获得在vgSystem函数。
程序应用
通过打开或关闭系统属性VGSYS_FPERROR来打开或关闭
浮点错误
指示器。
缺省值为VG—OFF。如果设置为VG_ON,则除代替系统并试图恢复程序外,vega还括入其自身的
浮点数。当VGSYS_FPERROR为打开状态,把通知层设置到VG—INFO或上述有存入浮点错误的控制台上。除了对程序的运行进行优化之外,用户还需使浮点数的数量最少用户能设置联机到控制台上所指示的提示错误消息。之后,把属性VGSYS_NOTIFY设置到下面各层的某一个层中,按照重要性递减的顺序列出:
. VG_FATAL可能引起一个退出;
. VG_WARN——也许失败也许不失败;
. VG_NOTICE——可能有错误或结构出问题;
. VG_INFO——为用户打印出错信息;
只要错误消息的严重程度比当前层严重,则将所要公布的消息写到标准的
输出设备上;否则,公布的消息作废。错误消息的来源可能是vega系统或用户的应用程序。例如,接收所有消息的设置代码为
vgSystem *sys;
sys=vgGetSys();
vgProp(sys,VGSYS_NOTIFY,VG_DEBUG);
在用户代码中使用下面的格式插入到调试层的消息
Yg
Notify(VG_DEBUG,VG_
APP,,);
帧管理
VGSYS_FRAMERATE的参数
默认值为300,表示每秒中更新显示的单位
帧数。
VGSYS_PHASE的设置指定通过vgsyncFrame函数和绘制
线程(如果它是一个分离的线程)使用的同步方法。可以给定下面
参数值中的属性之一。
. VGSYS_FREERUN——缺省状态。允许应用程序在任何速度下都能执行;定义的
帧率无效。
VGSYS_LIMIT——与VGSYS_FREERUN相同,但是比定义的帧率低。
vega的
执行程序(或vega过程)是一个单窗口过程,该窗口过程在它前后连接处有多个
线程。线程对于分配处理器时间的操作系统是一个
基本单位。为了在一台给定的机器上得到一个最优化的执行,用户必须在以多种线程方式下运行的系统中配置vega。
3种主要的vega
线程是请求(app)、选择和绘制,各自可作为一个单独的线程执行,或以任意两种线程组合的方式执行,或以3种线程执行,用户也可为交叉过程选择一个分离的线程,为数据库装载选择一个线程,为光点计算选择另一个线程。当内存分页
几何体使用大面积
数据库管理(LADBM)时,或者是用户自己的内存分页几何体时需要数据库装载线程。
选择一个
多线程模式时,使用vgProp函数把VGSYS_MPMODE设置成下面5种之一:
. VGSYS_MPDEFAULT——对于目标机器上的
CPU,让系纹确定最佳的结构。
. VGSYS_MP0———为请求、选择和绘制设置个默LL的线程。
. VGSYS_MP1——设置两个线程,在—个线程中请求和选择,在另一个线程中绘制。
. VGSYS_MP3——设置三个线程*分别用于请求、选择和绘制。
用户可以控制在系统上运行的线程处理器(CPU),在窗口属性中设置绘制线程和优先权,在通道属性中设置选择线程、光点线程和优先权,通过把vgsyste函数的属性VGSYS_APPCPU设为适当的CPU数来设置,app CPU。若CPU数为0,则在系统上的CPU数为-1。映省值为-1说明没有分配专门的CPU,这时操作系统将决定各线程每次使用CN运行的时间。如果在一台专门运行vega应用程序的机器上不存在指定的CPU数,则在机器上存入一个警告,并真指定线程为-1。
用户也可以控制线程时序的优先权。每个线程的优先权由下面标准确定:
. 在vega处理的vega优先权类中线程的vega优先层;
. 优先权类和优先权层被组合为一个线程的基本优先权形式;
. vega处理的优先权类参数值的范围是31—39,参数值大的优先权小,使用32为最佳。
表3.1说明vega优先权类参数值的含义。
vgsystem的VGSYS_VEGAPRI属性用于选择vega过程优先权类。注意,该优先权只在vegaNT下能用,而在SGI上的vega中不存在。
vega线程优先权层所有的范围是31—39,使用32时优先权最高。
注意:为解决平台之间
兼容性的问题,对于指定论vega的优先权类和线程层优先权而使用的数字值不同于由Windows使用的那些项目的实际数字值,vegaNT将把表3.1和表3. 2 中的值转化为适合WiIndows的数值。
vgSystem函数的VGSYS_APPPRI属性用于为请求线程选择
Vega线程的优先权层;
vgSystem函数的VGSYS—ISECTPROC属件用于选择一个异步交叉线程,在另一个CPU起作用的情况F使用人量交义进行处理时使用:用vGSYS—ISECTCPU属性对远行交叉线程的CPU及其上运行的优先织进行设置,该线程是用VGSYS—ISECTPRI属性定义的。
vgsystem函数的VGSYS_DBPROC属性用于选择一个不同步的数据库线程,运行期间在几何体中进行内存分贝时使用(由vega LADBM模型进行透明处理)。用VGSYS_DBPRI属性对运行数据库线程的CPU和在它上曲运行的过程优先权进行设置,该数据库是用VGSYS_DBCPU属性定义的。
vgSysdem函数的VGSYS_LPOINTPROC属性用于选择一个同步光点线程,该线程在与绘制线程和方向之间的比较中运行,并为光点计算可见性。
系统回调
有以下7种回调类型,这些回调是利用系统对vgAddFunc公共程序
函数的调用进行注册的。
VGSYS_PRESYNC———只在pfSync之前调用;
vGSYS_POSTSYNC——在pfSync之后和在与
IO设备同步后调用;
vGSYS_PRECONFIG——只在系统配置之前调用;
VGSYS—POSTCONPIG———在配置系统之后调用:
VGSYS—PREFRAME——只在pfFrame之前调用;
VGSYS_POSTFRAME———在PfFrame之后调用;
VGSYS_EXIT——在用户退出调用的函数之后从vgExit函数中调用。
退出系统
用户的应用程序不应当调用Exit。为适当地按顺序退出应用程序可调用vgExit函数,把一个整数码送到vgExit函数中。如果用户的应用程序以一个错误的结果退出系统,则会使该码为负数。
如果以
用户码的一个结果退出执行的任务时,需在调用vgIniSys函数之后使用vgUserExit函数安装用户的退出函数。 —旦安装完毕,将以vgExit程序开始调用该用户的退出函数。如果不希望用户的函数终止程序,则用户的退出函数应返回-1。使用vgExit函数时要特别仔细。用户已注册的
回调函数的内部不调用vgExit函数,是为了避免死循环。用户的模型也可以安装VGSYS_EXIT回调函数,因此使用考调用vgExit函数时会通知它们。
使用vgExitKey函数会让系统记录一个键,当打开输入时,选择该锡会使程序退出。该镀由它的
ASCII码给定。如果未指定该镀,vgGetExitKey函数将返回先前定义的退出键ASCII码,当前从未定义时返回-1。当任意一个程序打开窗口确认定义的链己被按下,则调用vgExitt函数。鼠标光标所在的窗口就是当前窗口,只要在当前窗口上进行输入,窗口就会识别出该键是否按下。
时间
vgGettime函数以秒为单位返回调用vgInitSys函数的时间,
返回值为
双精度浮点数,具有
系统支持的最
高精度;vgGetRunTime函数以秒为单位返回绘制第一帧时所用的时间:vgGetFrameTime函数返回从开始绘制第一帧到员后开始调用vgFrame函数之间的时间;vgGetDeltaFrameTime函数返回当前帧的开始点和前一帧的开始点之间的时间。
double vgGetRunTime(void);
double vgGetFrameTime(void);
double vgGetDeltaFrameTime(void);
vega还提供4种另外的函数,把它们加到与vega产品模块有关的内容上(即
特殊效果,LADBM)。
int vgAddModAvail (char *name);
int vgPindModAvail (char *name);
char *vgGeModAvail (int idx );
int v8GetNumModAvail(
void);
vgAddModAvail 函数由一个产品模块的初始函数调用,它把模块名加到可用模块的列表中。这样并不能打开或提供任何相关的已命名产品模块,而只是把产品模块名放置到一个能从内核中查询的列表中。作为特殊情况.在一个产品模块初始化时,在确定使用
许可协议对它的操作有效之后,格在列表中增加该产品模块的名字。
如果一个特定的产品模块为用户所使用,则在
使用函数vgConfigSys配置之后任意时刻都能调用函数vgFindModAvail来查询模块的可用性。需要给该函数提供模块名称,它返回查询
产品名称的一个索引列表,如果产品模块不可用,则返回-1。vgGetModAvail函数通过列表中的索引号返回一个产品模块的名称,索引号的
开始值为()。
vgGetNumModAvail函数返回列表中产品模块的个数。
这一节包含的信息有助于vega产品模块的开发。一个产品模块是一个为vega提供新增功能的库。下面介绍在vega中管理事件的基本概念。这并不是预期使一个产品模块如何成为实际应用程序的函数。
vega提供的建模行为是通过自行管理的事件通知和自行管理的事件活动。这些事件的自行管理特征允许vega产品模块互相传递。vega类
记录器(vega Class Recorder c_vega
VCR)同样是一个可选的
Vega产品模块,从而当需要发生事件(事件活动)时,利用这个装置通知那些相同的模块,模块事件发生了:
#include
void vgRegisterInstance (vgCommon *handle, void *name);
unsigned vgAddEventFunc (vgCalback *
eventHandler,size_t event DataSize);
void vgEvent()ccurred (vgCommon *handle,unsigned eventId,void *edata):
vgRegisterInstance ()函数用于记录vega或利用任意需要这样通知的任意模块的产品模块类事件。参数如下;
.
handle——指向被注册
事件句柄的一个指针。
. name——vega类名或利用正在注册的句柄的产品模块事件。
下面代码表示一个特殊效果模块应如何使用一个特殊VCR类
事件记录它所有的事件。
unsigned num=vgGetNumFx();
for(i=0;i
vgAddEventFunc((vgFx *)vgGeoFX(i),vcrName);
vgAddEventFunc()函数允许产品模块使用vega事件函数提供的模块地址作记录,当vega处理和重建一个特殊事件时调用事件函数。 vgAddEventFunc()函数返回一个产品模块和使用引入该事件的vega事件
标识符eventId,其参数为:
.
EventHandler——指向管理这一特定事件的事件管理器地址的一个指针。器攀控如何重建该事件的详细情况。
. EventDataSize——以字节数表示与该
事件关联的数据大小。
vegaVCR是一个使用该机构的一个产品模块的例子,当在PLAyBACK方式下,VCR遇到一个事件标识符(eventId)
信息包,该信息包包含了不在预先指定的vegaVCR事件的有效范围内的事件标识符,VCR将调用已注册的事件函数模块,该模块即相当于产品模块信息包的事件标识符eventId,用于通知需要出现事件的产品模块。 下段代码
举例说明一个应用程序如何注册一个事件管理器以便确定使用控制交叉、选择和绘制的方法穿越一个节点的穿越
掩码。
unsigned afterburnerEventId=vgAddEventFunc(setAfterBurners,
sizeof(float));
vgEventOccurred函数用于通知已经发生一个
Vega事件,vega能通知需要这种通纪的任何模块。其参数为:
. Handle——指向刚刚获得事件的事件旬柄的一个指针。
. EventId——描述该事件的惟一参数值(该值从vvgAddEventFunc函数中返回)。
. Edata——指向
数据结构的一个指针,该结构包含处理和重建该事件所必须的事
件数据。
下段代码举例说明一个特殊效果模块如何通知
的时间。
void vgFxSetTime(vgFx *fx,int which, doubte val)
{
struct_eventdata
{
double val;
int which;
} eventdata;
switch((vgFxTimeProp)which)
{
case VGFX_STARTTIME;
if(val=VGFX_NOW)
{
st=vgGetTime() eventdata.val=val;
}
else { st=val;
eventdata.val=val-vgGetTime();
break;
...
vgEventOccurred(fx,setTimeEventId,&eventdata);
}