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年8月21日 星期三

交易心理應用於程式交易 - 總和K棒濾網

 

在 四種常見的錯誤判斷 此篇中,J分享過我們到底如何判斷(或評估),然而在快思慢想一書中,有提到一個有趣的研究,可以讓我們應用到交易上面,也許可以有當作濾網的價值。

 

J將研究轉化成交易上的現象,讓我們先看這張台指期1分線圖,判斷兩個問題。

 

  • 請問總和實體k棒長度約為幾點?

  • 請問平均實體k棒約為幾點?


 

總和K棒濾網1

 

不知道讀者是否覺得第一個問題(總和)比第二的問題(平均)難答許多?一般常在看K棒的交易者,可能可以透過上圖大該抓得出來平均實體K也許大約3-5點,但無法馬上把整張圖的K棒長度加總計算,必須透過先想到平均再乘上總共估計約100多根K棒而得出一個總長的估計數字。

 

推究其原因,主要是我們的系統一(直覺辨識),並擅長處理平均數問題,但對於總合運算卻很不行,而又有相關研究發現,當我們在評估類別規模或案例數量時,總和的變相時常被忽略

 

如果我們常忽略,又不容易用眼睛就看出答案,我想也許會是有用的指標,就讓J來幫大家測試一下來觀察,程式碼如下。

 

總和K棒濾網2


 

利用INPUT參數KK來計算回取的K棒數(可跑最佳化)。

透過TL紀錄近40根(本例)K棒高點至低點長度的總和。

RL則紀錄若實體K為上漲,總計其上漲的總和長度。

BL則紀錄若實體K為下跌,總計其下跌的總和長度。

RR在計算,上漲總和長度佔高低點總和長度的比率。

BR則計算,下跌總和長度佔高低點總和長度的比率。

 

若先將簡單的TL放置在圖上,即可成下圖。

總和K棒濾網3

 

可簡單發現 K棒持續上升,表示K棒變長,其時間多數發生在早盤,也許是到了盤中交易量減少,使得K棒的長度減少,而透過這樣日內有周期性的現象,也許可以試著朝當沖的方向思考,因此推想早盤的方向容易是當天順勢交易的方向,而TL則是趨勢強度的指標,當指標夠強(例如突破一個門檻)才值得進場交易。當然口說無憑,眼見也不足為憑,來測試看看績效吧。

 

 總和K棒濾網4


 

利用TLBRY 把變數TIMES(本例09:00)的數值記錄下來,當作是否進場的門檻之後TL必須超過這個值,而且配合J先前寫過通道突破進場的邏輯(回憶請參考 通道突破策略 ),價格突破後進場,因此進場程式碼就改為下圖,增加一個門檻條件在突破進場之前。

 

總和K棒濾網5


績效如下圖,可發現不論多空單獲利都小幅減少,但空單的回檔減少了。

 

總和K棒濾網6

 

當然這樣的結果我們不會滿意,此時我們改為研究多空分開的指標RR(表示上漲總長度佔總長度的比例)與BR(表示下跌總長度佔總長度的比例)。

 

在使用之前,我們一樣來觀察一下他們各別畫出來的圖形如下,其中紅色是RR,綠色線是BR,可以看出當空方主導且強勢的時候BR會不斷上升,反之RR不斷下降,而當時行情則會一路往下,直到行情轉為橫盤震盪或反轉時,RR與BR將出現轉弱或反轉的現象

 

 總和K棒濾網7


 

因此J將進場條件改為如下圖所示,透過分別記錄RR的門檻值RRBRY與BR的門檻值BRBRY來當作進場濾網,之後若要於價格突破後進場,當下的RR或BR值必須先要超過9點所記錄的RR或BR值

 

總和K棒濾網8


績效測試如下。

 

總和K棒濾網9

 

整體勝率提高到超過50%。

 

總和K棒濾網10

總和K棒濾網11

總和K棒濾網12


 

由績效測試表可發現對於多單沒有太大的效果,僅小幅改善,但空單卻有明顯的幫助,不但改善獲利,也減少回檔風險,可能可以推論若要進場作空,K棒趨勢要夠明顯才比較容易獲利

 

 

小結,透過K棒長度的邏輯,J簡單測試了兩個濾網當作示範,似乎可以改善一些錯誤進場的狀況,而關於TL這類趨勢指標的當沖應用,讀者可以繼續延伸研究,畢竟許多現象不是很容易可以從圖中看出關係,例如若TL明顯增加,是否該進場?多空是否有差異?或TL明顯降低,是否該提早出場等。

 

也許有更廣的應用和策略搭配可以思考,例如不限制使用在當沖交易上,將回取K棒拉長,而當TL指標處於近期低檔或高檔,是否可以當作逆勢單的開關? 更甚TL指標是否可以搭配到選擇權策略的應用上? 等等有意思的想法,也歡迎讀者一起來思考討論,日後 J 也會繼續幫大家測試邏輯,示範如何透過增加出場條件的設計,改善績效,使得策略發展逐漸完善。

 

 

 

 

2013年8月20日 星期二

四種常見的錯誤判斷

 

在開始解釋我們到底如何判斷(或評估)時,J將舉一些常碰到的狀況,來思考我們如何判斷,請讀者依序往下閱讀,並試著思考與記得被問問題後冒出的第一個念頭。

 

1.請問裕隆這檔股票,今年底的目標價是多少?


 

這時候第一個冒出的想法,可能是裕隆不熟悉? 或就是那家做汽車的。股價現在多少? 不知道?  如果硬要猜,就開始會想到,這家公司經營者好像蠻有型的? 汽車聽朋友說好像還不錯?最近常在路上看到?

 

透過系統一的幾種能力(特色),我們可以做出判斷。

 

例如利用心智發散性(已經不是在回答本來問題,而不自覺想到其他問題)與月暈效應(因為經營者有型,所以公司應該不錯,股價應該好),最後結合強度配對(一種配對量表在我們心中自動運算,將經營者外觀好看程度或汽車好用度,轉換成財報好壞或股價強弱程度)與因果關係的聯結,推導出因為以上種種原因,所以股價應該是多少。

 

2.如果說某家公司預估今年EPS為2.3,則今年底的目標價是多少?


 

要回答這個問題,有受過財務訓練或是有經驗的交易人,這時就習慣性的使用了捷徑這個系統一的能力,想利用本益比乘上EPS的方式來計算股價,然而實際交易上並不能完全利用簡單的公式得出今年底合理的目標價,只是前面的敘述,讓有練過的讀者用了簡單的方法,回答了一個其實很困難的問題

 

然而,這個過程中J並沒有告訴大家這是哪一類的產業,或是哪一家公司,所以如果硬要判斷本益比,並真的得出一個數字答案,這時就要用上可用性偏見這個系統一的能力,依照答案進入我們心中的難易程度或頻率,讓我們快速的回憶,並得出最常被提及或印象最深刻的答案,當作台灣公司平均的本益比。

 

3.下圖是某家公司的日K線走勢圖,請問今年底的目標價是多少?


 

交易心理判斷1


 

透過圖片,可以看出一個上漲趨勢,可以看出目前的價格,而此時,各位讀者的判斷已經受到「錨點效應」所影響,因為資訊有限,形成利用既有的數字進行調整的現象例如現在價格100左右,在配合已經上漲後壓回的狀況,所以估計年底大概可能也落在高檔120-80之間。

 

但實際上J並沒有說,這張圖就是今年以來的K棒,實際上這圖是2011/8-2012/5的鴻海日線圖,這邊反映出了認知放鬆的現象 ( 參考 交易心理-認知放鬆 ),與判斷信任感的問題,我們很容易可以從外觀或人的行為語言判斷是否要信任這個人,而在目前所有的發文中,J稍微有營造出一些與讀者間的信任感,所以將導致直覺得認為,提供的資訊就是跟你想的一樣。(當然J是不會欺騙讀者的,這裡只是為了舉個小例子。)也順道提醒大家在閱讀任何文章或任何資訊的時候,一定不要讓自己的認知太過放鬆,如果交易對你是件重要的事,那千萬要自己動手驗證每一件事情。

 

本文中所提及的「因果關係聯結」、「捷徑」、「可用性偏見」、「錨點效應」都是我們在使用系統一做判斷上常有的現象,因此也造成我們許多判斷上出現錯誤的情況。之後J將一樣利用交易上所碰到的事情來詳細舉例,一起來思考並驗證交易上出現的現象,試著尋找出一些獲利的方法與原因。

 

 

 

 

 

2013年8月19日 星期一

通道突破策略

 

當沖突破是 Technical 技術分析 中很重要的一部份,其觀念在於市場價格穿透了之前的價格壓力或支撐,繼而形成一股新的趨勢,而我們的目標即是在突破發生時能夠確認並建立部位以獲取趨勢的利潤。

 

一般比較單純的當沖突破策略,常利用近幾日內價格計算交易區間,當今日價格一上漲突破即買進,或價格一跌破即放空,這樣的交易區間,可以是固定的,也可以是變動的,當上下兩條突破線連結起來即形成一個價格通道,最常見的指標就是布林通道(Bollinger Band),L曾利用他示範過逆勢的交易策略,可參考 逆勢策略-Bollinger Band

 

創建一個價格通道,方法有無限多種,而通道突破策略又是一個可能可以長期獲利的方法,因此本篇J將利用最單純的方法建立通道,驗證台指期短線當沖中是否可以這樣獲利? 程式碼如下:

通道突破策略1


 

首先定義HL為一個INPUT參數,主要目的是,我想知道要回取(參考)多少K棒形成的高低點比較適合交易。

 

利用FOR迴圈與IFF條件,往回計算最高的值存入HH,最低的值存入LL並且每根K棒算完後,下一根又清除所有計算結果,再以當時的K棒位置往回從算HL(本例為80)根K棒,形成一個不斷計算最近80根K棒高低點的通道

 

若將其寫在指標中,即可做出如下的圖形,我們可藉由觀察這樣的圖形,思考是否值得進行下一步當沖突破的進出場撰寫。

 

通道突破策略2


 

從上圖來看,可發現當日內行情往一個方向移動,每次重新計算時,當根K線即是近80根的最高或最低,而其走勢似乎又有連續性,然若無接觸邊界的日內行情,則最後當日行情通常較小,屬於區間震盪的機會較高。

 

再看似有機會區分出強勢突破行情或日內整理盤時,我們著手進行交易訊號進出場的程式撰寫部分。

 

通道突破策略3


 

簡單的寫上要進場交易的時間,通常會保留一些時間給行情發展的機會,所以不會讓策略到最後幾分鐘還可以進場,而又因最後出場時間到了馬上要出場,出現沒有太大效益的交易狀況。

通道突破策略4


 

進場有受時間限制,所以出場要另外拉出來寫,以免受時間限制而無法停損

通道突破策略5


 

尾盤的出場,J覺得值得多花至少一篇來分享一些方法,本篇為了方便測試當沖的績效,我們可以使用內建SET指令,將最後收盤價當作出場價格。但實際交易中,請切記這個指令是不能讓你在當天出場成交的,當丟單的時候,已經收盤了,變成隔天的早上開盤才會成交出場,無法達成當沖的交易目的。

 

撰寫好後,就可以在圖上看到部分的交易狀況如下

 

通道突破策略6


 

 

績效圖如下,回測時間2005/1-2013/8,手續費與滑價設定總共來回800。

 

通道突破策略7


通道突破策略8


通道突破策略9


通道突破策略10


 

 

從簡單的測試來看,這樣的通道突破在台指期當沖上,是可以獲利的。雖然這樣簡單的邏輯,在當沖的回檔上(MDD)相對來說算大的,而近年的獲利也不佳,但因邏輯單純,交易次數夠多,若能增加一些濾網,適當的減少一些可能會虧損的交易,即可增加獲利也減少回檔的幅度。

 

後續,J將利用這樣的簡單進場邏輯,透過每個小細節的改善,讓這個策略成為一個更完善,風險報酬比更好的策略,也期望透過這樣一步一步的分享,了解在程式撰寫中除了找新邏輯以外,許多小地方其實大有文章,多一點小嘗試,也許會發現讓績效大幅改善的方法

 

 

 

2013年8月14日 星期三

交易心理-認知放鬆




觀察最近的k棒狀況,如下圖


 

認知放鬆1


 

也許沒甚麼特別感覺,就是區間震盪的狀況,但如果經過刻意的加工與操作,變成下圖,也許就多出了很多說故事的空間,至於真的眼見為憑是對的嗎?

 

認知放鬆2


 

再深入思考一下,是否認同最近的k棒走勢真有其規律,似乎下跌大約1.5-2天,隨後就會上漲約1天,再下跌1.5-2天,因此推估接下來似乎可能也會走這樣的模式?直到這個節奏改變之前,我們可以利用這樣的方式低買高賣獲得報酬?

 

J藉由心理學的理論來說明一下,到底系統一如何何評估與判斷這件事?

 

剛剛敘述與圖片表達過程中,讓你產生了認知放鬆的現象,所謂的認知放鬆的營造與產生的感覺,J整理成下圖來表達。

 

認知放鬆3


 

以本例來說,透過圖形的展示,箭頭反覆得出現,這樣重複又清晰的展示,配合詳細的解說,並故意藉由預知的想法,主導你的思考讓讀者產生熟悉感,這種對過去的感覺,就是一種錯覺。

 

系統一對於過去所發生的事情有著強烈而簡單的直接反應在不刻意花時間思考或比較疲累的情況下,系統二會依照熟悉感來對事情的對錯,做出判斷

 

在快思慢想一書中,也常提及「WYSIATI」=What You See Is All There Is,表示系統一常讓我們傾向相信所看到的事情就是全貌,不想知道更多訊息、不用考量思考的完整性合理化接受眼見為憑這件事情,比拒絕其為真要來的輕鬆太多了

 

因為人們對於「熟悉感」與「真相」是難以分辨的

因此,即使是謬誤,只要不斷重複(俗稱洗腦),就可以讓人信服。

 

為了要對抗這種似是而非的熟悉感,必須要立即提出一些反例,或是利用程式交易進行驗證,盡可能減少樣本過少造成的錯誤認知。J簡單幫大家找一張圖來重新思考一下,這種眼睛看到的規律,是否真有固定的邏輯,並能用來長期賺錢?

 

認知放鬆4


 

從這個簡單的例子來看,可以發現行情的走勢周期明顯的不一致,而觀察周期的選擇變成重要的決定因素,然而這個因素若由人為的改變,將容易出現時好時壞,最後無所適從的現象,因此藉由程式交易的的撰寫來驗證一種固定邏輯的判斷,可有效的避免眼睛看到的錯誤認知,建立相對穩定的交易邏輯。

 

研究近幾日K棒的型態在程式交易上是很有幫助的,可以繼續思考的方向是,在傳統當沖突破中,使否可用近幾日的交易走勢(震盪或一路順暢),來當作一個大的濾網(開關),決定當日是否進場?或是否變得更難(更容易)進場? 這部分的延伸,J以前也有測試過,確實可以改善一般當沖突破連續數日被巴(輸錢)的狀況,日後將在程式交易策略章節中做些簡單的示範,持續紀錄思考與方向。

 

 

 

2013年8月8日 星期四

當沖逆勢單進場

 

或許逆勢單進場是人的天性,初入市場或是一般人大部份都是很自然朝著逆勢單的方向操作,不論聽了多少次逆勢單不會賺,仍是改不了的習慣。是不是沒辦法接受去追高殺低幫人抬轎? 或是因此受傷而轉成逆勢短進短出?

 

總之,L 看過許多操作逆勢的例子,也分享過一點逆勢的邏輯和想法,如 逆勢策略-Bollinger Band 、 逆勢策略 – HighShort – LowBuy 、逆勢策略 Counter-Trend Strategy,L 不會說逆勢單不能作,作逆勢一定會賠錢,但是,普通一般的逆勢單要獲利,真的沒那麼簡單。

 

來些例子比較有感覺,也可以加深概念。假設我們來逆勢操作的邏輯是以開盤價為準跌50點作多,漲50點作空,當沖單,擺到收盤。台指費用設定來回共800元,期間是2005年至2013/5,那麼結果是這樣:

 

50Both


 

圖長的很難看,輸了兩百多萬。OK,這不是一般人的逆勢單,一般來說,跌50點作多一口,那再跌到100點時成本更好,應該作多第二口,如果可以再跌到150點的話,頭都洗下去了,應該再作多第三口,這樣才對。反之空單亦然,漲50點空一口、100點空第二口,150點空第三口,嗯,結果是這樣:

 

150Both


 

圖長的更難看,輸了四百多萬。OK,哪有這麼笨的逆勢,跌50點時作多一口,再跌到100點應該要作多兩口,這叫加碼攤平,成本更好,獲利很快就回來了。反之空單亦然,漲50點空一口,漲100點空兩口,嗯,結果是這樣:

 

2013年8月4日 星期日

快思慢想讀後系列分享

 

大家一定常聽到許多投資圈的資深前輩、世界馳名的投資大師無不強調交易心理的重要,似乎心理層面確實也凌駕所有行為,主導交易策略的設計,影響資金管理的想法,決定交易是否長期地堅持,造成最終交易結果的不同。

 

幾個月前,J看了快思慢想這本心理學的書籍,得到許多心得,發現有好多心理的現象、人類的行為,都與交易中的現象相當雷同,也許,藉由不同領域的研究,我們能得到一些不同的交易想法,針對人類心理上的特色,設計策略,也能重新省思自己看待交易的想法

 

書的內容、心理學的理論不會是我們交易人所關心的重點,詳細的內容讀者也可自行閱讀,本系列的文章將分享J在看完理論後,想到與交易上有關的現象,藉由這樣的轉化,提供讀者一些將心理學聯結交易行為的想法

 

作者將人的思考分成兩種,也是最常見到的兩個名詞,系統一、系統二,

為了讓讀者快速了解J簡單整理成下表:

 

2013-08-03交易心理-快思慢想讀後系列分享

 

其中,直覺是什麼?心理學家-賽蒙說過一句話:直覺就是辨識。我們從情境中的提供的線索,從記憶中提取相關的訊息,而這個訊息提供了答案。這類型的思考,隨時都在被我們使用,我們是無法關閉系統一的,因為大腦幾乎不用費力就可以執行,可以直接對訊息辨識而後馬上反應。

 

所以簡單的導到交易上,我們也可以將交易者分成兩類,主觀交易者-使用系統一,透過經驗與記憶的累積形成其交易能力,盤中由交易者辨識各種線索,得到多空的決策;程式交易者-使用系統二,透過對歷史資料的分析,撰寫成固定的程式,盤中藉由電腦辨識訊息,判斷出多空後強制執行交易,減少不理性的行為干預。

 

在開始後續的系列分享前,J覺得兩個系統之間其實沒有絕對的優劣,多數的時候,系統一幫助我們快速處理很多決策,也讓我們輕鬆許多,唯有在做一些重大的決定時,要記得多使用系統二,盡可能減少一些錯誤與風險。至於什麼樣的事情稱得上「重大決策」,就見仁見智了,對J來說,在交易中減少風險是件蠻重要的事情,因此選擇了撰寫程式為執行交易的方式。