股票回測助手

👤 安浩夕 📦 v1.0.0 ⭐ 4.5 ⬇️ 229 下載
📊 資料分析 免費

📖 技能介紹


name: stock-replay description: 生成「假如買入 100 萬 X 股票,從上市持有到現在值多少」的動態回放網頁(抖音/財經爆款那種)。使用者給股票程式碼或名稱(如「騰訊」「茅臺」)+ 金額,本 skill 先把名稱解析成具體股票並讓使用者確認,再自動抓取該股票上市至今的每日收盤價,渲染成一個 16:9 的折線回放動畫網頁:大數字隨時間跳動顯示市值、漲跌額/漲幅(A股紅漲綠跌),下方有播放/暫停、速度、重新開始控制。支援「對比模式」——使用者給兩隻股票(如「中國聯通、中國電信各投入10萬」),同頁渲染兩條回測曲線(縱軸為累計淨值倍數,誰高誰賺得多),最多兩隻。覆蓋 A股、港股、美股。當用戶提到「假如買100萬股票」「股票歷史走勢模擬」「股票回測/回放網頁」「投資模擬器」「持有到現在值多少」「100萬股票走勢」「兩隻股票對比/比較回測」等,或想做任何「投入一筆錢買入某股票並按歷史走勢回放」的視覺化網頁時,務必使用本 skill。


股票假如買入 · 走勢回放網頁

這個 skill 做什麼

把抖音/財經爆款裡很火的「假如 X 年前買入 100 萬 XX 股票,現在值多少」做成一個可互動網頁: - 使用者輸入 股票程式碼 + 投入金額(預設 100 萬)。 - 自動抓取該股票上市至今的每日收盤價。 - 渲染成 16:9 展示區裡的折線回放動畫:曲線從左到右逐漸畫出(紅色發光線,A股紅漲綠跌)。 - 資訊條在圖表上方(不壓在圖上):即時顯示日期、市值大數字、漲跌額/漲幅,右側固定顯示投入本金/區間最高/最大回撤。 - 初次開啟預設暫停,需手動點「▶ 播放」開始。 - 控制條:▶播放/⏸暫停 · ↺重新開始 · 速度(1x/2x/5x/10x) · 開始日期選擇器;鍵盤 空格=播放暫停、R=重開、←/→=微調。 - 開始日期可改:選擇器預設為空(=從上市/資料最早日起回測);使用者選一個日期後,以該日為新買入基準重算(本金÷新起點收盤價=新股數,市值/峰值/最大回撤/里程碑全部基於新起點),圖表從該日起重新回放;清空又回到最早。對比模式下兩隻股票都從所選日期起(早於某隻上市日的,那隻仍從其上市日起)。 - 投入金額可改:金額框預設 100 萬(對比頁預設兩隻統一本金);改金額後按新本金重算市值/峰值/盈虧(收益率不變),開始日期和金額任一改動都即時重算重繪。 - 里程碑暫停:播放到「區間最高」和「最大回撤」時會自動停 1 秒、彈出高亮卡片顯示收益/回撤,然後繼續。 - 結束後標記:自由播放走完停止時,在圖上用懸浮卡片標出峰值點和最大回撤點(含數值與日期)。 - 頁面底部註明回測口徑:僅基於不復權收盤價漲跌,不計分紅/送股/配股/手續費,持有期間無買賣;拆股已修正使曲線連續。 - 每隻股票一個專案資料夾,過程資料(每日收盤價)也存檔

設計原則(使用者拍板,別擅自改):只看收盤走勢、不記分紅 → 統一用「不復權收盤價」;為避免美股拆股造成的假跳水,對拆股做回溯修正讓曲線連續。

工作流(每次呼叫都按這個順序)

1. 解析輸入 + 確認(重要:先解析、使用者確認後,再抓數)

先從使用者原話裡識別出股票 + 金額。使用者常給的是名稱(「騰訊」「茅臺」「中國聯通」)而不是程式碼,按下面處理:

(a) 大模型先解析(必須,別跳過直接查介面):憑你自己的知識把名稱對映到最可能的具體股票。常見對映: - 騰訊 → 騰訊控股 港股 00700;茅臺 → 貴州茅臺 A股 600519;蘋果 → 美股 AAPL - 中國聯通 → A股 600050 / 港股 00762;中國電信 → A股 601728 / 港股 00728;比亞迪 → A股 002594 / 港股 01211 - 名稱帶「A 股/港股/美股」就按指定市場;沒指定就給最主流的上市地(如騰訊預設港股、茅臺預設A股),並列出歧義項讓使用者選。

(b) 用介面校驗:跑 python3 <skill>/scripts/resolve_stock.py <名稱> 用騰訊 smartbox 校驗你解析的程式碼、補全市場/全稱,並列出候選(含 ADR、子品牌等同名項)。注意介面會漏(如「茅臺」「貴州茅臺」可能搜不到、A股中國聯通/電信/比亞迪常只返回港股),所以以你(a)的解析為準、介面只作校驗補全,介面沒返回不代表不存在。

(c) 給使用者確認一次:把解析結果簡明列出,請使用者拍板後再抓數。例如:

已識別:中國聯通(A股 600050),投入 10 萬。是這隻嗎?(港股另有 00762) 對比:中國聯通(A股 600050) VS 中國電信(A股 601728),各投 10 萬。確認開始?

只有使用者確認後,才進入下一步抓資料。 使用者若給了明確程式碼(600519/AAPL/sz000001),可跳過解析直接確認即可。

  • 投入金額預設 1000000(100 萬);使用者說「10W/10萬」就 100000
  • 可選起始日期(預設自動從上市日起)。
  • 對比模式:使用者一次給兩隻股票(最多兩隻)→ 走對比流程(見下文「對比模式」)。

2. 在【當前工作目錄】下建專案資料夾

一股一個資料夾,命名 <股票名>-<程式碼>(股票名抓到後才知道,可先用程式碼建,抓到後重命名;或直接先抓再建)。例如:

貴州茅臺-600519/
├── data.json      # 過程資料:每日收盤價 + 模擬市值 + meta(fetch 產出)
├── closes.csv     # 過程資料:純收盤價,人可讀(build 額外產出)
└── index.html     # 最終回放網頁(build 產出,雙擊即開)

資料夾建在使用者當前 cwd 下,不要建到固定路徑或 .claude/ 下。

3. 抓資料(呼叫內建指令碼)

python3 <skill>/scripts/fetch_kline.py <程式碼> --amount <金額> --out <專案>/data.json
  • 指令碼自動:識別市場 → 按 [上市日,今天] 拆段 → 多平臺輪換抓取(騰訊/東方財富,每次間隔 2 秒防封)→ 組裝去重 → 美股/港股拆股修正 → 計算「假如買入」模擬市值。
  • 進度會打到 stderr(看到「東財全量成功」=1 次呼叫搞定;看到「分段」=正在逐段抓)。
  • 耐心等:長曆史(如茅臺 20 年 ≈ 9 段)每段 2 秒,全程可能 30~60 秒,屬正常,別中途打斷。

4. 渲染網頁(呼叫內建指令碼)

python3 <skill>/scripts/build_page.py \
  --data <專案>/data.json \
  --template <skill>/assets/replay-template.html \
  --out <專案>/index.html
  • --template 不傳時按資料數量自動選:1 個 --datareplay-template.html(單股);2 個 → compare-template.html(對比)。
  • 自動注入資料、生成 16:9 折線回放網頁,並額外輸出 closes.csv

5. 交付

  • 告訴使用者專案資料夾路徑,用 open <專案>/index.html(macOS)開啟預覽。
  • 簡述結果:投入多少、最終市值、總收益率、區間最高、最大回撤。

對比模式(兩隻股票同頁對比)

當用戶一次給兩隻股票(最多兩隻,超過要讓使用者只選兩隻):

  1. 分別解析 + 確認兩隻(同步驟 1)。兩隻可不同市場、不同上市日、不同金額。
  2. 建一個對比專案資料夾,命名 對比-<名A>vs<名B>/(建在當前 cwd 下),分別抓兩隻資料: bash python3 <skill>/scripts/fetch_kline.py <程式碼A> --amount <金額A> --out 對比-XvsY/data_A.json python3 <skill>/scripts/fetch_kline.py <程式碼B> --amount <金額B> --out 對比-XvsY/data_B.json
  3. 一次性傳入兩個 --data 生成對比頁(自動選 compare-template.html): bash python3 <skill>/scripts/build_page.py \ --data 對比-XvsY/data_A.json --data 對比-XvsY/data_B.json \ --out 對比-XvsY/index.html 產出:index.html(對比頁)+ closes_A.csv + closes_B.csv

對比頁與單股頁的不同(這是為對比專門做的樣式適配): - 兩條曲線同圖:A 青色、B 橙色,各自從上市日起畫。 - 縱軸用「累計淨值倍數」(相對各自本金,1×=本金)而不是絕對金額——這樣一隻暴漲(如衝到 5×)不會把另一隻(在 1× 附近)壓扁成看不見的細線,兩隻都清晰可比。具體金額仍在上方的兩張資訊卡里顯示。 - 兩張資訊卡(A/B 各一張)即時顯示日期、市值、漲跌額/漲幅、投入、區間最高。 - 領先提示條:按收益率比較,即時顯示「🏆 當前領先:X,領先 Y 個百分點」。 - 時間按真實日期對齊:兩隻上市日不同時,較早的一隻先畫,較晚的那隻在其上市日前顯示「未上市」(不畫)。 - 無里程碑暫停(兩隻的峰值/回撤點不同,暫停會打架),改為連續播放;速度/重開/鍵盤控制同單股。

什麼時候讀 references

references/data-sources.md 記錄了各行情介面的實測行為與坑。正常情況不用讀——fetch_kline.py 已內建最優策略。只在以下情況讀它: - fetch_kline.py 兩平臺都失敗(輸出 !! 兩平臺均無資料)→ 按 references「失敗時」一節自主找新浪/網易/雅虎等替代源。 - 使用者問資料來源、復權口徑、拆股處理細節。 - 想理解某平臺為什麼限流/返回空。

關鍵決策與「為什麼」

  • 不復權收盤價(而非前復權):使用者明確「只看走勢、不記分紅」。不復權最貼近「真實價格走勢」。代價是分紅除權日有小幅下跳——使用者接受。
  • 騰訊為主、東財為輔,但按市場分工(實測結論):
  • 騰訊最穩定但單次硬上限 640 條,長曆史靠翻頁(A股/港股可行)。
  • 東財一次拿全量,但①前復權對A股超長曆史會算出負價(bug),故用不復權 fqt=0;②短時多次會 HTTP 000 限流。
  • 美股騰訊只能拿到 2 個點(不可用),所以美股只能靠東財
  • 因此 A股/美股「東財全量優先」,港股「騰訊分段優先」,詳見 references。
  • 每次請求間隔 2 秒:使用者要求,防平臺封禁。
  • 拆股修正(僅美股/港股):raw 價在拆股日會假跳水(如蘋果 4:1 拆股價從 $500 跳 $125),不修正會讓「持有到現在」的曲線斷裂、模擬失真。指令碼檢測接近 1/3、1/4、1/7… 的乾淨拆股比率並回溯縮放;刻意排除 1/2(與真實暴跌 -50% 無法區分,寧可漏判不誤傷)。A股無拆股,跳過。
  • 網頁零依賴、自包含:純 HTML+CSS+JS,不引 CDN,雙擊即開、可離線、無跨域問題。資料由指令碼服務端抓取後嵌入 JSON。

    7w4.net小蔥技能站,你的AI助手技能庫。

專案資料夾位置(強調)

  • 始終建在使用者當前工作目錄下(pwd),一股一個子資料夾。
  • 不要建在 ~/.claude/ 或 skill 自身目錄下,不要建固定路徑。

金額單位與顯示

  • 內部統一用「元」計算(如 100 萬 = 1000000)。
  • 網頁自動按 萬/億 縮寫顯示大數字。
  • A股慣例 紅漲綠跌(漲=紅、跌=綠),網頁已內建。

常見問題

  • 美股抓不到/有缺口:東財美股易限流。指令碼會重試;若仍有缺口,網頁會標註「⚠️ 部分割槽間資料獲取受限」。可過幾分鐘重試,或參考 references 用雅虎/新浪補。
  • 程式碼識別錯市場:檢查程式碼寫法(見 references「市場與程式碼識別」);北交所/特殊程式碼少見,必要時手動指定。
  • 歷史太短就一閃而過:正常,調慢速度(1x)或點重新開始。

🤖 AI 評測

這是一個質量不錯的股票視覺化 Skill,功能實用,能生成類似抖音爆款的「買入回放」網頁,互動流暢、細節到位。優點是支援三大市場、對比模式、文件詳盡;主要不足是美股資料有時抓不到或被限流,需要耐心重試。整體值得一試,但對美股使用者可能要有些心理準備。

📊 多維度評分

適應性4.5
規範性4.4
有效性4.7
可靠性4.4
可信度4.9

📁 包含檔案 (7 個)

📄 SKILL.md 11.8 KB
📄 assets/compare-template.html 19.7 KB
📄 assets/replay-template.html 19.1 KB
📄 references/data-sources.md 5.5 KB
📄 scripts/build_page.py 4.5 KB
📄 scripts/fetch_kline.py 17.1 KB
📄 scripts/resolve_stock.py 4.3 KB