lithium-supply-demand-gap-radar
npx skills add https://github.com/fatfingererr/macro-skills --skill lithium-supply-demand-gap-radar
Agent 安装分布
Skill 文档
<essential_principles> é°ç¢æ¥éä¾éé·é æ ¸å¿åå
é°ç¢æ¥éå¿ é å層åæï¼ä¸å¯æ··çºä¸è«ï¼
Mining â Processing â Battery
(礦端) (åå¸å) (çµç«¯éæ±)
| å±¤ç´ | ä»£è¡¨æ¸æ | å ¸åå»¶é² |
|---|---|---|
| Upstream (礦端) | é°ç¤¦ç¢éãåºå£é | 年度/å£åº¦ |
| Midstream (åå¸å) | ç¢³é ¸é°/æ°«æ°§åé°å¹æ ¼ | é±åº¦/æ¥åº¦ |
| Downstream (黿± /EV) | EV é·éã黿± è£æ©é(GWh) | æåº¦ |
å¼·å¶è¦åï¼
- ä¾çµ¦åæéæå®å±¤ç´ï¼ç¤¦ç«¯ vs ç²¾ç 端ï¼
- éæ± proxy éæç¢ºè½æåè¨ï¼kWh â kg Liï¼
- 广 ¼åæéååç¢³é ¸é° vs æ°«æ°§åé°
æ ¹æ data_level 忏èªåé¸ææ¸ææºï¼
| data_level | 广 ¼æ¸æ | ä¾éæ¸æ | å¯é 度 |
|---|---|---|---|
free_nolimit |
CME æè²¨/Proxy ææ¸ | USGS/IEA/澳洲æ¿åº | ä¸ |
free_limit |
SMM/Fastmarkets é é¢ | + å ¬å¸è²¡å ± | ä¸é« |
paid_low |
SMM 宿´åºå | + Benchmark åºæ¬ | é« |
paid_high |
Fastmarkets API | + S&P/BNEF/WoodMac | æé« |
å¼·å¶è¦åï¼
- 广 ¼æ¸æä¸è¶³æï¼ä½¿ç¨ CME åç´æç¸éè¡ç±åä½çº proxy
- éå¨è¼¸åºä¸æ¨è¨»å¯¦é使ç¨çæ¸æçç´
黿± éæ±å°é°éæ±çè½æå¿ é æç¢ºåè¨ï¼
| åè¨å ´æ¯ | kg Li / kWh | å註 |
|---|---|---|
| ä¿å®ä¼°è¨ | 0.12 | å« LFP 使¯ä¸ååè¨ |
| 䏿§ä¼°è¨ | 0.15 | æ··å NMC/LFP |
| ç©æ¥µä¼°è¨ | 0.18 | é«é³ NMC ä¸»å° |
li_demand_kt = battery_gwh * kg_per_kwh * 1000 # å®ä½: kt LCE
å¼·å¶è¦åï¼
- 鿱估è¨å¿ é 輸åºä¸åæ å¢ï¼ä¿å®/䏿§/ç©æ¥µï¼
- 輸åºéå
å«
kg_per_kwh_assumptionæ¬ä½
é°å¹é±æåçºååéæ®µï¼
| Regime | ç¹å¾µ | 交æå«ç¾© |
|---|---|---|
downtrend |
12-26 é±åè½ < 0, æç < 0 | 空é 主å°ï¼é¿å åå¤ |
bottoming |
åè½æ¶æï¼æ³¢åä¸éï¼åå¼åæ¸ | è§æï¼çå¾ ç¢ºèª |
uptrend |
åè½ > 0, æç > 0 | åå¤è¦çªéå |
overheat |
åè½æ¥µç«¯æ£å¼ï¼æ³¢åæ¾å¤§ | ç²å©äºçµé¢¨éª |
ææ¨çµåï¼
- 12 é± / 26 é±åè½ï¼ROCï¼
- è¶¨å¢æçï¼ç·æ§åæ¸ï¼
- æ³¢åçï¼ATR / æ¨æºå·®ï¼
- åå¼åæ¸å¼·åº¦ï¼è· MA åé¢åº¦ï¼
ETF å°é°å¹çææåº¦åæè¡çµæ§å½±é¿ï¼
| æè¡é¡å | å°é°å¹ Beta | æ³¢åç¹æ§ |
|---|---|---|
| Upstream (礦æ¥) | 1.5 – 2.5 | 髿§æ¡¿ã髿³¢å |
| Midstream (ç²¾ç ) | 0.8 – 1.2 | è·é¨ä½æå å·¥è²»ç·©è¡ |
| Downstream (黿± ) | 0.3 – 0.8 | åç«¶ç/æè¡è·¯ç·å½±é¿ |
è¨ç®å ¬å¼ï¼
ETF_beta_li = Σ(weight_i * beta_i_to_lithium)
å¼·å¶è¦åï¼
- éè¨ç® rolling betaï¼å»ºè° 52 鱿»¾åï¼
- å³å°æ·è£å¤æ·ï¼beta < 0.3 ä¸æçº > 8 é±
</essential_principles>
- Full Analysis – 宿´ä¾éÃ广 ¼Ãå³å°æ´ååæï¼çæå®æ´å ±åï¼
- Balance Nowcast – å è¨ç®ä¾éå¹³è¡¡å³æä¼°è¨ï¼ç¼ºå£æ´å¤§/縮å°ï¼
- Price Regime – å åæå¹æ ¼åæ è鱿ä½ç½®
- ETF Exposure – å åæ ETF æè¡çµæ§èé°å¹ææåº¦
- Ingest Data – å¾åæ¸ææºæ·åä¸¦æ¨æºåæ¸æ
çå¾ åæå¾åç¹¼çºã
è®å工使µç¨å¾ï¼è«å®å ¨éµå¾ªå ¶æ¥é©ã
<reference_index>
åèæä»¶ (references/)
| æä»¶ | å §å®¹ |
|---|---|
| data-sources.md | æææ¸æä¾æºè©³ç´°èªªæè URL |
| unit-conversion.md | å®ä½è½æè¦åï¼LCE/Li/GWhï¼ |
| price-methodology.md | 广 ¼æ¸ææ¹æ³å¸ï¼Fastmarkets/SMMï¼ |
| etf-holdings-structure.md | LIT æè¡çµæ§èç¢æ¥éåæ®µ |
| supply-chain-mapping.md | é°ä¾æé宿´æ å°ï¼ç¤¦âåå¸åâ黿± ï¼ |
| failure-modes.md | å¤±ææ¨¡å¼èç·©è§£çç¥ |
| </reference_index> |
<workflows_index>
| Workflow | Purpose |
|---|---|
| full-analysis.md | 宿´ä¾éÃ广 ¼Ãå³å°æ´ååæ |
| balance-nowcast.md | ä¾éå¹³è¡¡å³æä¼°è¨ |
| price-regime.md | 广 ¼åæ èé±æåæ |
| etf-exposure.md | ETF æè¡æ´é²èå³å°åæ |
| ingest.md | æ¸ææ·åèæ¨æºå |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§æ¨¡æ¿ |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| config.yaml | åæåæ¸é ç½®æ¨¡æ¿ |
| data-schema.yaml | æ¸æ Schema å®ç¾© |
| </templates_index> |
<scripts_index>
| Script | Purpose |
|---|---|
| lithium_pipeline.py | æ ¸å¿æ¸æç®¡ç· |
| ingest_sources.py | æ¸æä¾æºæ·å |
| compute_balance.py | ä¾é平衡è¨ç® |
| classify_regime.py | 广 ¼åæ åé¡ |
| compute_etf_beta.py | ETF å³å°ææåº¦è¨ç® |
| visualize_analysis.py | åæçµæç¶åè¦è¦ºå |
| inflection_point_chart.py | æé»åæå°ç¨è¦è¦ºå â |
| </scripts_index> |
<quick_start> CLI å¿«ééå§ï¼
# 宿´åæ LIT ETFï¼é è¨ 10 å¹´åçãé±åº¦é »çï¼
python scripts/lithium_pipeline.py analyze --ticker=LIT --lookback=10 --freq=weekly
# å
è¨ç®ä¾é平衡 Nowcast
python scripts/lithium_pipeline.py balance --asof=2026-01-16
# åæå¹æ ¼åæ
ï¼ç¢³é
¸é° + æ°«æ°§åé°ï¼
python scripts/lithium_pipeline.py regime --chem=both
# è¨ç® ETF å°é°å¹çå³å°ææåº¦
python scripts/lithium_pipeline.py etf-beta --ticker=LIT --window=52
# ⨠çæè¦è¦ºåå表ï¼å®æ´å表æ¿ï¼
python scripts/visualize_analysis.py
# 輸åºï¼output/lithium_analysis_YYYY-MM-DD.png
è¦è¦ºå輸åºï¼
- ð 6å1 å°æ¥å表æ¿ï¼18″ à 12″ï¼300 DPIï¼
- ð èªåä¿åè³
output/ç®é - ð æªåå å«ç¶å¤©æ¥æ
- ð¨ 宿´ä¸ææ¯æ
Library å¿«ééå§ï¼
from lithium_pipeline import LithiumSupplyDemandRadar
radar = LithiumSupplyDemandRadar(
etf_ticker="LIT",
lookback_years=10,
price_freq="weekly",
chem_focus="both",
data_level="free_nolimit"
)
# 宿´åæ
result = radar.full_analysis()
print(f"Balance Index: {result['balance_index']:.2f}")
print(f"Price Regime: {result['price_regime']}")
print(f"ETF Beta to Li: {result['etf_beta_li']:.2f}")
print(f"Thesis: {result['thesis']}")
</quick_start>
<success_criteria> Skill æåå·è¡æï¼
- æ£ç¢ºè奿¸æçç´ä¸¦ä½¿ç¨å°æä¾æº
- ä¾éå¹³è¡¡ææ¸è¨ç®æ£ç¢ºï¼å«ä¸æ å¢ï¼
- 广 ¼åæ åé¡æç¢ºï¼downtrend/bottoming/uptrend/overheatï¼
- ETF å³å°ææåº¦è¨ç®æ£ç¢ºï¼rolling betaï¼
- 輸åºå å«å®æ´çå¤±ææ¢ä»¶ï¼invalidationï¼
- æ¸æä¾æºå¯è¿½æº¯ï¼source_id, data_levelï¼
- å®ä½è½æåè¨æç¢ºæ¨è¨»
- è¦è¦ºåå表已çæä¸ç¬¦åè¦æ ¼ï¼300 DPI, PNG, æªå嫿¥æï¼
- å ±åèåè¡¨å¨ output/ ç®éä¸ä¸èµ·è¼¸åº </success_criteria>
<input_schema> è¼¸å ¥åæ¸å®ç¾©
# å¿
è¦åæ¸
etf_ticker: string # ç®æ¨ ETFï¼é è¨ LITï¼
lookback_years: int # åçå¹´éï¼å»ºè° 10-15ï¼
price_freq: string # weekly | dailyï¼å»ºè° weeklyï¼
# ç¯å忏
region_focus: # 便/éæ±éé»åï¼é¸å¡«ï¼
- China
- Australia
- Chile
- Argentina
- US
- EU
chem_focus: string # carbonate | hydroxide | bothï¼é è¨ bothï¼
# æ¸æçç´
data_level: string # free_nolimit | free_limit | paid_low | paid_high
# æ¸ææºéé
sources:
usgs: boolean
iea_ev_outlook: boolean
australia_req: boolean
abs_exports: boolean
fastmarkets: boolean
smm: boolean
etf_holdings: boolean
# è¼¸åºæ ¼å¼
output_format: string # markdown | jsonï¼é è¨ markdownï¼
</input_schema>
<data_pipeline_architecture> æ¸ææµæ°´ç·æ¶æ§
[Data Sources]
|
v
+--------------------+
| ingest_sources | --> USGS, IEA, Australia REQ/ABS
+--------------------+ Fastmarkets/SMM (æ¹æ³å¸/广 ¼)
| Global X LIT factsheet
v
+--------------------+
| normalize | --> çµ±ä¸ schema + å®ä½æ¨è¨»
+--------------------+
|
+-------------------+-------------------+
| | |
v v v
+-----------+ +-----------+ +-----------+
| supply_ | | price_ | | etf_ |
| demand | | series | | holdings |
+-----------+ +-----------+ +-----------+
| | |
v v v
+-----------+ +-----------+ +-----------+
| balance_ | | classify_ | | compute_ |
| nowcast | | regime | | etf_beta |
+-----------+ +-----------+ +-----------+
| | |
+-------------------+-------------------+
|
v
+--------------------+
| generate_insight | --> Thesis + Targets + Invalidation
+--------------------+
|
v
+--------------------+
| format_output | --> JSON + Markdown
+--------------------+
æ¨æºåæ¬ä½ Schemaï¼
| æ¬ä½ | é¡å | 說æ |
|---|---|---|
| date | date | æ¸ææ¥æ |
| metric_type | string | supply/demand/price/etf |
| metric_name | string | å ·é«ææ¨å稱 |
| value | float | æ¸å¼ |
| unit | string | kt_LCE/USD_per_kg/GWh/pct |
| region | string | åå®¶/åå |
| source_id | string | USGS/IEA/SMM/Fastmarkets/etc |
| data_level | string | æ¸æçç´ |
| confidence | float | 便ºå質è©å (0-1) |
| </data_pipeline_architecture> |