2015年4月11日 星期六
歷史波動率2 - 期間選擇
延伸 歷史波動率 這篇文章及讀友synn的疑問 :
價格波動率 也就是 年度化標準差 如何計算
stddev( c[1]/c -1 ,len )*根號 252 ;
這樣對嗎
另外 LEN 要取幾天呢?
函數是STDEV(期間內每天的收盤價,有幾個就放幾個),得到的值再乘根號252,就得到年化波動率了。
要取幾天,多長多久的期間?這個問題不如先想一下,我們計算得出的這個波動率有什麼意義?
算出來的是10%,這單純的一個數字對我們來說好像沒有感覺,但是我們去算不同期間的來比較就有意思了,假設過去10天收盤價算出來的是10%,然後過去30天算出來的是15%,這就表示了短期的波動率比中期的波動率低,最近的行情變小了。
利用這短期中期的波動率比較就有用處了,例如策略是突破或趨勢為主,我們當然希望波動是往大的方向,反之,波動往小的方向就去避開它,因此這個策略可以去尋找不同的標的,例如我們去計算每一種指數短中期波動率、或是股票或各種期貨都可以,全部列出來短中長期的波動率狀況來比較,從中篩選出合適這個策略的市場。
所以,要取幾天?
短期的就5天吧,中期可以20天,長期60天,這沒絕對,你習慣就好。
歡迎繼續討論留言^^
2014年3月14日 星期五
價格波動率與買賣方策略
先前紀錄了幾篇關於波動率及買賣方策略的文章,以及波動率在程式交易上的應用例子。如以下
歷史波動率、隱含波動率 (with EXCEL VBA、C#)、歷史波動率策略設計、台指選擇權結算買賣方損益,不過還並未紀錄操作實務上的重點,這篇再繼續作延伸。
選擇作買方或賣方有很多考慮因素,波動率是其中很重要的因素之一,如果對未來預期波動程度會變大,則作買方有利,如果預期波動程度變小,則作賣方有利。這樣的解釋其實並不夠清楚,而且是有前提的,在持倉的所有期間。
舉個例子說,吳波判斷未來台指期價格波動會加大,決定進行買方策略,假設價平的履約價是8000,則同時買進8000的CALL及8000的PUT,經過一個月漲漲跌跌,最後又回到8000結算,但是吳波最後卻還是獲利,這只有一種可能,在這個月的期間內價格波動確實超過當初他買進時的水準,而且吳波有進行動態調整。
這個動態調整是這樣的,在8000點進場後,市場波動確實加大,很快下跌到7900點時,這比吳波認為的波動來的快,而現在總部位DELTA變成 -1,吳波就買進一口期貨,使總部位DELTA變成0,然後,又下跌到7800,總部位(含加進的一口期貨)又變成 -1,這時吳波又買進一口期貨,然後市場回到7900,總部位DELTA變成 1,這時又賣出一口,之後市場又回到8000,總部位DELTA又變成 1,這時又賣出一口。雖然指數又回到8000,但是期貨買進7900及7800,賣出7900及8000,這個調整的部份就獲利不少。
而後指數往上了,到8200時賣出期貨以平衡DELTA,越往上越賣,往回跌就買回來,所以吳波是被動式買低賣高,總結下來調整的期貨獲利比買方部位的虧損要多。
反過來說,賣出兩邊選擇權在8000,就算最後結算正好在8000點,也不見得會獲利,因為期間內可能漲到8300、8500,可能跌到7800、7700之類的,只要超過預期的波動(也可以說是賣方所能容忍的價位程度),那這個賣方投資人必須在8300買進期貨,在7700賣出期貨,為了保護(避險)被迫買高賣低,最後這個避險的成本超過了選擇權賣方的獲利。
以上數據僅作舉例,若熟悉選擇權跨式部位的損益及GREEKS變動可以很輕易瞭解要說明的內容。另外,避險在例子中是用期貨執行,實際上的選項很多,例如部位平倉、用不同的履約價、搭配不同的買賣方,那就是要繼續看各種價差交易了。
其中更大的學問是如何決定調整的時機,如果在建立前就有預期的波動水準,當到達時很自然就要進行調整,或者是以總部位的DELTA來進行調整,和前面所述的例子一樣,另外一種方式則是依照時間來作DELTA中立,例如每天、每週之類的,時間到就調整一次。
回到開頭所先講的結論,如果對未來預期波動程度會變大,這個未來預期是最重點考量,若要以價格波動程度作為選擇買賣方策略最重要的因素,要小心目前現狀波動率給人先入為主的觀念,因為市場上的價格已經作了反應,例如我們知道現在日經波動程度很大,常常一天2%、3%在跑,那麼作買方再來調整會很好作,這就錯了,那要作買方的權利金是很貴的,除非波動再放大、更大,才能夠獲利。
此文緣由朋友問到外資部位總是買方一大堆,這種盤整區間行情不是賠死了嗎? L只能回說不一定,要看調整的好不好,不是只由買賣方就可判斷損益的。以上,供有同樣疑問的朋友參考囉。
2014年1月21日 星期二
趨勢追隨策略類型2-突破
續前篇 Trend Following 趨勢追隨策略類型 。設計趨勢追隨的程式交易策略,首先就是要判斷趨勢,一般常見方法有兩種,第一是均線策略,跟著市價與均線的位置或均線的斜率來判斷趨勢方向,第二就是突破,由基準點開始看盤勢漲跌了多少作為突破,再持續同一方向的趨勢。
這個基準點的設定可能是特定價位或某特定時段所依據,例如特定價位設定上個月結算價,或心裡認為特別重要的價位。特定時段可能設定每日開盤的價格或每週、每月甚至每年開盤價格都可以運用。
而漲跌多少算是突破可以追價? 這就是看前面所設定的週期,越長期的週期應當配合越大的突破價差,例如每季開始的市價設定為基準點,漲跌5%作為突破,在未翻回反方向突破前持續持有直到每季結束,這樣也是個可以測試的策略,可能都比一些奇奇怪怪的指標還會獲利了。
另外一個考慮漲跌價差的設定是波動率,例如最近一段時間波動大,那這個漲跌價差就應該同步放大,真的夠大才去追突破,免得盤整常常洗刷,反之,波動小時,漲跌價差也應該同步縮小,跟著市場作小波段。
這樣跟著波動率所設定漲跌價差,可以利用的方式很多,例如取日的 ATR、利用BBand、或 歷史波動率 等等,此篇就來紀錄應用歷史波動率來設計突破策略。
要考慮的參數有
- 取多少期間的歷史波動率,計算出對應點數
- 由目前市價要漲跌多少比例的對應點數算是突破
程式範例如下:

基準點BP設定為目前市價,計算出對應的波動點數HVp,例如HVp為100點,把它當作目前可能波動的範圍上下區間是100點,而基準點在中心點,那當市價突破基準點加減50點時,就視為是一個趨勢開始,建立方向部位並將新的基準點設為目前市價,以此再續看下一個突破點。
策略表現及指標如圖:

這樣的策略可以有以下績效(10minK,2005~2013)


以一個策略原型來說,這樣的績效是蠻不錯的,問題在於drawdown如何縮小。另外注意這是非多即空的策略,進一步也可以試試什麼情況不須在場內,例如波動非常小時,可能不要有單,或許可以降低些drawdown。也可能是相反的,波動很大時先退出,因為可能大幅drawdown都是在此期間產生。
突破策略百百種,開頭提到的以年月日作基準點的策略也可以慢慢紀錄,另外均線策略也是非常多樣化的,持續調整囉。
2013年11月13日 星期三
歷史波動率策略設計
在 歷史波動率 這一篇中紀錄了歷史波動率的計算和指標語法,就可以拿來作為策略訊號的設計或濾網,基礎想法是在於波動率期間的比較,如果短期的波動率小於長期的波動率,表示目前行情較為穩定、黏著、緩慢,也比較像是多頭的環境中表現的狀況。反之,若短期的波動率大於長期的波動率,表示目前行情的波動較快速、急拉急殺,可能有恐慌氣氛,那就像是空頭盤勢了。
以上述波動率比較作為濾網,嘗試搭配最根本的均線策略邏輯,市價大於均線作多、市價小於均線作空,設計一個留倉長波段策略來觀察表現,程式碼如下列:

主要邏輯在第11、12列,如前述,另出場條件設定為市價反向跌/漲破均線時多少點該出場。以上參數也列出來了,讀者可以自行練習邏輯和參數調整。範例策略使用30分線的週期,進出場的價位節錄如下圖。

可以先預想勝率和盈虧比和強弱處,它就和基本的均線策略一樣,大波段可以獲利,均線黏著時易洗刷,勝率應低於40%,盈虧比應高於2.5,drawdown起碼25萬以上。就以上圖來觀察,搭配波動率作濾網是有效果的,避開了不少次無謂的洗刷。績效報告如下圖 (2005~2013,交易費用800)。


績效報告中,最大的亮點是盈虧比很高,尤其是空單的表現,表示這個策略在空方勢時可以抱的很緊、很久。pro/DD 和 kelly值也相當不錯,更多的策略評估可以參考 交易策略評估-Kelly formula 、 交易策略評估-獲利風險比 、交易策略評估-損益期間 。
以上,是利用歷史波動率作為策略邏輯的應用,參數都是經過最佳化的,另外值得注意的是這個策略2013年表現並不突出,不至虧損,但幾乎無獲利,因此若要當作實戰的交易邏輯還有得思考修改。
2013年10月23日 星期三
歷史波動率
接續前篇 選擇權評價-BS MODEL (with Excel) ,波動率主要有歷史波動率和隱含波動率兩種,此篇要先要紀錄的是歷史波動率。以 L 自己的交易心得來比喻波動率的話,瞭解波動率之前,看期權交易是方向和時間這二維的平面,瞭解波動率之後,看市場和策略像是立體的三維,方向、時間和波動。
在使用上,這個值不只對選擇權交易很重要,波動率本身就是選擇權評價重要的一個因素,不瞭解它的話,幾乎可以說別玩了。對於期貨交易也非常有參考價值,在期貨程式交易方面,也可以是不錯的濾網,甚至作為主要邏輯也可以。
歷史波動率的計算方法是: 一段期間內的收盤價計算的年化報酬率標準差,這句話不像中文,但其實不會很複雜,拿EXCEL作簡單的五日波動率範例,如下圖。

步驟是
- 列出日期和收盤價
- 把收盤價取Log,紀錄在C欄,例如C7的公式是=LN(B7)
- 計算報酬率,就是Log相減,例如D7的公式是=C7-C6
- 計算五日標準差,例如E7的公式是=STDEV(D3:D7)
- 將標準差年化,例如F7的公式是=E7*SQRT(252)
這樣就計算好了,剛好可以看到這五日台指的歷史波動率算出來只有5.09%,真是低的可怕。
再來補充在Multicharts把歷史波動率寫成指標的語法,如下圖。

計算就和上列的步驟一樣,這個指標可以算兩個期間的歷史波動率,參數是20和60,畫出來的圖如下。

有了圖就可以觀察行情和波動率的走勢,一般來說,多頭時波動率低,空頭時波動率高。或是換個角度說,波動率高行情大,波動低行情小。以這樣的特性來說,就可以作為濾網和交易邏輯了。
深入一點的再紀錄,以上兩個範例計算最近的台指,五日是5.09%,二十日11.97%,表示台指波動是壓縮中(而且壓的很小),那這個波動率的數值意義是什麼?
以波動率10%來舉例,這是年化的(計算中有乘一個根號252),假設台指現在8400點,10%是840點,表示一年之後台指在7560~9240點(8400加減840點)的機率大約是68%,這個時間和空間可能比較沒概念。來算一個月的試試,10%是年化的,月的就再除根號12,等於2.89%,等於8400*2.89%=242點,表示一個月之後的台指在8158~8642點的機率是68%。那麼,假設你覺得台指的波動應該會大於這個幅度時,就應該作多波動率。
以上所述,要再嚴謹一點的說,68%就是正負一個標準差的常態分配下的機率,實際上指數分配並不是常態分配,這是另一個要深入的主題。要簡單明瞭的說,波動率越大就是波動大,比較會有行情,K線也可能比較大根,這樣就好了。
最後再整理一下,之後要繼續紀錄的是波動率在下列幾項的應用
- 作為程式的濾網
- 作為主要交易邏輯的測試 ( 歷史波動率策略設計 )
- 選擇權與隱含波動率 (隱含波動率 (with EXCEL VBA、C#) )
訂閱:
文章 (Atom)