2014年1月6日 星期一

●選擇權籌碼在台指期交易策略的應用[1] (程式碼)

原來put call ratio是要這樣子用,真是讓我大開眼界了。(Wen)
-----
EasyTrader ArtNo 092
何謂選擇權?
讓我們先瞭解選擇權的基本概念,選擇權起源於十七世紀荷蘭人購買鬱金香時獲利避險的工具。選擇權基本上一種契約,這個契約賦予你擁有選擇的權利,選擇執行或不執行的權利,而這項契約是可以買賣的。你可以買選擇權,也可以賣選擇權。支付買賣選擇權的代價稱為『權利金』。



選擇權又分為兩種,一種是買權,一種是賣權。
買權(call option):
買權乃提供買方在到期日或到期日之前,以約定的價格、數量買進標的物的一項權利。買方可選擇行使或不行使這項權利。如果你認為到期時的履約價格會高於現在的價格,你可以買買權,或者你可以賣買權如果你看空或看不漲。

買權的買方在繳付保證金後,有權利在到期日或到期日之前以約定之履約價格、數量、規格,買進標的物,而買權的賣方則有義務依約賣出該標的物。

賣權(put option):
賣權乃提供買方在到期日或到期日之前,以約定的價格、數量賣出該標的物的一項權利。買方可選擇行使或不行使這項權利。如果你認為到期時的履約價格會低於現在的價格,你可以買賣權,或者你可以賣賣權如果你看漲或看不跌。

賣權的買方有權利在到期日或到期日之前,以約定的履約價格、數量、規格,賣出該標的物,而賣權的賣方則有義務依約買進該標的物。

選擇權的價值
選擇權是一種契約,持有者有權利在未來某特定的期間之內,根據約定的價格買進或賣出約定的標的物。因此選擇權的權利是受到「到期時間」的限制的,如果超過期限,這個選擇權就沒有價值了,所以選擇權越接近到期日,它的價值也就越低。
選擇權的特性
一.槓桿操作
選擇權的買方只須先支付小額權利金,卻有獲利無限的可能,所以有以小搏大享有較大投資報酬的特性。

二.避險
當投資者不確定市場的未來發展走勢時,為了控制風險,確保獲利,可以購買選擇權的方式規避持有現貨的風險。換言之,若市場走勢不利現貨,則選擇權的獲利可以彌補現貨的損失,若市場走勢利於現貨,則選擇權部分也只損失小額權利金。以股票市場為例,當股市多空不明時,若投資人手中持有現股部位,為避免股市下跌而遭到資產損失,則可以買入賣權的方式來避險,未來若股市上漲,則現股部位將由股市中獲利,選擇權最多的損失為權利金;而若股市下跌,則將執行此賣權來彌補股市的損失。

三.遞延投資決策
由於選擇權的買方有權於未來的一段期間之中決定是否執行買入或賣出標的物的權利,因此可給予投資者足夠的時間來觀察及判斷,避免於市場趨勢不明朗時做出錯誤的決策。其次,美式選擇權的買方能於選擇權到期前任一天執行權利,因此持資者在資金不足時可先暫時不執行權利,對於投資人資金的調度較有利。

一般選擇權的未平倉是以賣方的角度來解讀的,買權的未平倉量代表賣出買權,看空的力量賣權的未平倉量代表賣出賣權,看多的力量,將賣權與買權的未平倉量相除,得到的比直就是所謂的Put/Call OI Ratio,可根據這個比值來研判選擇權市場多空的結構,比值越大,代表選擇權的結構越偏多,比值越小,代表選擇權的結構偏空。

選擇權的操作都知道選擇權的買方有時間價值消耗的問題,除非行情在極短的時間內發生大幅度的變化,否則買方會因為權利金的時間價值逐日消失,而不容易賺取到理想的利潤。由於時間價值不站在買方這一邊,所以買方在操作心態上會比較以短線進出為主,賣方則因為具有時間價值的優勢,而且賣方的獲利也是來自權利金的時間價值消耗的累積,所以賣方會習慣性的留倉,以賺取更多的時間價值。因此從賣方的角度來判讀Put/Call Ratio未平倉的多空結構,會比較接近市場的脈動。

在選擇權籌碼系列文章我們將以不同的角度來作台指期交易策略的開發,首先我們先使用
賣權未平倉量與買權未平倉量的差值作為策略的主要元素
基本設定: 台指期 日K 留倉 回測日期 2004/1/1~2013/12/31 交易成本 1200

測試程式碼
inputs: EntryType(1),ExitType(1),HB(70),LB(30),TradeProfit(0.05),TradeStopLoss(0.03),NBarL(2),NBarS(2);
inputs: FastLen(5),SlowLen(21),AvgLen(9),SHB(1),SLB(1) ;
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),UBuy(0),BuyStop(0),USell(0),SellStop(0),movAvg(0);
Vars: OI(0),OI1(0),OI2(0),PCEnergy(0),PCRatio(0),PutCng(0),CallCng(0),PCGap(0) ;

MP = MarketPosition ;

if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3 then isBalanceDay = True else isBalanceDay =False ;

PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;

{ Data3 OI1 賣權 OI2 買權 }
if Date <> Date[1] then Begin
OI1 = Close of Data3 ;
OI2 = Volume of Data3 ;

PCEnergy = (OI1- OI2)/1000 ;

End;

if EntryType = 1 then Begin
if PCEnergy > {Cross over} HB then buy next bar at Market ;
if PCEnergy < {Cross under} LB then sell next bar at Market ;
end;
if EntryType = 2 then Begin
if PCEnergy > {Cross over} HB then Buy next bar at Highest(High,3) stop ;
if PCEnergy < {Cross under} LB then Sell next bar at Lowest(Low,3) stop ;
end;
SetStopLoss(PL * BigPointValue) ;

if ExitType = 1 then setProfitTarget(PF * BigPointValue) ;

if ExitType = 2 then Begin
if MP > 0 and BarsSinceEntry = NBarL then sell {ExitLong} next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then Buy {ExitShort} next bar at Market ;
end;

if ExitType = 3 then Begin
setProfitTarget(PF * BigPointValue) ;
if MP > 0 and BarsSinceEntry = NBarL then ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then ExitShort next bar at Market ;
end;

if IsBalanceDay then setExitonClose ;



簡單的策略表現也不錯喔!再將上面的測試作一下重組如下




績效表現改善不少,可以作為留倉策略的追蹤

0 留言:

張貼留言

如果有私人問題想請教,請透過網站右方『與站長聯絡』之表單,謝謝!

----------------------------------------------------------------------------------------------------
網站聲明(Disclaimer)
本教學網站內所提供之程式碼(包括函數、指標、訊號)屬開放程式碼,用意在於讓使用者學習程式語法之撰寫,使用者可以任意修改語法內容並調整參數。本網站所有之內容(包括文章、影片、歷史紀錄、程式碼、教材)限用於個人學習使用,請勿轉寄、濫用,嚴禁私自串接帳戶交易。
-------------------------------------------------------------------------------------------------