Chat
Ask me anything
Ithy Logo

量化投資策略大揭密:如何在XQ系統中運用多重指標精準選股與回測

探索結合財務健康與市場動態的複合選股策略,並透過程式腳本實現高效回測。

xq-system-stock-screener-d6hlxb2f

策略亮點精華

  • ROE長期穩健成長: 過去10年股東權益報酬率(ROE)平均大於15%,確保公司長期為股東創造價值的能力。
  • 法人籌碼動向追蹤: 外資連續5日淨買超,捕捉市場主力對潛力股的青睞,提升選股的時效性。
  • 財務結構安全性考量: 負債權益比(Debt-to-Equity Ratio)小於100%,篩選出財務體質穩健、風險較低的公司。

在當今複雜多變的金融市場中,僅憑單一指標進行投資決策往往難以應對市場波動。結合多種財務和市場指標,形成一套綜合性的量化投資策略,能顯著提高選股的精準度和回測的有效性。本篇將深入探討如何在XQ全球贏家系統中,基於您提出的核心條件,撰寫程式腳本並進行回測,以篩選出具備長期獲利能力、受法人青睞且財務結構穩健的優質股票。

您目前使用的XQ系統,其強大的XS編輯器和回測功能,能協助您將這些複雜的選股邏輯轉化為可執行的程式碼。透過本文提供的詳細程式範例與回測指引,您將能夠有效驗證您的策略,並從歷史數據中獲取寶貴的洞察,為未來的投資決策提供堅實的依據。我們將特別注意XQ系統的語法限制,確保程式碼的兼容性與高效運行。


量化策略的核心支柱

一個成功的量化投資策略,通常建立在對公司基本面、市場情緒和財務健康的深刻理解之上。以下是構成您選股策略的三大核心支柱,以及它們在投資決策中的重要性:

股東權益報酬率 (ROE) - 衡量公司獲利能力的黃金標準

股東權益報酬率 (Return on Equity, ROE) 是衡量公司為股東資金創造利潤效率的關鍵指標。它揭示了公司利用股東投入的資金產生淨利潤的能力。股神巴菲特在其投資哲學中,便極為看重ROE,通常會尋找那些長期ROE穩定維持在15%或20%以上的公司。這類公司通常具有強大的競爭優勢、良好的經營管理能力,並能持續為股東創造價值。您所設定的「過去10年度ROE平均大於15%」是一個非常嚴謹且有效的篩選條件,旨在找出那些具備長期獲利能力的「護城河」公司。

ROE的計算公式為:

\[ \text{ROE} = \frac{\text{淨利潤}}{\text{股東權益}} \]

通過杜邦分析,ROE可以進一步拆解為:

\[ \text{ROE} = \text{淨利率} \times \text{總資產周轉率} \times \text{權益乘數} \]

此分解式有助於深入理解ROE的驅動因素,例如高淨利率表示公司產品或服務有高附加價值,高總資產周轉率表示資產利用效率高,而權益乘數則反映了財務槓桿程度。長期高ROE的公司通常在這些方面表現優異。

ROE Calculation Formula

圖:股東權益報酬率(ROE)的計算公式示意圖

法人連續買超 - 捕捉市場主力的動向

法人(如外資、投信)的買賣超數據,是市場籌碼面分析的重要環節。當外資等法人連續多日對某檔股票呈現淨買超時,通常被市場解讀為主力資金看好該股票未來走勢的積極訊號。這種持續的買入行為,可能預示著該公司基本面出現積極變化、或有潛在利好消息即將公布。您設定的「外資連續買超5日」條件,旨在從籌碼面捕捉這些潛在的股價上漲動能,結合基本面分析,能進一步提升選股的精準度。

Foreign institutional investors buying

圖:外資連續買超可能暗示股價上漲潛力

然而,值得注意的是,法人行為並非萬無一失的指標。有時法人可能因策略調整、套利或其他非基本面因素進行買賣。因此,將法人籌碼與穩健的財務指標結合,可以有效降低單一指標的風險。

負債權益比 - 評估財務結構穩健性的基石

負債權益比 (Debt-to-Equity Ratio, D/E Ratio) 是衡量公司財務槓桿程度和償債能力的重要指標。它表示公司總負債與股東權益的比例。一個較低的負債權益比,例如您設定的「小於100%」,意味著公司的負債相對其股東權益較少,這通常代表公司財務結構穩健、經營風險較低。在市場波動或經濟下行時,財務體質健全的公司更能抵禦風險,是長期價值投資者追求安全性的重要考量。相反,過高的負債權益比可能意味著公司過度依賴借貸,潛在的財務風險較高。

負債權益比的計算公式為:

\[ \text{負債權益比} = \frac{\text{總負債}}{\text{股東權益}} \times 100\% \]

綜合這些條件,您的選股策略旨在找出那些長期獲利能力強勁、受到市場主力青睞且財務結構穩健的優質股票,這是一種結合基本面分析和籌碼面變化的綜合性策略。


XQ系統選股腳本撰寫指南

在XQ全球贏家系統中,您可以使用XS編輯器來撰寫選股腳本。由於系統不支援SetTotalText語法,我們將採用getField函數來獲取數據,並利用條件判斷和迴圈來實現您的策略。

程式腳本範例與解釋

以下是一個整合了您所有條件的XQ選股腳本範例。請注意,XQ系統中具體的欄位名稱(例如「股東權益報酬率(%)」、「外資買賣超口數」、「負債權益比(%)」)可能需要您根據實際系統介面進行微調。此腳本設計為一個返回布林值(真/假)的篩選器,若所有條件符合,則返回真。


// 腳本名稱: Comprehensive_Stock_Screener
// 描述: 篩選過去10年ROE平均>15%,外資連續買超5日,負債權益比<100%的股票

Input: Period_ROE(10, "ROE計算期間(年)");
Input: Min_ROE(15, "最小ROE百分比");
Input: ForeignBuyDays(5, "外資連續買超天數");
Input: Max_DTE(100, "最大負債權益比百分比");

// 條件一:過去10年度股東權益報酬率(ROE)平均大於15%
Var: AvgROE;
Var: ROECondition = True; // 預設為真
Var: TotalROE = 0;
Var: ValidROECount = 0;

For i = 0 to Period_ROE - 1 Begin
    Var: CurrentROE = GetField("股東權益報酬率(%)", "Y", i); // Y為年度數據,i為過去第i年 (0為最新年度)
    If CurrentROE <> Null Then Begin
        TotalROE = TotalROE + CurrentROE;
        ValidROECount = ValidROECount + 1;
    End;
End;

If ValidROECount > 0 Then Begin
    AvgROE = TotalROE / ValidROECount;
    If AvgROE < Min_ROE Then
        ROECondition = False;
End Else Begin
    ROECondition = False; // 如果沒有足夠的ROE數據,則不符合條件
End;


// 條件二:外資連續買超5日
Var: ForeignBuyCondition = True; // 預設為真

For j = 0 to ForeignBuyDays - 1 Begin
    Var: ForeignNetBuy = GetField("外資買賣超口數", "D", j); // D為日資料,j為過去第j天 (0為今日)
    If ForeignNetBuy <= 0 Then Begin // 如果非買超(小於等於0)
        ForeignBuyCondition = False;
        Break; // 不符合條件,跳出迴圈
    End;
End;


// 條件三:負債權益比(Debt-to-Equity Ratio)小於100%
Var: DTERatio = GetField("負債權益比(%)", "Y", 0); // Y為年度數據,0為最新年度
Var: DTECondition = True; // 預設為真

If DTERatio >= Max_DTE Or DTERatio = Null Then Begin
    DTECondition = False; // 如果大於或等於100%,或數據缺失,則不符合條件
End;


// 最終條件組合
If ROECondition And ForeignBuyCondition And DTECondition Then Begin
    Ret = 1; // 所有條件都滿足,回傳1表示符合選股條件
End Else Begin
    Ret = 0; // 否則不符合
End;

腳本細節說明:

  • Input 參數設定: 允許您彈性調整選股條件的閾值,如ROE計算期間、ROE最低要求、外資連續買超天數和負債權益比上限。
  • GetField("欄位名稱", "資料頻率", 偏移量) 這是XQ系統中獲取各類數據的核心函數。
    • 「股東權益報酬率(%)」:通常是財務年度資料("Y")。我們使用迴圈計算過去指定年數的平均值,並檢查數據有效性。
    • 「外資買賣超口數」:這是每日資料("D")。迴圈檢查過去指定天數的外資淨買超情況。
    • 「負債權益比(%)」:通常也是財務年度資料("Y"),取得最新一期的數據。
  • 迴圈與條件判斷:
    • ROE條件: 腳本會迴圈計算過去Period_ROE年(例如10年)的ROE平均值。若有年份數據缺失,會只計算有效數據的平均。若最終平均值未能達到Min_ROE設定的百分比,則ROECondition為假。
    • 外資連續買超條件: 腳本會迴圈檢查從今天開始往前ForeignBuyDays天(例如5天)的外資淨買超數據。只要其中任何一天外資買超數小於等於零(即賣超或無買賣超),則ForeignBuyCondition立即設為假並跳出迴圈。
    • 負債權益比條件: 直接取得最新年度的負債權益比,判斷其是否小於Max_DTE設定的百分比(100%)。
  • 最終篩選: 所有條件都必須同時滿足(使用And邏輯運算),腳本才會回傳Ret = 1,表示該股票符合您的選股策略。

XQ系統回測操作與報告解讀

撰寫好腳本後,下一步就是在XQ全球贏家系統中執行回測,以評估您的選股策略在歷史數據上的表現。

回測操作步驟:

  1. 儲存腳本: 在XS編輯器中,將上述程式碼貼上並儲存為一個新的選股策略。
  2. 進入回測功能: 在XQ全球贏家介面中,找到「選股中心」或「策略雷達」,然後選擇「回測」功能。
  3. 設定回測參數:
    • 回測期間: 選擇您希望驗證策略的時間範圍。XQ系統通常支援最長回推3年的回測數據。考慮到您的ROE條件需要10年歷史數據,請確保選定的回測期間足夠長,且數據來源完整。
    • 回測頻率: 設定為日、週或月,通常選股策略以「日」頻率進行回測。
    • 交易成本: 設定適當的交易手續費和證交稅,以使回測結果更貼近真實交易成本。
    • 進出場設定: 這是影響回測結果的關鍵。您可以設定當選股條件符合時的買入邏輯(例如,隔日開盤價買入),以及停利、停損、持有天數等出場條件。這些設定會直接影響最終的報酬率和風險指標。
    • 股票池: 選擇您希望回測的股票範圍,例如台股全部、加權指數成分股等。
  4. 執行回測: 完成所有參數設定後,點擊執行回測按鈕。系統將根據您的腳本和設定,模擬在歷史上執行交易,並生成回測報告。

影片:玩透XQ 選股中心03 - 如何「回測」你的量化選股策略

這部影片深入講解了XQ選股中心的回測功能,包括如何設定回測參數、解讀回測報告等,對於理解和優化您的選股策略非常有幫助。影片中也提及了XQ的優惠碼和美股數據查詢,為您的投資工具選擇提供了額外參考。

解讀回測報告:

回測報告是評估策略績效的關鍵。它通常包含以下重要指標:

  • 總報酬率: 策略在回測期間的整體獲利能力。
  • 年化報酬率: 將總報酬率換算為年化後的數據,便於比較不同策略的績效。
  • 勝率: 獲利交易筆數佔總交易筆數的比例。
  • 最大回檔 (Max Drawdown): 策略淨值從最高點下跌的最大幅度,反映策略的最大潛在虧損風險。
  • 獲利因子 (Profit Factor): 總獲利金額除以總虧損金額,數字越大越好,表示獲利能力強。
  • 淨利曲線圖: 直觀顯示策略淨值隨時間的變化,可判斷策略的穩健性和波動性。
  • 每筆交易詳情: 列出每一筆模擬交易的進出場價格、時間和損益。

透過仔細分析這些數據,您可以判斷您的選股策略是否穩健、獲利能力如何,以及風險是否可控。如果回測結果不理想,您可以回到XS編輯器中調整程式碼或參數,進行優化。


綜合策略表現評估 (雷達圖分析)

為了更直觀地評估您的綜合選股策略在不同維度上的表現,我們可以透過雷達圖進行分析。以下雷達圖呈現了策略在財務健康、獲利能力、市場敏感度、風險控制和數據要求等方面的綜合評估。

這張雷達圖比較了您的「複合選股策略」與「一般基本面策略」在各維度上的表現。可以看出,您的策略在財務穩健性(負債權益比)和長期獲利能力(ROE)上表現出色,同時也具備較高的市場趨勢敏感度(外資買超)。雖然在數據完整性要求上可能較高(需要完整10年ROE數據和連續5日外資數據),且回測執行效率因計算複雜度略低於單一指標策略,但整體而言,其策略風險控制能力更強,提供更全面的投資視角。


策略邏輯思維導圖

為了幫助您更清晰地理解整個選股和回測策略的邏輯流程,以下提供一個思維導圖,它將各個條件、數據來源和判斷流程視覺化。

mindmap root["選股策略核心"] id1["過去10年ROE > 15%"] id1_1["財務數據來源"] id1_1_1["GetField('股東權益報酬率(%)', 'Y', i)"] id1_2["計算10年平均ROE"] id1_2_1["Sum(ROE over 10 years) / Valid Count"] id1_3["判斷是否 > 15%"] id1_3_1["條件滿足"] id1_3_2["條件不滿足"] id2["外資連續買超5日"] id2_1["籌碼數據來源"] id2_1_1["GetField('外資買賣超口數', 'D', j)"] id2_2["連續5天判斷"] id2_2_1["每日買超 > 0"] id2_2_2["任一日買超 <= 0"] id2_2_2_1["中斷連續計數"] id2_3["條件滿足"] id2_4["條件不滿足"] id3["負債權益比 < 100%"] id3_1["財務數據來源"] id3_1_1["GetField('負債權益比(%)', 'Y', 0)"] id3_2["判斷是否 < 100%"] id3_2_1["條件滿足"] id3_2_2["條件不滿足"] id4["最終篩選邏輯"] id4_1["ROE AND 外資買超 AND 負債權益比"] id4_1_1["符合所有條件"] id4_1_1_1["選入股票"] id4_1_2["不符合任一條件"] id4_1_2_1["排除股票"] id5["回測流程"] id5_1["設定回測期間"] id5_2["設定交易成本"] id5_3["設定進出場條件"] id5_4["執行回測"] id5_5["解讀回測報告"] id5_5_1["總報酬率"] id5_5_2["最大回檔"] id5_5_3["勝率"] id5_5_4["獲利因子"]

這個思維導圖直觀地展示了您的選股策略從數據獲取到最終篩選的完整路徑,以及回測流程中的關鍵步驟。它有助於您宏觀理解策略的邏輯架構,並在需要調整時,迅速定位到相關的條件或數據來源。


重要考量與注意事項

在XQ系統中進行程式選股與回測時,有一些重要的實務考量與注意事項,它們直接影響到腳本的準確性、回測結果的可靠性以及未來實際交易的有效性。

數據欄位名稱與頻率的精確性

在XQ系統中,財務指標和法人數據的具體欄位名稱可能會因版本或數據提供商而異。例如,ROE可能顯示為「股東權益報酬率(%)」或「ROE」,外資買賣超可能是「外資買賣超口數」、「外資買超張數」或「外資買進金額」等。您務必在XQ的「選股中心」或「資料查詢」功能中,確認您要使用的財務指標和籌碼數據的精確欄位名稱和資料頻率(年度Y、季度Q、日D),並將其準確地寫入GetField函數中。若欄位名稱不符,腳本將無法正確獲取數據。

歷史數據的完整性與回溯限制

您的「過去10年度ROE大於15%」條件,需要長達10年的歷史年度財務數據。XQ系統對數據的回溯期間可能存在限制,例如回測最長可能只能回推3年。雖然程式碼邏輯上可以計算10年平均,但若實際可用的數據不足10年,則可能影響篩選結果或導致某些股票因數據不完整而被排除。請在回測前確認您所關注的股票是否具備足夠的歷史數據。

法人買賣超數據的詮釋

外資連續買超通常是積極信號,但其背後原因多樣。有時可能是被動型資金(如ETF調整)的買入,而非主動看好基本面。此外,在極端市場情況下,法人行為可能出現短期異常。腳本中的「買超>0」判斷,是最簡單的淨買入邏輯。您可以考慮加入更細緻的判斷,例如:

  • 判斷買超量是否足夠大(例如,超過某個平均值或總成交量的百分比)。
  • 考慮「三大法人買賣超」而不是單純外資,以涵蓋更廣泛的主力資金動態。

回測期間與情境模擬

回測結果僅反映策略在過去表現,不代表未來。不同的回測期間可能產生截然不同的結果。建議您在不同的市場情境(如牛市、熊市、盤整市)下進行分段回測,以評估策略的穩健性。例如,在2020年新冠疫情期間或2008年金融海嘯期間,策略表現如何?這能幫助您更好地理解策略的抗壓能力。

滑價與交易成本影響

回測通常假設能以開盤價或收盤價成交,但實際交易中存在滑價(因掛單量不足或市場波動導致實際成交價與預期價有差異)。此外,交易手續費和證交稅雖然看似不高,但頻繁交易會累積顯著的成本。在XQ的回測設定中,務必加入這些實際交易成本的考量,以獲取更接近實際的淨報酬率。


相關指標與選股理念比較

為了讓您更全面地理解您所選取指標的重要性,以下表格將這些指標與常見的投資理念進行對比。

指標 XQ系統中的對應 投資理念支持 重要性/意義
股東權益報酬率 (ROE) GetField("股東權益報酬率(%)", "Y") 價值投資、成長投資 衡量公司為股東創造利潤的效率,高ROE通常代表公司管理優異、獲利能力強。巴菲特等大師推崇。
外資買賣超 GetField("外資買賣超口數", "D") 籌碼面分析、趨勢投資 反映市場主力對股票的態度。連續買超可能預示股價上漲動能,是市場情緒的風向標。
負債權益比 (D/E Ratio) GetField("負債權益比(%)", "Y") 價值投資、穩健型投資 衡量公司財務槓桿程度和償債能力。低於100%表示財務結構穩健,風險較低,符合安全邊際原則。

從表格中可以看出,您的策略結合了基本面(ROE、負債權益比)與籌碼面(外資買超)的優勢,旨在尋找既有良好內在價值又受到市場資金青睞的標的,這是一種非常全面的選股思路。


常見問題 (FAQ)

如何在XQ系統中找到正確的財務欄位名稱?
您可以在XQ全球贏家的「選股中心」中,點擊「新增條件」或「自訂欄位」,然後瀏覽「財務指標」或「法人籌碼」類別,即可找到相應的欄位名稱及其說明。務必使用系統提供的精確名稱,例如「股東權益報酬率(%)」而非單純「ROE」。
如果XQ的GetField函數無法獲取10年的ROE數據怎麼辦?
如果XQ系統本身不提供長達10年的歷史年度ROE數據,您可以調整策略為「過去N年ROE平均大於15%」,其中N為系統可回溯的最大年份(例如5年或7年)。或者,考慮篩選「連續N年ROE都大於15%」的公司,這雖然更嚴格,但仍能達到篩選優質公司的目的。
回測結果不理想時,該如何優化策略?
回測結果不理想時,您可以從以下幾點進行優化:
  • 調整參數: 嘗試微調ROE的門檻(如15%改為20%)、外資連續買超天數(如3天或7天)、負債權益比的上限(如80%)。
  • 增減條件: 考慮加入其他基本面(如營收成長率、淨利率)、技術面(如股價突破、均線排列)或籌碼面(如投信買超、主力買超)條件。
  • 進出場設定: 重新評估停利停損比例、持有天數等交易策略設定。
  • 數據清洗: 檢查是否存在異常數據或除權息等因素的影響。
每次調整後都應重新回測,比較不同策略的績效。
XQ系統是否支持更多複雜的程式邏輯,例如SetTotalText?
XQ系統的XS語法雖然功能強大,但每個函數都有其特定用途。SetTotalText通常用於在某些圖表上顯示文字信息,而非用於選股條件判斷或回測邏輯。在撰寫選股腳本時,應主要使用GetField、數學運算、邏輯判斷(If...Then...Else)、迴圈(For...Next)等語法來構建條件。如果遇到特定功能需求,建議查閱XQ官方的XS語法手冊或論壇,尋找相應的函數或變通方法。

結論

您提出的選股策略,結合了財務基本面(ROE、負債權益比)和市場籌碼面(外資連續買超),是一個相當全面且具備潛力的量化投資策略。透過XQ全球贏家系統的XS編輯器,您可以將這些複雜的邏輯轉化為自動化的選股腳本,並利用回測功能來驗證其在歷史數據上的表現。

精準的程式碼撰寫、對XQ系統數據欄位和語法的理解,以及回測參數的合理設定,是成功執行此策略的關鍵。請務必在實戰前,透過充分的回測和分析,了解策略在不同市場情境下的表現、潛在的風險與收益特點。量化投資的魅力在於能夠系統性地執行策略,並從數據中學習和優化。祝您在量化投資的旅程中取得成功!


推薦相關查詢


參考搜尋結果

xshelp.xq.com.tw
Xq
xq.com.tw
wslqպ
xq.com.tw
Xq
xq.com.tw
dbȮwslqպ
xq.com.tw
uXQ޳NRСv
xshelp.xq.com.tw
Xq
xshelp.xq.com.tw
Xq
xq.com.tw
{lq
xq.com.tw
zU
xq.com.tw
eUd
Ask Ithy AI
Download Article
Delete Article