基本介紹
簡介,認識,實際套用,程式設計,函式介紹,程式套用,
簡介
Vega值是期權對標的資產價格波動率變動的敏感度,它反映當波動率變化一個單位時(通常用1%來衡量),期權價格理論上的變化,Vega值永遠都是正數,值越大,投資者面對波動率變化的風險便越大。
期權波幅每1%的改變會造成其價若干的變動,也稱Vega值。
公式為:Vega=期權價格變化/波動率的變化。
認識
對權證有一定認識的投資者,相信都知道影響權證價格的主要因素,包括相關資產的價格、引伸波幅、權證的剩餘年期、市場利率及相關資產的預期派息率等。條款不同的權證,其理論價格對上述五大因素變動的敏感程度亦各有不同,而Greeks值[如對沖值(Delta)、Vega值等]便是用來量度權證理論價格對上述各因素敏感度的工具。
其中,早前提及過的對沖值便代表權證價格對相關資產價格變動的敏感程度。除相關資產價格外,引伸波幅便是影響權證價格的另一個重要因素,而Vega值便代表權證價格對引伸波幅變動的敏感程度。Vega值並非常數,一般而言,到價證的Vega值最高,若以權證價格的百分比計,則Vega值占深入價外證的比重最高。舉例言之,假設某權證的Vega值為0.05,則代表當該證的引伸波幅每升或跌一個波幅點,該證理論價格便會跟隨上升或下跌0.05。
理論上,在正股股價及引伸波幅同時上升時,兩隻實際槓桿相同的認購權證當中,Vega值較高的一隻升幅會相對較大;不過,若出現相反的情況,即引伸波幅下調時,Vega值愈高的權證,其理論價格的跌幅同樣亦會較大。
所以,若揀選高Vega值的權證而又能看中引伸波幅上升的話,則無論買認購權證或認沽權證,均可能有較大的升幅。唯引伸波幅受到各方因素影響,一般投資者能準確預測的難度極高;因此,我們認為投資權證應從多注意相關資產的走勢出發,在對正股或指數有明確預期方向時,應多參考其他因素,如行使價、到期日、引伸波幅高低、Vega值的高低及發行人素質等因素,再作投資決定;若純為希望利用引伸波幅升跌而投資於權證的話,可能是較本末倒置的做法。
實際套用
對於外匯期權的買方而言,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——為用戶列印出錯信息;
. VG_DEBUG——用於程式調試。
只要錯誤訊息的嚴重程度比當前層嚴重,則將所要公布的訊息寫到標準的輸出設備上;否則,公布的訊息作廢。錯誤訊息的來源可能是vega系統或用戶的應用程式。例如,接收所有訊息的設定代碼為
vgSystem *sys;
sys=vgGetSys();
vgProp(sys,VGSYS_NOTIFY,VG_DEBUG);
在用戶代碼中使用下面的格式插入到調試層的訊息
YgNotify(VG_DEBUG,VG_APP,,);
YgNotify(VG_DEBUG,VG_APP,"this is an example debug notice at line %ld."._LINE_);
幀管理
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優先權類中執行緒的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 vgGetTime(void);
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_vegaVCR)同樣是一個可選的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<num;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);
}