Codex+GPT-5.5:可能是開發量化策略的最佳組合之一

作者:貓哥AI量化
日期:2026年4月26日 下午12:59
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

選對AI工具,一句話救返成個回測Codex+GPT-5.5點樣秒殺bug

整理版摘要

作者貓哥係AI量化開發者,佢想將聚寬版本嘅高股息策略改為ptrade版本,點知回測結果完全錯曬。佢發現選出嚟嘅股票股息率低得唔合理,明明市場上有好多高股息股票好似長江電力,股息率有成3%以上,但策略揀出嚟嘅全部都低過1%。

作者用開Claude Code + MiniMax 2.7做主力,但呢次問咗好多次都揾唔到原因。佢換咗Codex + GPT-5.5之後,對方一眼就睇出問題喺to_ratio函數,因為PTrade返嘅股息率係百分點,函數錯誤咁將佢哋除咗100。呢個例子說明咗模型選擇嘅重要性,同埋開發者需要有金融常識先至偵測到呢類邏輯陷阱。

作者深深體會到時間先係最貴嘅資源,與其花時間試錯,不如直接俾錢用最好嘅模型。佢建議量化開發者要兩手準備,唔同任務用唔同工具,同時保持開放態度,不斷試新模型。呢篇文章唔單止分享咗一個bug修復案例,仲提醒大家AI工具嘅取捨會直接影響開發效率。

  • Codex+GPT-5.5組合喺定位bug上遠優於Claude Code+MiniMax,一句話就睇穿問題。
  • 遇複雜問題應直接使用最先進模型,減少試錯時間,時間成本先係最大成本
  • 唔同AI工具對數據口徑嘅理解差異可能導致排查方向錯誤,要留意底層假設。
  • 開發者需要有金融常識先發現AI代碼中嘅隱藏錯誤,否則照跟都係死。
  • 量化策略開發應該兩手抓:文檔自動化用平價模型,策略開發用頂級模型。
整理重點

高股息策略改版竟然翻車

作者嘗試將聚寬版本嘅高股息策略改為ptrade版本,本來以為好易,點知回測結果完全對唔上。

回測結果完全對唔上

佢印咗好多日誌,發現選出嚟嘅股票股息率低得唔正常,全部低過1%。

股息率低得唔正常

  • 先篩選財務指標(ROE > 0、淨利潤增速 > 0、經營現金流 > 0)
  • 再要求三期股息率都大於0(本期、一年前、兩年前)
  • 每個行業選股息率最高嘅1只,最後各行業彙總排序
整理重點

查咗好耐都揾唔到原因,換個模型即刻搞掂

作者最初用Claude Code + MiniMax 2.7排查,AI畀咗三個方向,但全部冇命中。

Claude Code + MiniMax 2.7

  1. 1 方向1:三期股息率篩選問題,但驗證後數據齊全
  2. 2 方向2:query_date導致數據差異,但唔會令3.4%變做低於1%
  3. 3 方向3:行業映射問題,但長江電力行業歸屬正常

作者決定轉用Codex + GPT-5.5,將策略代碼同排查文檔一齊俾佢睇。

Codex + GPT-5.5

就咁一句話,直接命中。

整理重點

原來係單位轉換嘅陷阱

問題出喺to_ratio()函數,佢將大過1嘅數值除以100,但PTrade返回嘅股息率本來就係百分點,唔需要再除。

to_ratio函數(錯誤版本) python
def to_ratio(value):
 if pd.isnull(value):
 return 0.0
 if isinstance(value, str):
 value = value.replace("%", "").strip()
 try:
 number = float(value)
 except Exception:
 return 0.0
 return number / 100.0 if number > 1 else number

例如長江電力股息率3.40%,函數見到3.40>1,就除100變成0.034%,結果輸畀低股息股票。

3.40%被錯誤壓成0.034%

最後AI直接修復咗bug,重新回測後走勢接近返聚寬版本。

整理重點

時間先係最貴嘅資源

作者反思之前冇將「花20刀用最好模型」呢個建議放心上,今次親身經歷話佢知,驗證錯誤方向花嘅時間先係最大成本

驗證錯誤方向花嘅時間先係最大成本

佢打算以後兩手抓:繼續用Claude Code+MiniMax做文檔同自動化,用Codex+GPT-5.5做策略開發同bug修復。

文章仲提到可以用Image2生成模型介紹,同埋策略源代碼已同步知識星球。

Image2模型

文/貓哥AI量化
ps:2700字

近期越來越發覺,喺AI時代嘅量化開發,競爭力唔在於寫code本身,而在於對金融常識嘅理解,唔係嘅話有啲隱藏嘅BUG都發現唔到。

之前出過一個關於高股息策略嘅聚寬版本:

Claude Code 開發100個量化策略:高股息行業均倉策略

琴日開始試下改做ptrade嘅版本。本來以為係件相對容易嘅事,因為策略嘅邏輯唔複雜。

我用嘅係 claude code+minimax2.7 呢個組合,但係改完之後發現回測結果唔啱。整體曲線同聚寬嘅完全對唔上,回測結果更加係差好遠。(只係勉強跑贏指數)

聚寬版本:

Image

ptrade版本:

Image

然後我就開始咗漫長嘅調試旅程,同AI對話咗好幾結果越改越衰,最後乜都冇搞掂。

冇辦法之下換成 codex+gpt5.5(前幾日為咗體驗 Image2模型,怒充plus會員,都係第一次正正經經用),竟然一次成功。今日呢篇文章,貓哥將呢個排查過程完整分享出嚟,順便講下揀AI編程工具呢件事。


一、問題現象:揀出嚟嘅股票股息率"唔對路"

先交代嚇背景。

貓哥寫咗一個高股息選股策略,邏輯唔複雜:

  1. 1.先篩選財務指標(ROE > 0、淨利潤增速 > 0、經營現金流 > 0)
  2. 2..再要求三期股息率都大過0(本期、一年前、兩年前)
  3. 3.每個行業揀股息率最高嘅1隻,最後各行業匯總排序

照計聚寬嘅code都寫好咗,改做ptrade應該冇咁難,回測結果就算有啲差異,都唔會太大,結果都係炒車。於是貓哥print咗好多日誌,逐個去睇問題,見到揀出嚟嘅股票大概係咁樣:

Image

見到呢度,一般人可能覺得好正常。但貓哥當時就覺得唔對路——呢啲股息率太低啦


二、異常直覺:高股息股票點解冇入選?

點解話唔對路?因為貓哥知道,市場上有一大批股票嘅股息率明顯高啲,例如長江電力,股息率平均應該係3%左右,而上面嘅日誌入面竟然都冇超過1%嘅,咁都可以叫高股息?

於是用ptrade嘅研究板塊直接拎咗對應數據,先睇嚇係咪滿足財務篩選嗰幾個條件(ROE > 0、淨利潤增速 > 0、經營現金流 > 0),可以見到係滿足嘅:

Image

然後睇嚇最近三年嘅股息率係幾多,可以見到長江電力平均應該係3個幾點嘅股息率:

Image

長江電力3%以上嘅股息率,比揀出嚟嘅股票高咗3倍幾,點解冇被揀中?

按照策略邏輯,每個行業揀股息率最高嘅股票。長江電力屬於電力行業,如果行業入面有其他股票股息率比3.4%仲高,咁長江電力冇被揀中都仲可以解釋。

但問題係——揀出嚟嘅10隻股票股息率都低過1%,即係話每個行業嘅"股息率冠軍"都低過1%。

換句話講:長江電力俾某個條件filter咗走,否則佢至少應該出現喺候選名單入面

呢個直覺後來證實係啱嘅,但具體點解會俾人filter走,一定係code邊度出咗問題


三、第一輪排查

貓哥第一個反應係問AI。

先用 Claude Code + MiniMax 2.7 開始排查,呢個都係我目前嘅主力AI工具,速度快而且量大管飽,code質量都好強。但呢個組合問咗好幾輪,AI畀出嘅排查方向大概係咁:

方向1:三期股息率篩選問題

策略要求"本期、一年前、兩年前"三期股息率都大過0。

AI懷疑:長江電力喺query_date嗰日,可能某期股息率數據係0或者係空,導致俾篩選條件 all(axis=1) filter走。

呢個方向聽起嚟合理,但驗證之後發現,長江電力嘅三期股息率數據都係有嘅。

方向2:query_date導致嘅數據差異

策略用嘅係上一個交易日(例如20260331)嘅數據,而貓哥手動測試用嘅係20260425。

AI懷疑:唔同日期嘅股息率數據可能差異好大。

呢個都有可能,但就算數據有差異,都唔會令到3.4%變成遠低過1%嘅結果。

方向3:行業映射問題

AI懷疑:長江電力可能唔喺申萬電力行業嘅成分股列表入面,導致冇行業歸屬,俾 dropna(subset=["industry"]) filter走。

呢個方向都有可能,但驗證之後發現,長江電力嘅行業歸屬係正常嘅。

總結:問咗好幾輪,畀咗3個方向,冇一個中。後面隨住上下文增多,回答質量都開始下降,已經唔指望可以直接解決。


四、轉機

貓哥決定換個模型試試。作為AI編程愛好者,一直以嚟都想試下Codex,而且啱啱最近openai更新咗 Image2同GPT5.5呢兩個重磅模型,所以整咗個帳號試試。為咗交代好上下文,叫AI將頭先嘅對話,先保存做排查文檔,然後將策略code同排查文檔一齊掉俾 Codex + GPT-5.5

GPT-5.5望咗一眼code,直接講咗一句嘢:

「問題喺to_ratio函數,股息率3.4%俾人除以100壓成咗0.034%」

就係咁一句嘢,直接命中

Image

五、根因解析:單位轉換嘅"陷阱"

而家嚟解釋嚇,究竟發生咗咩事。

原本code入面有個 to_ratio() 函數,大概係咁樣:

def to_ratio(value):
    if pd.isnull(value):
        return0.0
    ifisinstance(value, str):
        value = value.replace("%""").strip()
    try:
        number = float(value)
    except Exception:
        return0.0
    return number / 100.0if number > 1else number

呢段code嘅邏輯係:如果數值大過1,就除以100。(作為Vibe Coding嘅擁躉,當時我都只係大概睇咗眼code,真係冇留意有個咁大嘅伏位,當然呢個都怪我冇同AI提供清晰嘅ptrade數據規範)

設計者原本嘅假設係


  • 6.21 代表 621% 或者 6.21 倍,需要除以100,變成 0.0621

  • 0.53 代表 0.53%,唔使處理

但PTrade實際返回嘅口徑係"百分數點"


  • 3.40 表示 3.40%,本來就唔需要再除以100

  • 6.21 表示 6.21%,本來就唔需要再除以100

即係話,PTrade返回嘅股息率3.40就係3.40%,唔係3.40倍

但code入面嘅 to_ratio() 函數,見到3.40 > 1,就自動除咗100,例如:

股票PTrade返回值實際含義to_ratio()處理後處理後嘅含義
股票A3.403.40%0.0340.034%
股票B6.216.21%0.06210.0621%
股票C0.940.94%0.940.94%

問題就係出喺呢度

長江電力3.4%嘅股息率,俾人錯誤咁壓成咗0.034%。

排序嘅時候,0.034% < 0.94%,自然就輸畀咗啲本來得0.8%-0.9%嘅低股息股票。

魔幻嗎?但呢個就係事實。

最後AI直接修復咗BUG,重新跑咗嚇回測,雖然結果仲有差異(Ptrade回測機制同數據口徑差異),但整體走勢已經好接近:

Image

六、反思:時間先至係最貴嘅資源

之前數字生命卡茲克分享咗用AI嘅九個心得:

用AI嘅呢三年,想同你分享呢9條心得。

其中第一個心得就係:花20刀,去用世界上最好嘅模型。

當時我個心其實冇當一回事,因為覺得而家用緊嘅各種Coding Plan,量大管飽,已經滿足到自己嘅使用需求,畢竟自己只係用嚟寫嚇量化策略,做嚇自動化腳本,就算遇到難嘅問題,多進行幾輪對話,都可以得到比較滿意嘅結果。

但今日呢件事令到自己有咗新嘅理解,喺驗證錯誤方向上面花嘅時間,先至係最大嘅成本。

所以未來打算兩邊兼顧,一方面繼續用 claude code+minimax2.7,主要做量化策略學習、文檔撰寫、自動化工作流等等,特別係我嘅openclaw,依然大量用 minimax2.7,非常好用;另一方面,用 codex+gpt5.5做量化策略開發、code審查、BUG修復、圖片生成等等,作為主力編程Agent。

用 Image2 隨手生成一個模型介紹:

圖片


關於Codex,我自己係用客戶端(windows同mac都有),覺得都幾方便,具體點樣安裝同用可以問嚇豆包:

圖片


當然,呢個只係貓哥目前嘅個人感受,AI模型更新好快,今日嘅最優解可能下星期就唔係喇保持開放嘅心態,持續嘗試,先至係最重要嘅。


想開通Ptrade、QMT等量化工具嘅朋友可以喺主頁聯絡我,備註量化開户”




推薦閲讀:

績優小市值策略  中小綜指小市值   AI量化編程工具

菜場大媽策略(低價小市值) 小市值擇時(月曆效應)

行業ETF輪動   乖離動量ETF輪動  三因子ETF輪動

全天候策略  永久投資組合


PS:策略源代碼已同步知識星球,歡迎一齊交流~

圖片

文/貓哥AI量化
ps:2700字

近期越來越體會到,在AI時代下的量化開發,競爭力不在於寫代碼本身,而在於對金融常識的理解,不然有一些隱藏的BUG都無法發現。

之前發過一個有關高股息策略的聚寬版本:

Claude Code 開發100個量化策略:高股息行業均倉策略

昨天開始嘗試修改為ptrade的版本。本來以為是一件相對容易的事情,因為策略的邏輯並不複雜。

我使用的 claude code+minimax2.7 這個組合,但是改完之後發現回測結果不對。整體曲線和聚寬的一點都對不上,回測結果更是差了老遠。(僅勉強跑贏指數)

聚寬版本:

Image

ptrade版本:

Image

然後我就開始了漫長的調試之旅,跟AI對話了好幾結果越改越糟,最終卻一無所獲。

迫不得已換成 codex+gpt5.5(前幾天為了體驗 Image2模型,怒充plus會員,也是第一次正兒八經用),居然一次成功。今天這篇文章,貓哥把這個排查過程完整分享出來,順便聊聊選AI編程工具這件事兒。


一、問題現象:選出的股票股息率"不對勁"

先交代一下背景。

貓哥寫了一個高股息選股策略,邏輯不復雜:

  1. 1.先篩選財務指標(ROE > 0、淨利潤增速 > 0、經營現金流 > 0)
  2. 2..再要求三期股息率都大於0(本期、一年前、兩年前)
  3. 3.每個行業選股息率最高的1只,最後各行業彙總排序

按理說聚寬的代碼都寫好了,改成ptrade應該沒那麼難,回測結果即使有些差異,也不會太大,結果還是翻車了。於是貓哥打印了很多日誌,挨個去查看問題,看到選出來的股票大概是這個樣子:

Image

看到這兒,一般可能覺得挺正常。但貓哥當時就覺得不對勁——這些股息率也太低了吧


二、異常直覺:高股息股票為什麼沒入選?

為什麼說不對勁?因為貓哥知道,市場上有一大批股票的股息率明顯更高,例如長江電力,股息率平均應該是3%左右,而上述日誌中居然都沒有超過1%的,那能叫高股息嗎?

於是使用ptrade的研究板塊直接獲取了對應數據,先看看是否滿足財務篩選的那幾個條件(ROE > 0、淨利潤增速 > 0、經營現金流 > 0),可以看到是滿足的:

Image

然後看一下最近三年的股息率是多少,可以看到長江電力平均應該是3個多點的股息率:

Image

長江電力3%以上的股息率,比選出來的股票高了3倍多,為什麼沒被選上?

按照策略邏輯,每個行業選股息率最高的股票。長江電力屬於電力行業,如果行業內有其他股票股息率比3.4%還高,那長江電力沒選上還能解釋。

但問題是——選出來的10只股票股息率都低於1%,這意味着每個行業的"股息率冠軍"都低於1%。

換句話說:長江電力被某個條件過濾掉了,否則它至少應該出現在候選列表裏

這個直覺後來被證明是對的,但具體為什麼被過濾掉了,一定是代碼哪裏出了問題


三、第一輪排查

貓哥第一反應是問AI。

先用 Claude Code + MiniMax 2.7 開始排查,這也是我目前的主力AI工具,速度快且量大管飽,代碼質量也很強。但這個組合問了好幾輪,AI給出的排查方向大概是這樣的:

方向1:三期股息率篩選問題

策略要求"本期、一年前、兩年前"三期股息率都大於0。

AI懷疑:長江電力在query_date那天,可能某期股息率數據為0或為空,導致被篩選條件 all(axis=1) 過濾掉。

這個方向聽起來合理,但驗證後發現,長江電力的三期股息率數據都是有的。

方向2:query_date導致的數據差異

策略用的是上一個交易日(比如20260331)的數據,而貓哥手動測試用的是20260425。

AI懷疑:不同日期的股息率數據可能差異很大。

這個也有可能,但即使數據有差異,也不會導致3.4%變成遠低於1%的結果。

方向3:行業映射問題

AI懷疑:長江電力可能不在申萬電力行業的成分股列表裏,導致沒有行業歸屬,被 dropna(subset=["industry"]) 過濾掉。

這個方向也有可能,但驗證後發現,長江電力的行業歸屬是正常的。

總結:問了好幾輪,給了3個方向,沒一個都沒命中。後面隨着上下文增多,回答質量也開始下降,已經不指望能直接解決了。


四、轉機

貓哥決定換個模型試試。作為AI編程愛好者,一直以來想試試Codex,而且剛好最近openai更新了 Image2和GPT5.5這兩個重磅模型,所以弄了個賬號試試。為了交待好上下文,讓AI將剛才的對話,先保存為排查文檔,然後把策略代碼和排查文檔一起丟給 Codex + GPT-5.5

GPT-5.5看了一眼代碼,直接說了一句話:

「問題在to_ratio函數,股息率3.4%被除以100壓成了0.034%」

就這麼一句話,直接命中

Image

五、根因解析:單位轉換的"陷阱"

現在來解釋一下,到底發生了什麼。

原代碼裏有個 to_ratio() 函數,大概是這樣的:

def to_ratio(value):
    if pd.isnull(value):
        return0.0
    ifisinstance(value, str):
        value = value.replace("%""").strip()
    try:
        number = float(value)
    except Exception:
        return0.0
    return number / 100.0if number > 1else number

這段代碼的邏輯是:如果數值大於1,就除以100。(作為Vibe Coding的擁泵,當時我也只是大概看了一眼代碼,真沒注意有這麼個巨坑,當然這也怪我沒給AI提供清晰的ptrade數據規範)

設計者原本的假設是


  • 6.21 代表 621% 或者 6.21 倍,需要除以100,變成 0.0621

  • 0.53 代表 0.53%,不需要處理

但PTrade實際返回的口徑是"百分數點"


  • 3.40 表示 3.40%,本來就不需要再除以100

  • 6.21 表示 6.21%,本來就不需要再除以100

也就是說,PTrade返回的股息率3.40就是3.40%,不是3.40倍

但代碼裏的 to_ratio() 函數,看到3.40 > 1,就自動除了100,例如:

股票PTrade返回值實際含義to_ratio()處理後處理後的含義
股票A3.403.40%0.0340.034%
股票B6.216.21%0.06210.0621%
股票C0.940.94%0.940.94%

問題就出在這兒了

長江電力3.4%的股息率,被錯誤地壓成了0.034%。

排序的時候,0.034% < 0.94%,自然就輸給了那些本來就只有0.8%-0.9%的低股息股票。

魔幻嗎?但這就是事實。

最後AI直接修復了BUG,重新跑了一下回測,雖然結果仍有差異(Ptrade回測機制和數據口徑差異),但整體走勢已經很接近了:

Image

六、反思:時間才是最貴的資源

之前數字生命卡茲克分享了使用AI的九個心得:

用AI的這三年,想跟你分享這9條心得。

其中第一個心得就是:花20刀,去用世界上最好的模型。

當時我心裏其實是沒有當回事的,因為覺得目前用的各種Coding Plan,量大管飽,已經滿足自己的使用需求了,畢竟自己只是用來寫寫量化策略,做做自動化腳本,即使遇到難點的問題,多進行幾輪對話,也能得到較為滿意的結果。

但今天這件事讓自己有了新的理解,在驗證錯誤方向上花的時間,才是最大的成本。

所以未來打算兩手抓,一方面繼續使用 claude code+minimax2.7,主要作為量化策略學習、文檔撰寫、自動化工作流等等,特別是我的openclaw,依舊大量使用 minimax2.7,非常好用;另一方面,使用 codex+gpt5.5作為量化策略開發、代碼審查、BUG修復、圖片生成等等,作為主力編程Agent。

使用 Image2 隨手生成一個模型介紹:

圖片


關於Codex,我自己是使用的客戶端(windows和mac都有),感覺還是比較方便的,具體如何安裝和使用可以問問豆包:

圖片


當然,這只是貓哥目前的個人感受,AI模型更新很快,今天的最優解可能下週就不是了保持開放心態,持續嘗試,才是最重要的。


想開通Ptrade、QMT等量化工具的朋友可在主頁聯繫我,備註量化開户”




推薦閲讀:

績優小市值策略  中小綜指小市值   AI量化編程工具

菜場大媽策略(低價小市值) 小市值擇時(月曆效應)

行業ETF輪動   乖離動量ETF輪動  三因子ETF輪動

全天候策略  永久投資組合


PS:策略源代碼已同步知識星球,歡迎一起交流~

圖片