detect-us-equity-valuation-percentile-extreme
npx skills add https://github.com/fatfingererr/macro-skills --skill detect-us-equity-valuation-percentile-extreme
Agent 安装分布
Skill 文档
<essential_principles>
å°ä¸åå®ä½ç估弿æ¨ï¼PEãPBãCAPE çï¼çµ±ä¸æã0-100 çæ·å²å使¸ãï¼
- å使¸ = 100 à (æ·å²ä¸ ⤠ç¶åå¼çæ¨£æ¬æ¸ / ç¸½æ¨£æ¬æ¸)
- ä¾ï¼CAPE 使¼æ·å²ç¬¬ 98 åä½ â éå» 130 å¹´åªæ 2% çæéæ¯ç¾å¨æ´è²´
- çµ±ä¸å®ä½å¾ï¼å¯è·¨ææ¨åæãç¶åä¼°å¼å使¸ã
åæå
¬å¼ï¼composite_percentile = å æ¬å¹³å(åææ¨å使¸)
æ¯æ´ä¸ç¨®åææ¹å¼ï¼
| æ¹å¼ | å ¬å¼ | é©ç¨å ´æ¯ |
|---|---|---|
| mean | ç®è¡å¹³å | åææ¨åçéè¦ |
| median | ä¸ä½æ¸ | æµæå®ä¸ææ¨ç°å¸¸æå |
| trimmed_mean | 廿¥µç«¯å¹³å | ç©©å¥ä¼°è¨ |
éè¦ï¼åææ¨å¯è½æä¸åæ·å²é·åº¦ï¼é è¨ä½¿ç¨ãåèªæ·å²ãè¨ç®å使¸ååæã
if composite_percentile >= extreme_threshold (é è¨ 95):
â å¤å®ãæ·å²æ¥µç«¯é«ä¼°ã
â 觸ç¼é¢¨éªè§£è®æµç¨
æ·å²é¡æ¯äºä»¶èå¥ï¼
- æ¾åºåæå使¸è¶ ééæª»çå³°å¼
- ç¨
episode_min_gap_dayså»éï¼é è¨ 10 å¹´å §åªä¿çæé«é»ï¼ - 輸åºï¼1929ã1965ã1999ã2021ãç¶å…
ã估弿¥µç«¯é«ãâ ãæå¤©å´©ç¤ãï¼ä½æ·å²ç¹å¾µæ¯ï¼
- 風éªåå¸ä¸å°ç¨±ï¼ä¸è·å°¾å·´è®å
- æªä¾ä¸æå ±é ¬å£ç¸®ï¼ä¼°å¼åå¼åæ¸å£ä½é·æå ±é ¬ä¸é
- æ³¢åå åå¾è·ï¼äºä»¶å¾ 6-12 ææ³¢åçé常ä¸å
輸åºäºå¾çµ±è¨ï¼
- æªä¾ 180/365/1095 å¤©å ±é ¬åå¸
- æå¤§åæ¤ä¸ä½æ¸èå°¾é¨é¢¨éª
- æ³¢åçè®åæ©ç
æ¬ skill 使ç¨å ¬éæ¿ä»£è³æï¼éå½ååå§æ¸æï¼
- Shiller CAPE: Robert Shiller å ¬éè³æéï¼å¯åæº¯è³ 1871 å¹´ï¼
- å¸å¼/GDP: FRED å ¬éæ¸æï¼å¯åæº¯è³ 1950 年代ï¼
- PE/PB/PS: å ¬ééèè³æï¼æ·å²è¼çï¼ç´ 30-50 å¹´ï¼
å¿ é æé²ï¼
- åææ¨å¯å¾æéä¸å
- åæå使¸çºãè¿ä¼¼é建ãï¼é精確è¤è£½
</essential_principles>
- æ¶é估弿æ¨ï¼å¾å ¬éæ¸ææºåå¾ PEãCAPEãPBãPSãå¸å¼/GDP ç
- è¨ç®å使¸ï¼å°åææ¨è½æçºæ·å²å使¸ï¼0-100ï¼
- åæç¸½åï¼å æ¬å¹³åï¼æä¸ä½æ¸ï¼å¾å°ç¶åä¼°å¼å使¸
- å¤å®æ¥µç«¯ï¼è¥ç¸½å â¥ éæª»ï¼é è¨ 95ï¼ï¼è§¸ç¼æ¥µç«¯é«ä¼°è¦å ±
- æ·å²é¡æ¯ï¼æ¾åºæ·å²ä¸çé¡ä¼¼äºä»¶ï¼1929ã1965ã1999 çï¼
- äºå¾çµ±è¨ï¼è¨ç®éäºäºä»¶å¾çå ±é ¬ãåæ¤ãæ³¢åè®å
輸åºï¼ç¶åçæ ãåææ¨å使¸ãæ·å²é¡æ¯äºä»¶ã風éªè§£è®ã
<quick_start>
æå¿«çæ¹å¼ï¼å·è¡è¦è¦ºååæ
cd skills/detect-us-equity-valuation-percentile-extreme
pip install pandas numpy yfinance requests matplotlib openpyxl xlrd # 馿¬¡ä½¿ç¨
python scripts/visualize_valuation.py -o output
輸åºï¼
output/us_valuation_percentile_YYYY-MM-DD.png– æ·å²èµ°å¢åï¼é¡ä¼¼ @ekwufinance é¢¨æ ¼ï¼output/us_valuation_breakdown_YYYY-MM-DD.png– åææ¨å使¸åè§£åoutput/us_valuation_analysis_YYYY-MM-DD.json– JSON çµæ
å表ç¹è²ï¼
- 夿æ¨åæå使¸çæ·å²èµ°å¢ï¼éå®ä¸æéé»ï¼
- æ·å²å³°å¼æ¨è¨ï¼1929ã1965ã1999ã2021
- S&P 500 ææ¸çå ï¼å°æ¸å»åº¦ï¼
- ç¶åãæ°é«ãæ¨è¨»
å¿«éæª¢æ¥ï¼ç´ JSONï¼ï¼
python scripts/valuation_percentile.py --quick
宿´åæï¼
python scripts/valuation_percentile.py \
--as_of_date 2026-01-21 \
--universe "^GSPC" \
--metrics "cape,mktcap_to_gdp,trailing_pe,pb" \
--output result.json
</quick_start>
- è¦è¦ºååæï¼æ¨è¦ï¼ – çææ·å²èµ°å¢åè¡¨ï¼æ¨è¨æ·å²å³°å¼
- å¿«éæª¢æ¥ – æ¥çç®åçä¼°å¼å使¸è極端çæ
- 宿´åæ – å·è¡å®æ´çæ·å²å使¸åæè風éªè§£è®
- æ·å²é¡æ¯ – æ·±å ¥åææ·å²æ¥µç«¯é«ä¼°äºä»¶èäºå¾è¡¨ç¾
- æ¹æ³è«å¸ç¿ – äºè§£ä¼°å¼å使¸æ¨¡åçé輯
- èªè¨åæ¸ – æå®ä¼°å¼ææ¨ãéæª»ãåææ¹å¼ç
è«é¸ææç´æ¥æä¾åæåæ¸ã
è·¯ç±å¾ï¼é±è®å°ææä»¶ä¸¦å·è¡ã
<directory_structure>
detect-us-equity-valuation-percentile-extreme/
âââ SKILL.md # æ¬æä»¶ï¼è·¯ç±å¨ï¼
âââ skill.yaml # å端å±ç¤ºå
æ¸æ
âââ manifest.json # æè½å
æ¸æ
âââ workflows/
â âââ execute-analysis.md # 宿´åæå·¥ä½æµ
â âââ visualize-analysis.md # è¦è¦ºååæå·¥ä½æµ
â âââ historical-episodes.md # æ·å²é¡æ¯åæå·¥ä½æµ
âââ references/
â âââ methodology.md # ä¼°å¼å使¸æ¹æ³è«
â âââ data-sources.md # è³æä¾æºè代碼
â âââ valuation-metrics.md # 估弿æ¨å®ç¾©
â âââ input-schema.md # 宿´è¼¸å
¥åæ¸å®ç¾©
âââ templates/
â âââ output-json.md # JSON è¼¸åºæ¨¡æ¿
â âââ output-markdown.md # Markdown å ±åæ¨¡æ¿
âââ scripts/
â âââ valuation_percentile.py # 主åæè
³æ¬
â âââ visualize_valuation.py # è¦è¦ºåè
³æ¬ï¼æ·å²èµ°å¢åï¼
â âââ fetch_valuation_data.py # è³ææåå·¥å
·
âââ examples/
âââ sample_output.json # ç¯ä¾è¼¸åº
</directory_structure>
<reference_index>
æ¹æ³è«: references/methodology.md
- å使¸æ¨æºååç
- 夿æ¨åæé輯
- æ¥µç«¯åµæ¸¬èæ·å²é¡æ¯
è³æä¾æº: references/data-sources.md
- Shiller CAPE è³æé
- FRED ç³»å代碼
- å ¬éæ¿ä»£è³æèªªæ
估弿æ¨: references/valuation-metrics.md
- PEãForward PEãCAPE å®ç¾©
- PBãPSãEV/EBITDA å®ç¾©
- Q Ratioãå¸å¼/GDP å®ç¾©
è¼¸å ¥åæ¸: references/input-schema.md
- 宿´åæ¸å®ç¾©
- é è¨å¼è建è°ç¯å
</reference_index>
<workflows_index>
| Workflow | Purpose | ä½¿ç¨ææ© |
|---|---|---|
| execute-analysis.md | 宿´ä¼°å¼åæ | éè¦å®æ´å ±åæ |
| historical-episodes.md | æ·å²äºä»¶æ·±åº¦åæ | çè§£æ·å²é¡æ¯èäºå¾çµ±è¨ |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§å®ç¾© |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| </templates_index> |
<scripts_index>
| Script | Command | Purpose |
|---|---|---|
| visualize_valuation.py | -o output |
è¦è¦ºååæï¼æ¨è¦ï¼ |
| valuation_percentile.py | --quick |
å¿«éæª¢æ¥ç¶åçæ |
| valuation_percentile.py | --as_of_date DATE --output FILE |
宿´åæ |
| fetch_valuation_data.py | --metrics cape,pe |
æåä¼°å¼è³æ |
| </scripts_index> |
<input_schema_summary>
æ ¸å¿åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| as_of_date | string | today | è©ä¼°æ¥æ |
| universe | string | ^GSPC | å¸å ´ä»£ç¢¼ |
| history_start | string | 1900-01-01 | æ·å²èµ·ç®æ¥ |
| metrics | array | [cape, …] | ä¼°å¼ææ¨æ¸ å® |
| aggregation | string | mean | åææ¹æ³ |
éæª»åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| extreme_threshold | number | 95 | 極端é«ä¼°é檻ï¼å使¸ï¼ |
| episode_min_gap_days | int | 3650 | æ·å²äºä»¶å»ééé |
| forward_windows_days | array | [180, 365, 1095] | äºå¾çµ±è¨è¦çª |
宿´åæ¸å®ç¾©è¦ references/input-schema.mdã
</input_schema_summary>
<output_schema_summary>
{
"skill": "detect-us-equity-valuation-percentile-extreme",
"as_of_date": "2026-01-21",
"universe": "^GSPC",
"composite_percentile": 97.3,
"extreme_threshold": 95,
"is_extreme": true,
"metric_percentiles": {
"cape": 98.2,
"mktcap_to_gdp": 96.5,
"trailing_pe": 94.1
},
"historical_episodes": [
{"date": "1929-09-01", "composite_percentile": 97.8},
{"date": "1999-12-01", "composite_percentile": 98.5}
],
"forward_stats": {
"365d_forward_return": {"median": -8.2, "p25": -22.1, "p10": -38.5},
"1095d_max_drawdown": {"median": -28.4, "p75": -42.1}
},
"data_quality_notes": [
"CAPE è³æå¯åæº¯è³ 1871 å¹´",
"å¸å¼/GDP è³æå¯åæº¯è³ 1950 年代",
"åæå使¸ä½¿ç¨åææ¨èªèº«æ·å²åå¸"
]
}
宿´è¼¸åºçµæ§è¦ templates/output-json.mdã
</output_schema_summary>
<success_criteria> å·è¡æåææç¢åºï¼
- ç¶åç¶åä¼°å¼å使¸ï¼0-100ï¼
- åææ¨åå¥å使¸
- 極端é«ä¼°å¤å®ï¼æ¯/å¦ï¼
- æ·å²é¡æ¯äºä»¶æ¸ å®ï¼æ¥æãå使¸ï¼
- äºå¾çµ±è¨ï¼å ±é ¬ãåæ¤ãæ³¢åï¼
- è³æå質說æï¼åææ¨å¯å¾æéï¼
- 風éªè§£è®æ¡æ¶ï¼å¯é¸ï¼è¼¸åºè³ Markdownï¼
è¦è¦ºå輸åºï¼ä½¿ç¨ visualize_valuation.pyï¼ï¼
- æ·å²èµ°å¢åï¼
us_valuation_percentile_YYYY-MM-DD.pngï¼- 夿æ¨åæå使¸æéåºå
- æ·å²å³°å¼æ¨è¨ï¼1929ã1965ã1999ã2021ï¼
- S&P 500 ææ¸çå ï¼å°æ¸å»åº¦ï¼
- ç¶åä½ç½®æ¨è¨»
- ææ¨åè§£åï¼
us_valuation_breakdown_YYYY-MM-DD.pngï¼- åææ¨å使¸æ©«åæ¢å½¢å
- æ¥µç«¯éæª»åèç·
- JSON çµææªï¼
us_valuation_analysis_YYYY-MM-DD.jsonï¼ </success_criteria>