顯示具有 Option 標籤的文章。 顯示所有文章
顯示具有 Option 標籤的文章。 顯示所有文章

2014年7月18日 星期五

指數分配與選擇權價差策略

 

W

延續幣圖誌上,牧大的分享 期貨報酬率 v.s. 對數常態分配? (R實務篇) 此篇,

我們瞭解市場漲跌的分配是尖頭肥尾的,白話文也就是沒啥漲跌的日子非常多,很大漲跌的日子也比想像多。

 

而依據這樣的特性,在選擇權市場的交易上,我們很自然的想到,雙SELL價平的選擇權賺取低波動的日子,再雙BUY兩倍價外兩檔或再遠的履約價來賺取大波動的日子,這樣組合的價差交易實質是買方部位,風險有限,獲利無限,而且收的權利金還會比買方花費的權利金多。

 

損益如上圖顯示,沒啥波動的中間區域是獲利的,向兩邊越遠的獲利也越大,會虧損的區域僅在兩邊小漲小跌的部份,很符合前篇市場漲跌的分配的觀察結果,所以若拿來操作,應該是很好的策略………吧?

 

這樣的策略能不能獲利?  L認為”應該不會”。

 

說”應該”的原因是沒有去完整回測過,若要作回測,方式是模擬每日收盤前,將前日部位平倉,然後價平CALL和PUT各賣出一口,價外二或三檔的CALL和PUT各買進兩口,這個履約價的選擇差別就像上圖一樣會是不同的”W”,日復一日這樣測試得結果。

 

可想而知這樣作的交易費用是很高的,每日一單位的操作就要新倉賣兩口買四口,平倉買兩口賣四口,或許,以週的頻率來作一次會好很多,而且週的指數報酬率分配,”應該”也類似日的分配一樣是尖頭肥尾。以下我們先排除掉交易成本的影響,單看這個策略是否有獲利能力。

 

說”不會”的原因是選擇權市場本來就是這樣的分配,我們從買賣兩方獨立出來看,作買方的人買兩邊價外的CALL或PUT,權利金的價格低,若有大行情的出現會獲利數倍的可能,就像前篇20倍速的選擇權提到的一樣。而不論是主動投機或作避險,對買方來說,價外的履約價遠比價內的履約價更有需求,很自然的,越多人想買,這些價外的選擇權就會被買起來變貴比價平價內的貴,要注意的是,這些價外的選擇權價格是低的,但是比較貴

 

另一邊,作賣方策略會怎麼選擇履約價? 這因素很多,如果我們先簡化要以時間價值最大的因素作為第一考量,那價平的時間價值是最多的,價內外兩三檔的時間價值就有點少,再更價內外三四檔以上的履約價已經沒什麼時間價值,賣深價內外的只能收一點點權利金,所以從時間價值這個因素來看,價平的履約價是最適合賣方的,也因此,越多人想賣,這個價平履約價的權利金就會被越賣越便宜,要注意的是,價平選擇權價格是比價外高的,但是比較便宜

 

以上所說的貴和便宜,其實就是隱含波動率的差別,只是L想用白話一點的方式來紀錄這些差別,簡單的說,價平履約價的隱含波動率會比較低(便宜),越往價外履約價的隱含波動率會比較高(貴),如果把所有履約價的隱含波動率排列,就是波動率微笑曲線了,如下圖。

 

SMILE

 

波動率微笑曲線有一些應用,例如右方越高,可能表示市場越貪婪,左方越高,可能表示市場越恐懼,又或者微笑並不是很好看,部份平部份斜,關於波動率微笑曲線GOOGLE一下可以查到很多資料,上一段以買賣方角度來解釋波動率微笑的成因只是其中一種說法,還有一些解釋可以再找資料研讀,這邊先回到開始的問題,那價差策略到底可不可行。

 

由前面的說明可以瞭解,這個策略是去賣比較便宜的價平選擇權,然後又去買比較貴的價外選擇權,市場上本來就是這樣的傾向了,所有選擇權市價都是當下的均衡點,當我們這個策略作進去市場後,能夠獲利只有兩種可能,第一,未來的波動比現況波動的預期更低,也就是尖頭更尖,我們策略的賣方可以獲利。第二,未來的波動比現況波動的預期更大,也就是肥尾更肥,那我們策略的買方可以獲利。

 

那所以到底能不能獲利? 不一定,除非我們能預期以上兩種可能會出現再作吧,如果像傻瓜投資法一樣一直作下去,L會預期這長期的表現是沒賺沒賠,但會一直付出交易費用,是不是如此,或許哪天心血來潮再作測試了。

 

FXB

《本文與 Bituzi 同步刊登》

 

2014年7月11日 星期五

學習交易選擇權

think

選擇權市場是個很吸引人的地方,每個人多少都會聽過一些大賺的故事,也相信著獲利的時刻終會降臨到自己身上,於是一直努力著,在這個市場裡,似乎永遠都有機會和方法獲利,而且有許多獲利方法是股票或期貨的交易者無法觸及的。

 

但是,贏家不多,能夠持續穩定獲利的交易者真的不多,L有幸認識幾位選擇權交易的高手,時常交換想法,其中有一些觀念可以和讀友分享,關於學習交易選擇權。

 

記得選擇權是怎麼開始接觸的嗎? 大部份人第一印象可能是來自教科書、可能是書名很厲害的交易書籍、可能是某篇贏家的採訪文章、或是某網站的選擇權操盤分享,不論是哪一種,我們得到的關於選擇權交易知識,都只是一個片段,所以為了要加強能力,認真的交易者會開始收集各種片段,慢慢的拼湊,這有哪些片段呢? 由淺至深舉例如下

 

選擇權基礎部份

  1. 瞭解商品規格、交易制度及交易費用

  2. 理論價格評價,Black–Scholes option pricing model

  3. 選擇權風險評估 (Delta、Gamma、Vega、Theta、Rho)

  4. 價格波動率,(歷史波動率、隱含波動率)


 

價差交易部份

  1. 垂直價差、比例價差

  2. 跨式、勒式部位

  3. 蝴蝶價差、禿鷹價差

  4. 時間價差,近遠月

  5. 與期貨組合部位


 

套利及避險部份

  1. 合成部位

  2. 套利原理及機會分析

  3. 轉換與反轉換

  4. 保護性的call和put

  5. 市場間的價差交易


 

策略設計與測試部份

  1. 台指選測試

  2. 長短期選擇權策略

  3. 選擇權應用期貨訊號

  4. 歷史買方賣方勝率與盈虧比紀錄

  5. 選擇權在期貨投資組合中的應用

  6. 選擇權市場籌碼分析


 

操作系統部份

  1. 風險評價程式實作

  2. 下單系統實作


 

以上,有點像是目錄,每一個主題都是需要花費許多時間和精神去研究的,前面基礎的部份找找書籍或網站資料都可取得,而進階一點的部份可能要自己整理研究或找論文來參考看看。而學習以上的東西之後,大概就能對選擇權運用有所瞭解,只是事情沒那麼簡單,甚至可以說那些都是基本功而已,無法掌握策略獲利,這情況就像是價差交易搞的再懂再熟,不知道什麼時候該用該出也是枉然。

 

所以準確地說,以上所提到的內容都只是技術性的知識。它們都很重要,熟悉各項策略及特性可以讓我們有更多機會在市場生存與發展,但是真正能夠操作選擇權獲利的主因是對市場的觀察力及思考力。困難的是,書本沒教,也不太有人會專門說這些,最主要的學習來源可能就是交易經驗。

 

說觀察力及思考力有點抽象,這指的是對市場的觀察及對後勢的思考並配置部位。我們知道現在選擇權市場價格是非常有效率的,若有一丁點的套利機會是馬上被法人啃掉,一般投資人不容易參與這塊,但是在法人積極造市下的好處是讓流動性高,可以輕鬆計算目前的波動率水準,方便觀察。而觀察,就是以方向、波動和時間三個角度去觀察市場,思考,則是建立在現有的觀察上,預期未來對方向、波動和時間三個角度的看法。有了對後勢的看法,再來運用前述某項策略來進行交易。

 

能思考對未來價位的方向、波動率的方向或是時間的掌握嗎?

 

舉例來說,選舉,是一個可預期的事件,是有機會對指數造成重大影響的事件,人人都知道波動率應該會上升,而有思考力的交易者會提前就佈局作多波動率,例如作跨式買方,但他也研判選舉一結束後波動率會立刻下降,所以在跨式買方已經獲利的選前最後一個交易的最後一小時,他又進場作遠月的跨式賣方,(補充說明選擇權遠月合約的VEGA比近月大),而且他作了選後的價格預期,在大漲、大跌、小漲、小跌中將最不可能的小跌作了額外賣方布置,其餘加作買方,然後選後開盤時再次進場作空波動率。這是真實的故事,結果行情發展確實照這樣的劇本走,這樣的思考和判斷能力當然讓他比一般人更有競爭力。

 

除了事件之外,平時也有一些因素可以觀察並思考方向和波動率的走向,在這邊可能不行再說更多了,總之,保持思考方向、波動和時間三個角度去觀察市場,預期在現有水準下是否會上升或下降,進場後部位的各種情境分析,及在各種情境的對應處理,以上,是學習交易選擇權的小建議。

 

 

FXB

《本文與 Bituzi 同步刊登》

 

 

 

2014年7月4日 星期五

20倍速的週選擇權

 

週選擇權翻20倍

 

近期台指盤勢的波動有些放大,前次結算和這幾日的強漲行情都可以看到有選擇權在一兩個交易日中就可以翻了幾十倍,如同上圖,5點的CALL在兩個交易日翻成100點。

 

不過,看的到要怎麼吃的到呢? 本篇要紀錄的是週選擇權的一些特性和應用,還有策略執行的心得。

 

先專注在”倍數”這個特性上來思考,如果我們想要賺很多倍,那第一條件是成本點數要很小,才有機會到一兩百點時能賺幾十倍,第二條件是要對標的很敏感,才有機會在盤勢對邊時快速的增值。會符合這兩個條件的商品就是快到期的選擇權,因為存續期間短,時間價值剩不多,偏價外的履約價成本小,同時有很高的敏感度,行情發生時能快速變成價內等同期貨。

 

所以我們針對週選擇權的GREEKS來觀察並應用,要怎麼掌握價格變化需要理解THETA和GAMMA,這兩個因素就是前述兩個條件的觀察點。在快要到期時,選擇權的THETA和GAMMA都是大的,(THETA大表示時間價值掉的快,而不是時間價值本身的點數大)這兩個GREEKS是反向的,之前已有紀錄過選擇權入市先決定要站哪一邊,與時間同邊還是要與趨勢同邊,這篇先跳過這部份,我們著重買方倍數的策略,也就是付一點權利金,付一點THETA,來買一個噴出,來買一個正GAMMA。

 

既然會有這麼高的賺賠比,當然勝率也是非常低的,勝率低的原因是要很準,方向要對、時間要快、幅度要夠,缺一不可

 

方向錯就不用說了,而且錯的離譜也是好事,因為也只會損失一點點。時間要快就是要拿捏的夠準,也必須要知道如果多久時間沒發動時會損失的THETA值,當然若有心理準備全賠的話就不用算那麼細了。幅度要夠,因為買一點點的權利金肯定是價外一兩檔之外的履約價,如果衝不到那麼遠,權利金一樣是雙手奉上。

 

接著是考慮操作的計劃,買進5點的選擇權,衝到100點的過程,你抱的住嗎? 大多數人都是會出場停利的,鮮少有人能夠抱的住一大波,當然不是說抱牢牢一定好,要談出場方式需要回頭想想這個策略評估。原本,估計是賺10倍以上,勝率不到1成,但若會先出場停利,表示勝率會提高,也許兩三成,但同時賺賠比也只剩下三四倍,哪種好? 可能要從凱利公式來檢視這兩種出場策略的數值再來判斷,前提是,操作是有紀律的。

 

而實際上操作的經驗,L是有小小建議,如果買進真的噴出,不要出場,要抱到底!!! 就當作忘了這個部位,會結算多少就是多少。原因是大部份情況,出場又會想買回,但會買不回來,同時進進出出又造成額外費用,也沒那麼準也可以短線都作對(真那麼準不如作短線就好了),反而賺的不如緊抱的多。

 

近期盤勢波動放大,從買方角度來想,我們追求便宜的選擇權能倍數獲利,但賣方當然也不是傻瓜,這種狀況多了,很自然的VOL也會增加,波動率增加後的選擇權就沒那麼便宜了。

 

 

FXB

《本文與 Bituzi 同步刊登》

 

2013年12月11日 星期三

選擇權GREEKS實作(C#)

 

在能夠計算 選擇權評價-BS MODEL (with Excel) 及 隱含波動率 (with EXCEL VBA、C#) 之後,再來剩GREEKS了,要計算四個影響價格的變數是Delta、Gamma、 Vega、Theta,完成這部份就可以得出目前選擇權部位組合的各項數值。關於這些希臘字母的定義和作用,都需要深入瞭解後才能對選擇權策略有所掌握,進而設計出選擇權策略。

 

此篇要紀錄的僅是關於系統開發,雖說大部份的交易軟體都會提供GREEKS資料,但總要是自己寫的才能確定正確性,因為券商軟體算的不一定對。當然也有許多人不在意些微差距,或根本沒在觀察GREEKS,但那樣操作選擇權是無法進步的,再說若要自己建立策略模組,這些也只是第一步而已。

 

大部份設計選擇權監視程式的軟體是EXCEL,因為最簡便,直接利用公式和一些函數設計就可以完成,若要即時串接部位的話,大部份是寫VBA程式和券商API串接,而行情的部份可以用DDE或API來接收。

 

但是EXCEL會有效能問題,如果接受行情多,再加上運算邏輯複雜,EXCEL很可能會有延遲的狀況,因此比較好的方式還是自己寫程式,可以先由券商API所提供的範例程式來測試,可能是VB、C#、C++或Delphi等等,選一個好寫的來測試收行情、回報、部位。此篇L要紀錄的是以C#來實作選擇權GREEKS。

 

整段範例程式碼貼在最後面,需要先說明一下前因後果,先有一個DataTable是用來紀錄未平倉的選擇權部位,這個副程式所要處理的是計算目前所有未平倉選擇權部位的GREEKS並寫進DataTable,這個DataTable再與DataGridView串接,就可以顯示在FORM上

 

這個DataTable,取名dtOI,至少有以下的欄位:

 

dtOI.Columns.Add(new DataColumn("SettleM", typeof(string))); //月份

dtOI.Columns.Add(new DataColumn("Strike", typeof(double))); //履約價

dtOI.Columns.Add(new DataColumn("CP", typeof(string))); //Call or Put

dtOI.Columns.Add(new DataColumn("BS", typeof(string))); //Buy or Short

dtOI.Columns.Add(new DataColumn("Qty", typeof(string))); //口數

dtOI.Columns.Add(new DataColumn("Match", typeof(double))); //成交價

dtOI.Columns.Add(new DataColumn("Market", typeof(double))); //市價

dtOI.Columns.Add(new DataColumn("VOL(%)", typeof(double))); //隱含波動率

dtOI.Columns.Add(new DataColumn("DELTA", typeof(double))); //DELTA

dtOI.Columns.Add(new DataColumn("GAMMA", typeof(double)));//GAMMA

dtOI.Columns.Add(new DataColumn("THETA", typeof(double))); //THETA

dtOI.Columns.Add(new DataColumn("VEGA", typeof(double))); //VEGA

 

在執行副程式之前,除了最後五欄之外都是準備好的,然後有一些變數要準備

AssetPrice 期貨價格

Strike 履約價

InterestRate 利率

Expiry 到期因子

Target 選擇權的市價

 

還有之前紀錄隱含波動率的類別,一開始要NEW一下。

Option op = new Option();

 

然後就開始了,看片段來說明一下

 

圖片 1

 

圖片 3

 

圖片 4

 

以下PUT的部份就依此類推。程式碼如後所貼,有一些使用到的參數及關聯FORM的變數沒有仔細說明,不過整個架構已經是可以瞭解的了。以前 L 設計時找不到完整的參考資料,一步步的自己設計,現在若有同樣需求的朋友看到這邊可以自由取用,歡迎參考及指正

 
private void Greeks()
{
int i = 0;
AssetPrice = double.Parse(label16.Text);

while (i < dtOI.Rows.Count)
{
Strike = double.Parse(dtOI.Rows[i]["Strike"].ToString());
Target = double.Parse(dtOI.Rows[i]["Market"].ToString());
Qty = double.Parse(dtOI.Rows[i]["Qty"].ToString());

//期貨
if (dtOI.Rows[i]["CP"].ToString() == "")
{
if (dtOI.Rows[i]["BS"].ToString().Trim() == "B")
{
dtOI.Rows[i].SetField("DELTA", 200 * Qty );
}
if (dtOI.Rows[i]["BS"].ToString().Trim() == "S")
{
dtOI.Rows[i].SetField("DELTA", -200 * Qty );
}
}

//CALL civ(double AssetPrice, double Strike, double InterestRate, double Expiry, double Target)
if ((dtOI.Rows[i]["CP"].ToString().Trim()) == "C")
{
if (dtOI.Rows[i]["PId"].ToString().Trim() == "TXO")
{
if (dtOI.Rows[i]["SettleM"].ToString().Trim() == label10.Text.Substring(0, 6)) //近月
{
AssetPrice = double.Parse(label16.Text);
Expiry = Expirynear;
}

if (dtOI.Rows[i]["SettleM"].ToString().Trim() == label11.Text.Substring(0, 6)) //遠月
{
if (label22.Text != "")
{
AssetPrice = double.Parse(label22.Text);
}
else { AssetPrice = double.Parse(label16.Text); }
Expiry = Expiryfar;
}
}
else //週選
{
if (wnFid != "MX")
{
if (dtOI.Rows[i]["PId"].ToString().Trim().Substring(1, 2) == wnFid.Substring(1, 2)) //近週
{
AssetPrice = double.Parse(label23.Text);
Expiry = Expirywn;
}
}

if (wfFid != "MX")
{
if (dtOI.Rows[i]["PId"].ToString().Trim().Substring(1, 2) == wfFid.Substring(1, 2)) //遠週
{
AssetPrice = double.Parse(label22.Text);
Expiry = Expirywf;
}
}
}

civ = op.civ(AssetPrice, Strike, InterestRate, Expiry, Target);
d1 = op.d1(AssetPrice, Strike, InterestRate, Expiry, civ);
nd1 = Math.Exp(-0.5 * d1 * d1) / Math.Sqrt(2 * Math.PI);
nd2 = op.NormsDist(d1 - civ * Math.Sqrt(Expiry));

//DELTA NormsDist(double x) d1(double AssetPrice, double Strike, double InterestRate, double Expiry, double Volatility)
DELTA = op.NormsDist(d1);
GAMMA = nd1 / (AssetPrice * civ * Math.Sqrt(Expiry));
THETA = (-(AssetPrice * nd1 * civ / (2 * Math.Sqrt(Expiry))) - InterestRate * Strike * Math.Exp(-InterestRate * Expiry) * nd2) / 365;
VEGA = (AssetPrice * (Math.Sqrt(Expiry)) * nd1) / 100;

dtOI.Rows[i].SetField("VOL(%)", Math.Round(civ * 100, 4));

if (dtOI.Rows[i]["BS"].ToString().Trim() == "B")
{
dtOI.Rows[i].SetField("DELTA", Math.Round(DELTA * 50 * Qty , 0));
dtOI.Rows[i].SetField("GAMMA", Math.Round(GAMMA * 50 * Qty * AssetPrice / 100, 0));
dtOI.Rows[i].SetField("THETA", Math.Round(THETA * 50 * Qty, 0));
dtOI.Rows[i].SetField("VEGA", Math.Round(VEGA * 50 * Qty, 0));
}
else if (dtOI.Rows[i]["BS"].ToString().Trim() == "S")
{
dtOI.Rows[i].SetField("DELTA", Math.Round(-DELTA * 50 * Qty , 0));
dtOI.Rows[i].SetField("GAMMA", Math.Round(-GAMMA * 50 * Qty * AssetPrice / 100, 0));
dtOI.Rows[i].SetField("THETA", Math.Round(-THETA * 50 * Qty, 0));
dtOI.Rows[i].SetField("VEGA", Math.Round(-VEGA * 50 * Qty, 0));
}
}

//PUT piv(double AssetPrice, double Strike, double InterestRate, double Expiry, double Target)
if ((dtOI.Rows[i]["CP"].ToString().Trim()) == "P")
{
if (dtOI.Rows[i]["PId"].ToString().Trim() == "TXO")
{
if (dtOI.Rows[i]["SettleM"].ToString().Trim() == label10.Text.Substring(0, 6)) //近月
{
AssetPrice = double.Parse(label16.Text);
Expiry = Expirynear;
}

if (dtOI.Rows[i]["SettleM"].ToString().Trim() == label11.Text.Substring(0, 6)) //遠月
{
if (label22.Text != "")
{
AssetPrice = double.Parse(label22.Text);
}
else { AssetPrice = double.Parse(label16.Text); }
Expiry = Expiryfar;
}
}
else //週選
{

if (wnFid != "MX")
{
if (dtOI.Rows[i]["PId"].ToString().Trim().Substring(1, 2) == wnFid.Substring(1, 2)) //近週
{
AssetPrice = double.Parse(label23.Text);
Expiry = Expirywn;
}
}

if (wfFid != "MX")
{
if (dtOI.Rows[i]["PId"].ToString().Trim().Substring(1, 2) == wfFid.Substring(1, 2)) //遠週
{
AssetPrice = double.Parse(label22.Text);
Expiry = Expirywf;
}
}
}

piv = op.piv(AssetPrice, Strike, InterestRate, Expiry, Target);
d1 = op.d1(AssetPrice, Strike, InterestRate, Expiry, piv);
nd1 = Math.Exp(-0.5 * d1 * d1) / Math.Sqrt(2 * Math.PI);
nd2 = op.NormsDist(d1 - piv * Math.Sqrt(Expiry));

//DELTA NormsDist(double x) d1(double AssetPrice, double Strike, double InterestRate, double Expiry, double Volatility)
DELTA = op.NormsDist(d1) - 1;
GAMMA = nd1 / (AssetPrice * piv * Math.Sqrt(Expiry));
THETA = (-(AssetPrice * nd1 * piv / (2 * Math.Sqrt(Expiry))) + InterestRate * Strike * Math.Exp(-InterestRate * Expiry) * nd2) / 365;
VEGA = (AssetPrice * (Math.Sqrt(Expiry)) * nd1) / 100;

dtOI.Rows[i].SetField("VOL(%)", Math.Round(piv * 100, 4));

if (dtOI.Rows[i]["BS"].ToString().Trim() == "B")
{
dtOI.Rows[i].SetField("DELTA", Math.Round(DELTA * 50 * Qty , 0));
dtOI.Rows[i].SetField("GAMMA", Math.Round(GAMMA * 50 * Qty * AssetPrice / 100, 0));
dtOI.Rows[i].SetField("THETA", Math.Round(THETA * 50 * Qty, 0));
dtOI.Rows[i].SetField("VEGA", Math.Round(VEGA * 50 * Qty, 0));
}
else if (dtOI.Rows[i]["BS"].ToString().Trim() == "S")
{
dtOI.Rows[i].SetField("DELTA", Math.Round(-DELTA * 50 * Qty , 0));
dtOI.Rows[i].SetField("GAMMA", Math.Round(-GAMMA * 50 * Qty * AssetPrice / 100, 0));
dtOI.Rows[i].SetField("THETA", Math.Round(-THETA * 50 * Qty, 0));
dtOI.Rows[i].SetField("VEGA", Math.Round(-VEGA * 50 * Qty, 0));
}
}

//dtOI.Rows[i].SetField("VOL(%)", i);
i = i + 1;
}

}

 

 

 

2013年8月29日 星期四

選擇權評價-BS MODEL (with Excel)

 

選擇權的評價是策略的最基礎,瞭解各項因素對選擇權價格的變動後,我們才能進一步討論各項因素的實際運用。我們一開始需要先來應用Black–Scholes option pricing model,經過實際的計算瞭解後,再來看Greeks和波動率,再來才是各種價差和組合策略。

 

關於選擇權的評價和解說,網路上的資料已經非常豐富,各項變動因素說明的文章也很容易找到,所以為了有些不同的貢獻紀錄,L將偏重在計算函數和程式介紹上面,實作上以EXCEL VBA和C#為主。

 

另一方面,大部份人看到評價公式後大概就已經懶惰了,但光是看看公式和解釋,其實不如實際寫一次、算一次來的有體會,而且實際上真的很容易,如果對於選擇權有興趣卻沒計算過的朋友們,請跟著一起作看看吧。

 

首先就看看公式的定義,可以到這兩個網址先大略看看假設和定義,有興趣再詳讀內容

Black–Scholes

Black-Scholes期權定價模型

 

推導和證明就算了吧,如果有要念財金所的話倒是會出考題,我們只要會用就好了,所以只要看Call和Put的價格是這樣的:

 

CP


 

其中d1和d2是這樣的:

 D1D2


 

 

參數是這樣的:

PA


 

所以我們知道計算價格需要五個變數,

s 現貨價格,我們拿來算台指選的話,就拿台指期市價當作s

k 履約價格

t 距離到期日的時間,要年化

r 年利率

v 年化波動率

 

放到excel上寫寫看了,如下圖,

 

excel


 

s,就是期貨價,假設7750。

k,就是履約價,假設我們要算的是7700的call和put。

t,年化的到期餘日這個地方要注意的是有人一年用日曆日365,也有人一年是用工作日255左右,L自己是慣用工作日的算法。到期餘日就是今日和到期日的差距,可以利用excel的函數 NETWORKDAYS()來計算,以圖中例子就是=NETWORKDAYS(C27,C28)。今日也可以用函數來包,例如=DATE(YEAR(NOW()),MONTH(NOW()),DAY(NOW()))。算出到期餘日為16後,拿來除255,就得到年化的t = 0.062745。

r,年利率,拿定存利率一年約一點多%,以1%為例。

v,主觀的波動率,波動率是重要的主題,下篇再以歷史波動率和隱含波動率一起進行介紹紀錄,這邊以15%為例子。

 

有了這些參數,就可以算價格了,Call算出來理論價是145.23,Put是90.4。用函數 =calloption(F25,F26,F27,F28,F29),這個calloption就是我們要寫的function囉,打開vba或直接在excel按ALT+F11,貼上這段程式碼

 
Function calloption(s, k, t, r, v)

calloption = s * Application.NormSDist(cal_d1(s, k, t, r, v)) - k * Exp(-(r * t)) * Application.NormSDist(cal_d2(s, k, t, r, v))

End Function

Function putoption(s, k, t, r, v)

putoption = k * Exp(-r * t) * Application.NormSDist(-cal_d2(s, k, t, r, v)) - s * Application.NormSDist(-cal_d1(s, k, t, r, v))

End Function

Function cal_d1(s, k, t, r, v)

cal_d1 = (Log(s / k) + (r * t) + (v ^ 2 * t / 2)) / (v * Sqr(t))

End Function

Function cal_d2(s, k, t, r, v)

cal_d2 = cal_d1(s, k, t, r, v) - v * Sqr(t)

End Function

 

稍微再解釋一下,公式的N(),就是常態分配的機率,可以用NormSDist()來計算,sqr()就是根號,d1和d2也都各自寫了function,也都是照著公式直接拿進來寫,一個一個填就完成了。

 

如果跟著作的話,現在就可以試看看這幾個參數的變動對於選擇權價格的影響囉。

 

接著說明一點,這是不包含股利的評價模式,對於股票選擇權不適用,算指數選擇權剛好。

 

我們現在是帶入五個變數計算出理論的選擇權價格,實際上市場本來就有市價,那麼五個變數裡只要知道四個,就可以求出剩下來那一個。所以我們有選擇權市價、期貨市價、要求的履約價、到期日、利率之後,就可以算出波動率了,是的,它就是隱含波動率,下篇再繼續寫程式實作它。 ( 隱含波動率 (with EXCEL VBA、C#) )

 

 

2013年7月2日 星期二

選擇權策略

 

選擇權交易是 期權交易方法 裡非常非常重要的一塊,L想要開始紀錄選擇權的研究都想了很久如何起頭,因為它變化無窮,可以設計出太多種策略,只要深入瞭解選擇權各種特性,搭配買賣方價差或不同月份或期貨,就能找到特別的策略。

 

還有許多故事是源由選擇權策略,那些大起大落的玩家專家們,在這個市場經歷了多少勝利與苦頭,都在這裡,這麼多迷人的奧妙之處,你怎麼能不愛選擇權呢?

 

此篇先紀錄未來想要整理的主題,畢竟可以談的主題太多,需要先整理個架構,再來抽空各個逐一紀錄。

 

選擇權基礎部份

  1. 評價,Black–Scholes option pricing model  (選擇權評價-BS MODEL (with Excel)  )

  2. Delta (  選擇權GREEKS實作(C#) )

  3. Gamma

  4. Vega

  5. Theta

  6. 隱含波動率,implied volatility ( 隱含波動率 (with EXCEL VBA、C#)  )


 

價差策略部份

  1. 垂直價差、比例價差

  2. 跨式、勒式部位

  3. 蝴蝶價差、禿鷹價差

  4. 時間價差,近遠月

  5. 與期貨組合部位


 

策略設計與測試部份

  1. 台指選測試

  2. 周選擇權策略

  3. 選擇權應用期貨訊號

  4. 歷史買方賣方勝率與盈虧比紀錄 (台指選擇權結算買賣方損益  )

  5. 選擇權與期貨投資組合的應用

  6. 其它相關 ( 籌碼分析-法人期貨未平倉  )


 

大致上以這些主題為方向,也要提醒自己要思考要紀錄的是有價值的東西。關於選擇權的書很多,但更多的是只有介紹買賣方和基本價差策略,再描繪選擇權很容易操作,那些太害人了。進場操作選擇權是很簡單,但要變成拿手的、有把握的獲利武器是一點都不簡單。