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

2013年10月30日 星期三

Multicharts報價串接DDE

 

本篇先不論有些軟體可以直接串接DDE字串的方法,因為通常可能會用多來源做備援系統或判斷報價速度,透過交易量者較大的在EXCEL上進行判斷,之後取出該格報價作為來源,因此學會EXCEL的串接DDE是特別重要

 

首先準備好報價來源,放置在EXCEL上, J 故意建置兩個分頁,如下圖左下角所示,以便於後續示範如何建立有多分頁的報價字串,注意此處要先存成英文檔名且格式為2007以前使用的.xls(本次示範mc軟體較舊未能試驗是否新版已經支援.xlsx)

 

建置DDE報價1

 

 

下圖為第二分頁,讀者未必要分兩個分頁,需要使用需求與管理是否方便,準備好後我們進行QM的設定。

 

建置DDE報價2

 

打開QM,如下圖選擇Data Sources

 

建置DDE報價3

 

往下拉可以找到universal DDE的選項,點選後按右側,clone(複製),本處讀者當然可以直接使用設定去變更這個未定義的報價來源,但我們通常要製作不只一個報價來源,因此透過複製的方式,可以不斷地建置多重的報價來源

 

建置DDE報價4

 

隨讀者喜好建立名稱,注意,第二欄位只能key 3個字母。

 

建置DDE報價5

 

按下ok後就出現在可用來源裡了,點選他,再按右邊的settings,進入字串設定

 

建置DDE報價6

 

首先示範,有分頁且指定欄位的格式,主要的邏輯為先key入=EXCEL|’[檔名.xls]分頁名’!格子位置完成如下圖。本範例讀者可從本篇最上方第二張圖看到,R2表示第二行,C6表示第六欄,就可以找到成交價的格子,同理R2C8就是累積成交量(某些報價軟體只提供累積成交量,若收取本格則在程式碼中,需要透過減去前一值的方式算出當根K棒單量)。之後再左下角按TEST,若是盤中接報價,即可發現有報價再跳動,若是盤後建置,則可透過在EXCEL上任意地方KEY數字,再還原的做法,讓EXCEL以為有新資訊在跳動

 

建置DDE報價7

 

接著示範不預設商品代碼的作法,首先重新建立另一個資料源。

 

建置DDE報價8

 

進入設定後,KEY法J在此處順便示範不預設分頁的做法,假定讀者並沒有建置分頁可以採用下圖的KEY法,因此主要邏輯就改為=EXCEL|檔名.xls!*, * 的部分,就是本次最大的差異,透過*的方式不先預設報價所在的格子,即可達到同資料源,接許多商品的優勢。

 

字串key好後,一樣在左下角按test,此時會多跳出一個視窗,要key入你要測的報價代碼(EXCEL的格子),如下圖。

 

建置DDE報價9

 

確認後就可以看到如下圖所示,一樣透過在EXCEL上更改報價的方式,讓EXCEL上的報價感覺有跳動,就可以測試有沒有成功。

 

建置DDE報價10

 

完成後,開始建置自訂的商品代碼,可參考J之前的文章 Multicharts建立自訂商品 ,下列步驟就跳快一點。

 

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#) )