在當今複雜多變的金融市場中,僅憑單一指標進行投資決策往往難以應對市場波動。結合多種財務和市場指標,形成一套綜合性的量化投資策略,能顯著提高選股的精準度和回測的有效性。本篇將深入探討如何在XQ全球贏家系統中,基於您提出的核心條件,撰寫程式腳本並進行回測,以篩選出具備長期獲利能力、受法人青睞且財務結構穩健的優質股票。
您目前使用的XQ系統,其強大的XS編輯器和回測功能,能協助您將這些複雜的選股邏輯轉化為可執行的程式碼。透過本文提供的詳細程式範例與回測指引,您將能夠有效驗證您的策略,並從歷史數據中獲取寶貴的洞察,為未來的投資決策提供堅實的依據。我們將特別注意XQ系統的語法限制,確保程式碼的兼容性與高效運行。
一個成功的量化投資策略,通常建立在對公司基本面、市場情緒和財務健康的深刻理解之上。以下是構成您選股策略的三大核心支柱,以及它們在投資決策中的重要性:
股東權益報酬率 (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)的計算公式示意圖
法人(如外資、投信)的買賣超數據,是市場籌碼面分析的重要環節。當外資等法人連續多日對某檔股票呈現淨買超時,通常被市場解讀為主力資金看好該股票未來走勢的積極訊號。這種持續的買入行為,可能預示著該公司基本面出現積極變化、或有潛在利好消息即將公布。您設定的「外資連續買超5日」條件,旨在從籌碼面捕捉這些潛在的股價上漲動能,結合基本面分析,能進一步提升選股的精準度。
圖:外資連續買超可能暗示股價上漲潛力
然而,值得注意的是,法人行為並非萬無一失的指標。有時法人可能因策略調整、套利或其他非基本面因素進行買賣。因此,將法人籌碼與穩健的財務指標結合,可以有效降低單一指標的風險。
負債權益比 (Debt-to-Equity Ratio, D/E Ratio) 是衡量公司財務槓桿程度和償債能力的重要指標。它表示公司總負債與股東權益的比例。一個較低的負債權益比,例如您設定的「小於100%」,意味著公司的負債相對其股東權益較少,這通常代表公司財務結構穩健、經營風險較低。在市場波動或經濟下行時,財務體質健全的公司更能抵禦風險,是長期價值投資者追求安全性的重要考量。相反,過高的負債權益比可能意味著公司過度依賴借貸,潛在的財務風險較高。
負債權益比的計算公式為:
\[ \text{負債權益比} = \frac{\text{總負債}}{\text{股東權益}} \times 100\% \]綜合這些條件,您的選股策略旨在找出那些長期獲利能力強勁、受到市場主力青睞且財務結構穩健的優質股票,這是一種結合基本面分析和籌碼面變化的綜合性策略。
在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系統中獲取各類數據的核心函數。
Period_ROE
年(例如10年)的ROE平均值。若有年份數據缺失,會只計算有效數據的平均。若最終平均值未能達到Min_ROE
設定的百分比,則ROECondition
為假。ForeignBuyDays
天(例如5天)的外資淨買超數據。只要其中任何一天外資買超數小於等於零(即賣超或無買賣超),則ForeignBuyCondition
立即設為假並跳出迴圈。Max_DTE
設定的百分比(100%)。And
邏輯運算),腳本才會回傳Ret = 1
,表示該股票符合您的選股策略。撰寫好腳本後,下一步就是在XQ全球贏家系統中執行回測,以評估您的選股策略在歷史數據上的表現。
影片:玩透XQ 選股中心03 - 如何「回測」你的量化選股策略
這部影片深入講解了XQ選股中心的回測功能,包括如何設定回測參數、解讀回測報告等,對於理解和優化您的選股策略非常有幫助。影片中也提及了XQ的優惠碼和美股數據查詢,為您的投資工具選擇提供了額外參考。
回測報告是評估策略績效的關鍵。它通常包含以下重要指標:
透過仔細分析這些數據,您可以判斷您的選股策略是否穩健、獲利能力如何,以及風險是否可控。如果回測結果不理想,您可以回到XS編輯器中調整程式碼或參數,進行優化。
為了更直觀地評估您的綜合選股策略在不同維度上的表現,我們可以透過雷達圖進行分析。以下雷達圖呈現了策略在財務健康、獲利能力、市場敏感度、風險控制和數據要求等方面的綜合評估。
這張雷達圖比較了您的「複合選股策略」與「一般基本面策略」在各維度上的表現。可以看出,您的策略在財務穩健性(負債權益比)和長期獲利能力(ROE)上表現出色,同時也具備較高的市場趨勢敏感度(外資買超)。雖然在數據完整性要求上可能較高(需要完整10年ROE數據和連續5日外資數據),且回測執行效率因計算複雜度略低於單一指標策略,但整體而言,其策略風險控制能力更強,提供更全面的投資視角。
為了幫助您更清晰地理解整個選股和回測策略的邏輯流程,以下提供一個思維導圖,它將各個條件、數據來源和判斷流程視覺化。
這個思維導圖直觀地展示了您的選股策略從數據獲取到最終篩選的完整路徑,以及回測流程中的關鍵步驟。它有助於您宏觀理解策略的邏輯架構,並在需要調整時,迅速定位到相關的條件或數據來源。
在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、負債權益比)與籌碼面(外資買超)的優勢,旨在尋找既有良好內在價值又受到市場資金青睞的標的,這是一種非常全面的選股思路。
SetTotalText
通常用於在某些圖表上顯示文字信息,而非用於選股條件判斷或回測邏輯。在撰寫選股腳本時,應主要使用GetField
、數學運算、邏輯判斷(If...Then...Else
)、迴圈(For...Next
)等語法來構建條件。如果遇到特定功能需求,建議查閱XQ官方的XS語法手冊或論壇,尋找相應的函數或變通方法。您提出的選股策略,結合了財務基本面(ROE、負債權益比)和市場籌碼面(外資連續買超),是一個相當全面且具備潛力的量化投資策略。透過XQ全球贏家系統的XS編輯器,您可以將這些複雜的邏輯轉化為自動化的選股腳本,並利用回測功能來驗證其在歷史數據上的表現。
精準的程式碼撰寫、對XQ系統數據欄位和語法的理解,以及回測參數的合理設定,是成功執行此策略的關鍵。請務必在實戰前,透過充分的回測和分析,了解策略在不同市場情境下的表現、潛在的風險與收益特點。量化投資的魅力在於能夠系統性地執行策略,並從數據中學習和優化。祝您在量化投資的旅程中取得成功!