EasyTrader ArtNo 105
新交所MSCI台灣指數期貨和期權是以MSCI台灣指數(或稱摩台指)為基礎,於新加坡交易所交易的期貨與期權。該指數是一種自由浮動調整的市值加權指數,是台灣股市的大盤股、中盤股和小盤股的採樣代表。一般所稱摩台,或是摩台指,普遍都是指新加坡期貨交易所所推出的摩根台股指數期貨,也就是新加坡期貨交易所針對亞洲重要金融指數,提供給國際交易人的避險交易環境的期貨商品,正確來說,摩根台股指數期貨是針對摩根台股指數(MSCI台股指數)的期貨,標的就是摩根台股指數(MSCI台股指數)關於摩根台股指數(MSCI台股指數)相關說明,請見以下資料
===========================
摩根史坦立資本國際公司(Morgan Stanley Capital International ,稱MSCI)為摩根史坦立證券集團旗下的子公司,其負責編制全球指數及相關衍生性金融商品的衡量指標。MSCI推出各項指數時,必須和摩根史坦立證券集團下的三個部門作研究和溝通,分別為:指標研究小組(Benchmark Research Group)、指數委員會(Index Committee)、及編輯顧問部(Editorial Advisory Board)。這三個小組分別負責指數研究、指數的決策以及為新產品舉辦座談會。故在決策的過程上相當嚴謹。
MSCI所編制的指數範圍相當廣泛,除了國家指數之外,又依照區域差異、對外開放等因素,編制了區域指數、全球指數以及自由流通指數等。目前MSCI也依照產業別和證券別,編制了各類股價指數和債券指數。並且依照國際基金經理人的需要,編制非自由指數供其參考。
由於MSCI在股價指數的編制上,建立了相當良好的口碑,所以許多的證券機構或期貨交易所,便依據MSCI所編制的指數來研發衍生性金融商品。例:新加坡國際金融交易所(SGX,於1999年12月合併期交所SIMEX 及證交所SES)便利用MSCI台股指數,設計出SGX摩根台股指數期貨。
摩根台股指數換算與台灣的指數換算不同,重點在於取樣類股的不同,所以指數不同於台灣的大盤指數,但是有高度的相關性,所以常被外資做為避險或套利的工具,尤其是藉由持有台灣的現貨部位,與新加坡摩根台股指數期貨之間的操作,所以摩台結算時,對台指也可能有相關影響的可能
許多外資法人會到新加坡期貨交易所交易,除了免交易稅外,保證金數字一般低於台指期,也就是代表,交易成本相較台指期要低,新加坡期貨交易所的摩台未平倉量都滿大的,主要因素可能是外資在台灣現貨的避險,或是避免被查覺部位(新加坡期貨交易所較保障他們的隱私,並不揭露他們的留倉狀況,但是台灣期貨交易所會接露相關法人留倉及變動部位)
我們先來看看幾張圖(連結)
既然摩台未平倉口數與加權指數相關性高 ,當然對於台指也有一定的影響力 ,本篇利用簡單的程式碼作歷史回測觀察
程式碼如下
inputs: EntryType(1),ExitType(1),BarNo(3),HB(140000),LB(180000),TradeProfit(0.05),TradeStopLoss(0.03),NBarL(2),NBarS(2);
input: UpRatio(1),DnRatio(1),FastLen(5),SlowLen(21),AvgLen(9),SHB(1),SLB(1),K1(0.7);
input:HighBand(90),LowBand(10),UpBand(80),DnBand(20);
VARS:MorGanOI(0), MorGanAvg(0), SDev(0), RatioLen(0),BBGap(0);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),UBuy(0),BuyStop(0),USell(0),SellStop(0),movAvg(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 ;
if Date <> Date[1] then Begin
MorganOI = Volume of Data3 ;
if DataCompression > 1 or (DataCompression = 1 and Barinterval = 300) then Begin
MorGanAvg = Average(MorganOI,BarNo) ;
end else if DataCompression <=1 then Begin
MorGanAvg = 0 ;
if Barinterval <> 0 then Value2 = 300/Barinterval ;
for value1 = 0 to BarNo-1 Begin
MorGanAvg = MorGanAvg + MorganOI[(BarNo*Value2)+1] ;
end;
if BarNo > 0 then MorGanAvg = MorGanAvg/BarNo ;
end;
end;
if EntryType = 1 then Begin
if MorGanOI < HB then Buy next bar at Highest(High,FastLen) stop ;
if MorGanOI > LB then Sell next bar at Lowest(Low,FastLen) stop ;
end;
if EntryType = 2 then Begin
if MorGanAvg cross over HB then Buy next bar at Market ;
if MorGanAvg Cross under LB then Sell next bar at Market ;
end;
if ExitType = 1 then SetStopLoss(PL * BigPointValue) ;
if ExitType = 2 then Begin
SetStopLoss(PL * BigPointValue) ;
SetProfitTarget(PF * BigPointValue) ;
end;
if ExitType = 3 then Begin
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 ExitType = 4 then Begin
SetStopLoss(PL * 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 ;
SetStopLoss(PL * BigPointValue) ;
SetProfitTarget(PF * BigPointValue) ;
end;
if ExitType = 3 then Begin
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 ExitType = 4 then Begin
SetStopLoss(PL * 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 ;
MagicQS039
沒有留言:
張貼留言