顯示具有 衍生性商品 標籤的文章。 顯示所有文章
顯示具有 衍生性商品 標籤的文章。 顯示所有文章

2009年12月7日 星期一

明年度在證券基金會開課的一些想法

十一月以來在證基會的三堂課裡, 學員們最多的問題竟然是: 有沒有 Excel 的進階課程?

其實這個問題經常有學員提出來. 我原本不傾向開 Excel 的進階課, 因為從 IT人員的角度來看, Excel 的功能即使發揮到極致, 仍有一些不足的地方. 並不是說  Excel 不適合財務或交易應用, 對一般使用者而言它仍是最容易上手的工具, 但它功能的限制還是讓我在推薦給我的學員時會有一些顧慮.

今年在證基會開了八門課, 除了一門 IRS 評價之外, Excel 幾乎都只是輔助工具, 並沒有成為真正的主角. 但是由於學員多是財務背景, 資料庫和程式設計課程的確對某些人而言有難度. 所以很多學員要求開 Excel 進階與 VBA 的課程, 其實在現在的金融業是很需要的.

這幾天在規劃明年度的課程, 目前的想法大致上分三個部份:
  1. Excel進階操作及設計: 主要目標在工作簿的設計和Excel基本功能的運用, 可能會包含一些簡單的VBA. 範例為投資組合管理.
  2. Excel VBA 設計: 主要目標為 VBA 程式設計. 範例為程式交易策略.
  3. Excel 財工應用: 利用 Excel 和 VBA 解決財務工程上的一些問題.
我會陸續將課程內容發表在 blog 上. 如果有任何建議歡迎 email 給我. 謝謝.

2009年12月1日 星期二

新的亂數產生器 Mersenne Twister for Graphic Processor

寫程式經常要用到亂數, 尤其是衍生性商品的評價和風險值計算. 其實在程式語言裡所附的亂數產生器並不夠亂, 在我們一般的PC要產生真正的亂數也很困難, 比較講究的程式通常會另外製作亂數產生器, 最常用的是由日本廣島大學兩位教授發明的 Mersenne Twister. 我自己實作的 RiskLib.NET也有將它改寫為C#的版本.

Mersenne Twister 新出了利用圖形處理器GPU的平行處理版本 MTGP, 可以利用顯示卡上的處理器來做向量資料的計算, 還包含了NVIDIA CUDA的範例. Mersenne Twister 應該是很適合利用GPU來做, 只不過最近比較沒時間. 過一陣子好好來研究一下.

2009年4月13日 星期一

將網站從 mojoPortal 改為 DotNetNuke

這兩天將公司的網站從 mojoPortal 改為 DotNetNuke (DNN). 原本是想 mojoPortal 是 C# 做的, 雖然功能沒那麼多, 但是我比較喜歡用 C# 而不是 VB.NET. 後來用了這一陣子, 感覺還是沒有很好, 最主要的原因是, mojoPortal有以下幾個缺點:
  • 速度太慢
  • 無法多語言
  • Google Analytics 和 SiteMeter 等網站流量統計必須以修改 skin 來完成.
DNN的功能很強, 比較之後還是將網站改為DNN. 目前也將增加英文網頁的內容, 並且把 RightPairs 和 DerivativePower 的網站整合進來. 歡迎大家光臨新的巨傑資訊網站.

2009年4月7日 星期二

Don't be too quant!!!

大帥哥湯姆克魯斯Tom Cruise在1996年演的征服情海 (Jerry Maquire) 並不是愛情片, 其實講的是運動經紀人這個行業. 讓片中飾演阿湯哥客戶的小古巴古汀Cuba Gooding Jr.念茲在茲的關鍵字叫做 quan. 不知道 quan 這個字是哪來的, 據他的說法 quan 就是 money, 好巧不巧的是, 財務工程人員的俗稱是 quant, 取自計量 quantitative 的縮寫, 跟 quan 只差一個字母.

我對財務工程有很大的興趣, 經常會看一些文章或討論. 當然免不了定期逛逛財務工程的聖地 Paul Wilmott教授的網站. 大多數的主題都不是很適用在台灣, 因為台灣根本不會交易這些商品, 台灣能做的商品大多還是停留在教科書裡有介紹的商品. 倫敦和華爾街的金融機構經常找一些數學或是物理學的博士來做交易策略或是衍生性商品, 各種數學模型越做越複雜, 產品越做越花俏, 各種評價方式日新月異, 所需要的計算越來越多, 坦白說, 大多數我都看不懂. 要看懂這些模型恐怕只能指望下輩子了.

經過這次的金融風暴, 很多人把矛頭指向做衍生性商品的這群人. 攪盡腦汁做各種分析模擬風險模型, 包裝出讓人目不暇給的商品, 往往一項產品還沒搞懂, 又出了一大堆奇奇怪怪的東西. 其實現在大多數的新種商品已經遠超出交易或避險的需求, 不要說買的人不了解, 賣商品的銀行或許也不是很清楚風險所在. 很多商品都是所謂的背對背交易 (back-to-back), 當客戶要買一項商品時, 銀行或券商會去跟更大型的銀行或券商詢價, 加上一點價差之後再賣給客戶, 至於評價和風險連賣給你的金融機構也不知道, 也不清楚哪些客戶真正需要買這些商品, 其實購買這些商品都有非常高的風險.

各項金融商品就好像練金鐘罩鐵布衫一樣, 練得再怎麼刀槍不入, 仍然還是有罩門在. 只要有人在這個罩門上輕輕摸一下, 多年來苦練的功夫立刻化為烏有. 金融商品再怎麼變, 一定還是有風險存在, 某些商品經過精密的計算, 將風險全部都集中在極其不可能發生的事件上, 可以說絕大多數時間都是賺錢的, 但是只要那個不願意它發生的事件終於發生了, 那種慘狀就像這次的金融風暴一樣.

我認為這些金融機構是要負一定的責任, 無限制的容許各項金融商品在市場上販售, 執行金融監理的機關也有問題. 歐巴馬和聯準會主席柏南奇在批評這些金融機構時, 不知道他們的工作就是要防止這些事情發生? 自律是資本主義社會最不切實際的期望, 要這些靠偷搶拐騙才能當上大型金融機構高層的人自律, 豈不太過可笑?

如果不使用這麼複雜的模型, 是不是就沒辦法賺錢了? 我認為剛好相反. 一昧地追逐新種商品, 往往是虧損的原因. 金融機構發行這些商品的目的是要賺錢, 購買自己無法評價的商品一定會被賣方賺取高額的價差, 要獲利的機率是很小的. 很多非金融業的財務部門也會購買結構型商品或是選擇權, 能賺錢的比率實在是不高. 與其去買複雜的商品, 倒不如用最原始的投資工具: 即期匯率, 股票, 定存等等. 當購買一項商品時, 先問一下自己: 知不知道它是什麼商品? 會不會計算它的價值? 以及是否了解它的風險?

2009年4月3日 星期五

沒有穩賺不賠的交易策略, 只有不賠大錢的風險管理

常常聽到有人說: 我這個策略穩賺的, 或是說: 我的勝率有 80%. 也常常有人問我: 你寫了這麼多策略的程式, 怎麼不自己操作?

沒錯, 我寫了很多交易策略的程式, 但我從不自己投資. 我的投資大部份都是郵票和古地圖等收藏品. 主要是興趣, 行情上上下下的投資遊戲就引不起我的興趣. 我以前的主管也會問我要不要當交易員掛個quota, 但我就是沒興趣.

交易策略會不會賺錢呢? 可能會賺錢, 可能會虧錢. 如果能夠保證一個策略的勝率有51%, 期望值真的大於一, 那我真的願意用所有家當去執行這個策略. 問題是: 沒有人能保證穩賺不賠. 如果有人告訴我他的策略真的穩賺, 那我會告訴他: 好好的賺, 不要告訴別人. 就好像有人告訴你樂透明牌說這一期一定中, 那也是請他自己去簽就好了, 不要拿出來賣.

有沒有穩賺不賠的交易策略? 的確是有, 叫做套利. 但現實環境套利的機會很少, 改天有機會再談.

我們到底在忙什麼呢? 到底這麼多人參與這些金錢遊戲為的是什麼? 為的是的確有可能會賺錢. 但是真正賺錢的人比較少, 虧錢的人比較多. 賺錢的人不一定是策略好, 可能是運氣好. 就像是股神巴菲特, 大家都覺得他很神, 他的話都奉為圭皋. 我倒是不這麼認為. 比爾蓋茲錢賺最多, 他的想法做法也不見得都是對的. 全世界幾十億人之中, 一定會有一個人是賺最多的人, 而那個人就被稱為股神. 最近巴菲特的波克夏海瑟威表現不如理想, 又有人開始在檢討, 其實本來就有賺有賠. 套句周星馳的對白: 其實根本就沒有股神, 每個人也都是股神.

那 麼普通人和股神都沒有什麼差別嗎? 當然有差別, 只不過一個人再怎麼神, 也沒辦法保證不會賠錢. 有些人可能真的眼光很精準, 但總有看錯的時候. 如果在投資之前沒有想到可能的虧損, 到了真的看錯行情時就會措手不及. 所以任何投資都要考量到可能的風險. 也要做好風險管理. 風險管理並不能保證穩賺不賠, 只是能讓投資人不會賠大錢.

要做風險管理是需要成本, 也就是說原本你可以賺一萬, 因為做風險管理, 實際獲利可能只剩九千. 風險管理最大的好處是可以將風險控制在一定的範圍, 讓虧損不會無限制的擴大, 只要能夠控制風險, 就可以在市場上長長久久, 尋找獲利的契機. 如果不能控制風襝, 一波大行情下來可能就出場再見了. 連歐美這些大的金融機構都無法承受而倒閉, 在做任何投資之前要先做好風險管理才是.

2009年4月1日 星期三

在 C# 使用 Excel 函數 - Black Scholes 選擇權公式的常態分配值

最簡單的Black-Scholes選擇權評價公式有五個參數, 分別為:
  • S: 標的現貨價格 Spot
  • K: Strike 選擇權履約價 Strike
  • Vol: 標的波動率 Volatility
  • r: 無風險利率 Risk-free Rate
  • T: 到期時間 Time to Maturity
這五個參數都可以很簡單地從資料庫取得或是計算得出, 但是 Black Scholes 公式中的常態分配值 N 比較複雜, 必須要用數值方式去近似出結果. 另一種方式是直接呼叫 Excel 的函數 NormSDist(z). 要在 C# 使用 Excel 函數, 首先建立一個 Excel 的實例:

Microsoft.Office.Interop.Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass();

然後建立一個 Wrapper 函數 N:

private double N(double z)
{
return excel.WorksheetFunction.NormSDist(z);
}

這樣就可以直接在 C# 的程式裡呼叫 N(z) 這個函數. 以下是示範的 Black-Scholes 選擇權評價方法:
private void BlackScholesVanillaOption(double S, double K, double Vol, double r, double T, out double call, out double put)
{
double d1 = (Math.Log(S / K) + (r + Vol * Vol) * T) / Vol / Math.Sqrt(T);
double d2 = d1 - Vol * Math.Sqrt(T);

call = S * N(d1) - K * Math.Exp(-r * T) * N(d2);
put = K * Math.Exp(-r * T) * N(-d2) - S * N(-d1);
}