近幾年,不少投資人開始注意到「可轉換公司債 (簡稱可轉債,CB)」,而網路上也不乏老師或高手,在網路上分享 CB 教學和交易技法。由於本人也是近期才開始學習 CB,於是就索性幫大家把網路上的免費資源通通讀一遍,轉換成 XQ 自訂指標和選股回測報告,希望對於想要研究可轉債的 XQ 會員來說,可以節省一些時間。
【 先講重點 】
在分享回測報告之前,我們先來談談「什麼樣的 CB 值得持有?」
就我對網路上幾位 CB 高手觀察,他們主要關注以下現象:
- CB 轉換價值呈現價外狀態
- CB 市價位於波動度較低的區間
- CB 標的股的淨值比低
- 發行 CB 的公司並非真的缺錢,而是另有目的
- 發行 CB 的公司有機會除息而壓低轉換價格
為了驗證以上 5 個觀察點,是否能找出「值得持有的 CB」?
我將它們轉換成以下 5 個選股條件:
- 判斷 CB 是否價外且溢價?
- CB 市價介於 80 至 120
- CB 標的股淨值比 <= 0.8
- CB 標的股自由現金流量比 <= 5
- CB 標的股現金殖利率 >= 5
於是,有別於以往。
雞婆的我🐔🐔沒有先寫選股腳本,
反而是先寫了指標腳本,並組成一個看盤介面🤦♂️🤦♂️,
結果如下:
從上圖紅色框框處可以看到。
若轉換溢價率柱狀圖 (重點一處)出現青色柱體時,
則表示該時間點,CB 正處在一個滿足選股條件的狀態。
爾後,若進場之後出現現券償還數量增加 (重點二處),
則表示已有出現 CB 持有者開始 CB 換股,
這時只需要去比對技術線圖上方的已轉換比例,還剩於多少的 CB 尚未轉換,
就可以 等同於掌握了有錢人的動向,跟他們一起上下車💕。
於是,我自己使用了該指標,隨機檢查了多檔 CB ,
大致上所有狀況都能被這個自訂指標解釋。
得到這個結果後,我就像往常一樣,又將這些邏輯寫成選股腳本,
並放入 XQ 全球贏家中的「選股中心」進行回測,
最後得到以下回測報告:
【針對 台股上櫃類股-特別股公司債 的回測報告】
>> 進出場條件:獲利20%、停損20%、最大持有時間 240 期
從以上回測報告可以看出,用這個方式去挑選 CB
勝率、績效最大回撤(MDD)、績效曲線 都非常之漂亮 ,
尤其是勝率居然到達 98.11% ….. 👀
比較可惜的是,目前 XQ 的選股中心回測,目前是無法還原 CB 實際上的操作結果。
( 原因是 CB 操作過程是「CB進場,現股出場」,也就是過程中會換股;當然也可以不換股,直接 CB 出場 )
因此,回測報告中的 時間加權報酬率 數據,就可能與實戰報酬之間存在著一段落差。
話雖如此,我個人認為,這樣的回測結果還是很有幫助的!
畢竟 CB 本身就是一種債券,只是大部分情況都是無息 ,
倘若投資人執意凹單,放到 CB 到期 或 賣方提前買回,
損失也是相對有限的。
至於回測的用意,本就是讓投資人判斷該策略是否有實戰的價值,而並非反映完整實戰結果。
只要有很大的概率,可以讓執行者達到 正報酬/正期望值/低風險/較不受制度影響… 等目的,
我想這樣的策略就已經是個好策略了!
這次的內容比較多,
希望這次的研究和發現,對於想要研究 CB 的 XQ 會員,
能提供很大的價值呢!🙇🙇
【 工商服務時間 】
本次開發的交易策略,作者是直接在網路搜尋 CB 的免費教學,
將其內容整理到 XQ 之後,所得出的結果
其中運用到「基本面」、「籌碼面」以及「CB制度」,
相信只要您也一起加入 XQ 會員的行列,
一定也能找出更厲害的交易策略 der!
✨\XQ 全球贏家,專研量化交易的最佳選擇/✨
如果您想要和作者一樣,在看盤介面上畫出 實用且美觀的自訂指標
您將需要訂閱我們的「盤中量化交易模組($1,000/月)」!!!
當然它的功能不只是 自訂指標 而已,它還能 盤中監控個股、回測策略、自動交易 …。
但如果您只是想 盤後選股 + 回測,可以選擇我們的「盤後量化選股模組($1,000/月)」,
訂閱之後不僅回測次數不受限 (無訂閱者每日限回測10次),還可以使用數百種台股盤後資料,
透過內建系統腳本或是 XS 語法,和作者一樣客製化選股條驗,篩選出您心目中的飆股。
以上兩種模組,若您只是想先體驗看看,
針對首次訂閱用戶,XQ 也提供您 7 天不扣款 的體驗鑑賞期。
還沒下載 XQ 的朋友,歡迎 免費下載體驗,
若想知道「免費用戶 V.S. 付費用戶」的差異,可以參考差異比較表。
如果針對以上兩個模組,您依舊覺得價格太貴了
您只想用 XQ 一站式查詢 CB 資訊,您也可以考慮只訂閱「台股進階模組($300/月)」,
只不過作者覺得這樣訂閱真的比較不划算啦@@
▼ 訂閱 盤後量化選股模組 or 盤中量化交易模組 現在可享
【 最後送您本文的 XS 代碼 】
XS 選股代碼》價外卻溢價的CB
// ***** 價外卻溢價的CB *****
Input: ITM(105, "價內定義"), OTM(95, "價外定義");
Input: PriceH(120, "CB市價上限"), PriceL(95, "CB市價下限");
// 計算 轉換張數
Value1 = 100 / GetSymbolInfo("轉換價格");
// 計算 轉換價值(Parity)
Value2 = Value1 * GetSymbolField("Underlying", "Close", "D");
// 計算 轉換溢價率
Value3 = (Close - Value2) / Value2;
// 判斷 CB市價 >= 偏好標準
Condition1 = Close <= PriceH and Close >= PriceL;
// 判斷 轉換價值 = 價外
Condition2 = Value2 <= OTM;
// 判斷 溢價率為正數
Condition3 = Value3 > 0;
IF Condition1 and Condition2 and Condition3
Then Ret = 1;
OutputField1(Value3, 2, "溢價率");
OutputField2(Value2, 0, "轉換價值");
XS 選股代碼》CB標的之股價淨值比
// ***** CB標的之股價淨值比 *****
Input: Ratio(0.8, "股價淨值比上限");
// 判斷 股價淨值比 <= 標準
Condition1 = GetSymbolField("Underlying", "股價淨值比", "D") <= Ratio;
IF Condition1
Then Ret = 1;
XS 選股代碼》CB標的之自由現金流量比
// ***** CB標的之自由現金流量比 *****
Input: Ratio(5, "自由現金流量比上限");
// 判斷 自由現金流量比 <= 上限 Condition1 = GetSymbolField("Underlying", "股價自由現金流量比", "D") <= Ratio; IF Condition1 Then Ret = 1;
OutputField1(GetSymbolField("Underlying", "股價自由現金流量比", "D"),
2, "股價自由現金流量比");
XS 選股代碼》CB標的之現金殖利率
// ***** CB標的之現金殖利率 *****
Input: Ratio(5, "現金殖利率下限");
// 判斷 現金殖利率 >= 下限
Condition1 = GetSymbolField("Underlying", "現金股利殖利率", "D") >= Ratio;
IF Condition1
Then Ret = 1;
OutputField1(GetSymbolField("Underlying", "現金股利殖利率", "D"), 2, "現金股利殖利率");
XS 指標代碼》溢價率指標
// ***** 折溢價指標 *****
Input: ITM(105, "價內定義"), OTM(95, "價外定義");
Input: PriceH(120, "CB市價上限"), PriceL(95, "CB市價下限");
// 計算 轉換張數
Value1 = 100 / GetField("轉換價格");
// 計算 轉換價值
Value2 = Value1 * GetSymbolField("Underlying", "Close");
// 計算 轉換溢價率
Value3 = (Close - Value2) / Value2;
// 判斷 CB市價 >= 偏好標準
Condition1 = Close <= PriceH and Close >= PriceL;
// 判斷 轉換價值 = 價外
Condition2 = Value2 <= OTM;
// 判斷 溢價率為正數
Condition3 = Value3 > 0;
// 畫出 折溢價率
Plot1(Value3, "折溢價率");
IF Condition1 and Condition2 and Condition3
Then Plot2(Value3, "折溢價率");
XS 指標代碼》券償指標
// ***** 券償指標 *****
// 畫出 融券增減張數
Plot1(GetSymbolField("Underlying", "融券增減張數", "D"), "融券增減張數");
// 計算 融券賣出佔總量比
IF GetSymbolField("Underlying", "Volume") > 0
Then Value1 = GetSymbolField("Underlying", "融券賣出張數", "D") / (GetSymbolField("Underlying", "Volume") - GetSymbolField("Underlying", "當日沖銷張數"))
Else Value1 = Value1[1];
// 畫出 券償還張數
Plot3(GetSymbolField("Underlying", "現券償還張數", "D"), "現券償還張數");
// 畫出 有融券現償的融券餘額減少位置
IF GetSymbolField("Underlying", "現券償還張數", "D") > 0
and GetSymbolField("Underlying", "融券增減張數", "D") < 0
Then Plot5(GetSymbolField("Underlying", "融券增減張數", "D"), "融券增減值(償券中)");
「 XQ 全球贏家 」是您專研量化交易的最佳選擇!
|認識 XQ |軟體教學|FB粉專|