analyze-investment-clock-rotation
npx skills add https://github.com/fatfingererr/macro-skills --skill analyze-investment-clock-rotation
Agent 安装分布
Skill 文档
<essential_principles>
æè³æéå°å¸å ´çæ ç°¡åçºåå象éï¼
éèç°å¢æ¯æï¼å¯¬é¬ï¼
â
Q3 â Q1
ä¿®å¾©éæ¸¡ â çæ³è±¡é
âââââââââââââ¼âââââââââââââ ç²å©æé·
Q4 â Q2
æå·®è±¡é â 好壿··å
â
éèç°å¢ä¸æ¯æï¼ç·ç¸®ï¼
| 象é | ç²å© | éèç°å¢ | å«ç¾© | é ç½®å»ºè° |
|---|---|---|---|---|
| Q1 çæ³è±¡é | â | æ¯æâ | 風éªè³ç¢åå | åå¤ãé 風é ç½® |
| Q2 好壿··å | â | 䏿¯æâ | ä¼°å¼å£åãæ³¢å | æ³¢å管çã估弿æ |
| Q3 ä¿®å¾©éæ¸¡ | â | æ¯æâ | 坬鬿å¸ãåºæ¬é¢æªå | å¿èª¤å¤çºå ¨é¢çå¸ |
| Q4 æå·®è±¡é | â | 䏿¯æâ | 風éªè³ç¢æåå· | é¢¨éªæ§ç®¡ãéæ§æ¡¿ |
ä¸å便ºçæè³æéåå¯è½æä¸åç軸åå®ç¾©ãæ¬ skill é è¨ï¼
-
X 軸ï¼éèç°å¢ï¼Financial Conditionsï¼
- å·¦å´ = 寬é¬ï¼æ¯ææ§é«ï¼
- å³å´ = ç·ç¸®ï¼æ¯ææ§ä½ï¼
-
Y 軸ï¼ç²å©æé·ï¼Earnings Growthï¼
- 䏿¹ = æ£æé·
- 䏿¹ = è² æé·
è¥ä½ çå表å®ç¾©ä¸åï¼è«å¨è¼¸å
¥åæ¸ä¸èª¿æ´ axis_mapping å clock_conventionã
éé atan2(y, x) è¨ç®è§åº¦ï¼åè½ææ 12 å°æå¶ï¼
- 12 é»ï¼æ£ä¸æ¹ï¼ç²å©æé«ãéèç°å¢ä¸æ§ï¼
- 3 é»ï¼å³å´ï¼éèç°å¢æç·ï¼
- 6 é»ï¼æ£ä¸æ¹ï¼ç²å©æä½ï¼
- 9 é»ï¼å·¦å´ï¼éèç°å¢æå¯¬é¬ï¼
æè½æ¹åï¼
- é æéï¼å ¸åæ¯æ°£å¾ªç°è·¯å¾ï¼Q1 â Q2 â Q4 â Q3 â Q1ï¼
- éæéï¼æ¿çå¹²é æéå ¸åäºä»¶
æ¬ skill 使ç¨ç¡é API key çè³æä¾æºï¼
- FRED CSV:
https://fred.stlouisfed.org/graph/fredgraph.csv?id={SERIES_ID}- éèç°å¢ï¼NFCIï¼Chicago Fedï¼ãSTLFSI4ï¼St. Louis Fedï¼
- ç²å©ä»£çï¼CPï¼ä¼æ¥å©æ½¤ï¼ãGDP ç¸éææ¨
è
³æ¬ä½æ¼ scripts/ ç®éï¼å¯ç´æ¥å·è¡ã
</essential_principles>
- 建æ§åº§æ¨ï¼å¾ FRED æ¸æè¨ç®ç²å©æé·èéèç°å¢ Z-score
- å¤å®è±¡éï¼èå¥ç¶åè½å¨åªå象é
- è¨ç®é»ä½ï¼è½æçº 12 å°æå¶æéé»ä½
- åææè½ï¼å¤æ·æè½æ¹åèå¹ åº¦
- å¾ªç°æ¯è¼ï¼èåä¸è¼ªå¾ªç°æ¯è¼ï¼å¯é¸ï¼
輸åºï¼ç¶å象éãæéé»ä½ãæè½æè¦ãé 置建è°ã
<quick_start>
æå¿«çæ¹å¼ï¼å·è¡é è¨åæ
cd skills/analyze-investment-clock-rotation
pip install pandas numpy requests # 馿¬¡ä½¿ç¨
python scripts/investment_clock.py --quick
輸åºç¯ä¾ï¼
{
"as_of": "2026-01-15",
"current_position": {
"clock_hour": 10,
"quadrant": "Q1_ideal",
"earnings_growth": 0.052,
"financial_conditions_zscore": -0.35
},
"interpretation": "çæ³è±¡éï¼é¢¨éªè³ç¢ç¸å°é 風"
}
宿´åæï¼
python scripts/investment_clock.py \
--start 2022-01-01 \
--end 2026-01-19 \
--compare-cycle 2020-01-01 2022-12-31 \
--output result.json
</quick_start>
- å¿«éæª¢æ¥ – æ¥çç®åçæè³æéä½ç½®è象é
- 宿´åæ – åææéåéå §çæè½è·¯å¾èæ¹å
- å¾ªç°æ¯è¼ – èåä¸è¼ªå¾ªç°æ¯è¼æè½ç¹å¾µ
- è¦è¦ºåå表 – çææè³æéè¦è¦ºåå表
- æ¹æ³è«å¸ç¿ – äºè§£æè³æé模åçé輯
è«é¸ææç´æ¥æä¾åæåæ¸ã
è·¯ç±å¾ï¼é±è®å°ææä»¶ä¸¦å·è¡ã
<directory_structure>
analyze-investment-clock-rotation/
âââ SKILL.md # æ¬æä»¶ï¼è·¯ç±å¨ï¼
âââ skill.yaml # å端å±ç¤ºå
æ¸æ
âââ manifest.json # æè½å
æ¸æ
âââ workflows/
â âââ analyze.md # 宿´åæå·¥ä½æµ
â âââ compare-cycle.md # å¾ªç°æ¯è¼å·¥ä½æµ
â âââ visualize.md # è¦è¦ºå工使µ
âââ references/
â âââ methodology.md # æè³æéæ¹æ³è«
â âââ data-sources.md # FRED ç³»å代碼èè³æä¾æº
â âââ input-schema.md # 宿´è¼¸å
¥åæ¸å®ç¾©
âââ templates/
â âââ output-json.md # JSON è¼¸åºæ¨¡æ¿
â âââ output-markdown.md # Markdown å ±åæ¨¡æ¿
âââ scripts/
âââ investment_clock.py # 主åæè
³æ¬
âââ fetch_data.py # æ¸ææåå·¥å
·
âââ visualize.py # è¦è¦ºå繪åå·¥å
·
</directory_structure>
<reference_index>
æ¹æ³è«: references/methodology.md
- æè³æéæ¦å¿µèæ·å²
- å象éå®ç¾©èé ç½®å«ç¾©
- æè½æ¹åè§£è®
è³æä¾æº: references/data-sources.md
- FRED ç³»å代碼ï¼éèç°å¢/ç²å©ä»£çï¼
- æ¸æé »çèå°é½æ¹æ³
è¼¸å ¥åæ¸: references/input-schema.md
- 宿´åæ¸å®ç¾©
- é è¨å¼è建è°ç¯å
</reference_index>
<workflows_index>
| Workflow | Purpose | ä½¿ç¨ææ© |
|---|---|---|
| analyze.md | 宿´åæ | éè¦è©³ç´°è±¡éèæè½åæ |
| compare-cycle.md | å¾ªç°æ¯è¼ | æ¯è¼ä¸å循ç°çç¹å¾µ |
| visualize.md | çæè¦è¦ºåå表 | éè¦å表å±ç¤º |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§å®ç¾© |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| </templates_index> |
<scripts_index>
| Script | Command | Purpose |
|---|---|---|
| investment_clock.py | --quick |
å¿«éæª¢æ¥ç¶åä½ç½® |
| investment_clock.py | --start DATE --end DATE |
宿´åæ |
| investment_clock.py | --compare-cycle START END |
å¾ªç°æ¯è¼ |
| fetch_data.py | --series NFCI,CP |
æå FRED è³æ |
| visualize.py | -i result.json -o chart.png |
çæè¦è¦ºåå表 |
| </scripts_index> |
<input_schema_summary>
æ ¸å¿åæ¸
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| market | string | US_EQUITY | åææ¨ç |
| start_date | string | 2022-01-01 | åæèµ·é» |
| end_date | string | today | åæçµé» |
| freq | string | weekly | é »çï¼weekly/monthlyï¼ |
è³æä¾æºåæ¸
| 忏 | é¡å | 說æ |
|---|---|---|
| earnings_series.source | string | fred / api / csv / manual |
| earnings_series.series_id | string | FRED åºå IDï¼å¦ CPï¼ |
| earnings_series.growth_method | string | yoy / qoq_annualized |
| financial_conditions_series.source | string | fred / api / csv |
| financial_conditions_series.series_id | string | NFCI / STLFSI4 |
| financial_conditions_series.transform | string | level / zscore / inverse |
軸å忏
| 忏 | é¡å | é è¨å¼ | 說æ |
|---|---|---|---|
| axis_mapping.x | string | financial_conditions | X 軸å®ç¾© |
| axis_mapping.y | string | earnings_growth | Y 軸å®ç¾© |
| clock_convention.financial_loose_is_left | bool | true | 寬é¬å¨å·¦å´ |
宿´åæ¸å®ç¾©è¦ references/input-schema.mdã
</input_schema_summary>
<output_schema_summary>
{
"skill": "analyze-investment-clock-rotation",
"as_of": "2026-01-19",
"market": "US_EQUITY",
"current_state": {
"clock_hour": 10,
"quadrant": "Q1_ideal",
"quadrant_name": "çæ³è±¡é",
"x_value": -0.35,
"y_value": 0.052
},
"rotation_summary": {
"from_hour": 2,
"to_hour": 10,
"direction": "clockwise",
"magnitude_degrees": 240
},
"interpretation": "ç²å©æé·çºæ£ï¼éèç°å¢åæ¯æï¼å±¬æ¼é¢¨éªè³ç¢ç¸å°é 風ç象é"
}
宿´è¼¸åºçµæ§è¦ templates/output-json.mdã
</output_schema_summary>
<success_criteria> å·è¡æåææç¢åºï¼
- ç¶å象éï¼Q1/Q2/Q3/Q4ï¼
- æéé»ä½ï¼1-12 é»ï¼
- ç²å©æé·å¼èéèç°å¢ Z-score
- æè½æ¹åï¼é æé/éæéï¼
- æè½å¹ 度ï¼åº¦æ¸ï¼
- é 置建è°ï¼ä¾è±¡éï¼
- å¾ªç°æ¯è¼æè¦ï¼è¥æåç¨ï¼
- è¦è¦ºåå表ï¼å¯é¸ï¼è¼¸åºè³
output/ç®éï¼ </success_criteria>