superkit-mcp-server 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/agents/code-archaeologist.md +106 -0
- package/agents/devops-engineer.md +242 -0
- package/agents/orchestrator.md +420 -416
- package/agents/penetration-tester.md +188 -0
- package/agents/performance-optimizer.md +187 -0
- package/agents/qa-automation-engineer.md +103 -0
- package/agents/quant-developer.md +4 -0
- package/package.json +1 -1
- package/skills/meta/code-review/SKILL.md +7 -0
- package/skills/tech/alpha-vantage/SKILL.md +142 -0
- package/skills/tech/alpha-vantage/references/commodities.md +153 -0
- package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -0
- package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -0
- package/skills/tech/alpha-vantage/references/fundamentals.md +223 -0
- package/skills/tech/alpha-vantage/references/intelligence.md +138 -0
- package/skills/tech/alpha-vantage/references/options.md +93 -0
- package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -0
- package/skills/tech/alpha-vantage/references/time-series.md +157 -0
- package/skills/tech/financial-modeling/SKILL.md +18 -0
- package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -0
- package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -0
- package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -0
- package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -0
- package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1211 -0
- package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -0
- package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -0
- package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -0
- package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -0
- package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -0
- package/skills/tech/intelligent-routing/SKILL.md +5 -5
- package/workflows/kit-setup.md +8 -8
- package/workflows/map-codebase.md +78 -0
- package/workflows/plan-compound.md +6 -0
- package/workflows/plan_review.md +19 -3
- package/workflows/review-compound.md +36 -17
- package/workflows/specs.md +1 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Alpha Intelligence™ APIs
|
|
2
|
+
|
|
3
|
+
## NEWS_SENTIMENT — Market News & Sentiment
|
|
4
|
+
|
|
5
|
+
Returns live/historical news articles with sentiment scores for tickers, sectors, and topics.
|
|
6
|
+
|
|
7
|
+
**Optional:**
|
|
8
|
+
- `tickers` — comma-separated ticker symbols (e.g., `IBM,AAPL`)
|
|
9
|
+
- `topics` — comma-separated topics: `blockchain`, `earnings`, `ipo`, `mergers_and_acquisitions`, `financial_markets`, `economy_fiscal`, `economy_monetary`, `economy_macro`, `energy_transportation`, `finance`, `life_sciences`, `manufacturing`, `real_estate`, `retail_wholesale`, `technology`
|
|
10
|
+
- `time_from` / `time_to` — format `YYYYMMDDTHHMM`
|
|
11
|
+
- `sort` — `LATEST`, `EARLIEST`, or `RELEVANCE`
|
|
12
|
+
- `limit` — max articles returned (default 50, max 1000)
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
# Get news for specific ticker
|
|
16
|
+
data = av_get("NEWS_SENTIMENT", tickers="AAPL", sort="LATEST", limit=10)
|
|
17
|
+
articles = data["feed"]
|
|
18
|
+
|
|
19
|
+
for a in articles[:3]:
|
|
20
|
+
print(a["title"])
|
|
21
|
+
print(a["url"])
|
|
22
|
+
print(a["time_published"])
|
|
23
|
+
print(a["overall_sentiment_label"]) # "Bullish", "Bearish", "Neutral", etc.
|
|
24
|
+
print(a["overall_sentiment_score"]) # -1.0 to 1.0
|
|
25
|
+
for ts in a["ticker_sentiment"]:
|
|
26
|
+
if ts["ticker"] == "AAPL":
|
|
27
|
+
print(f" AAPL sentiment: {ts['ticker_sentiment_label']} ({ts['ticker_sentiment_score']})")
|
|
28
|
+
print(f" Relevance: {ts['relevance_score']}")
|
|
29
|
+
|
|
30
|
+
# Article fields: "title", "url", "time_published", "authors", "summary",
|
|
31
|
+
# "source", "source_domain", "topics", "overall_sentiment_score",
|
|
32
|
+
# "overall_sentiment_label", "ticker_sentiment"
|
|
33
|
+
# Sentiment labels: "Bearish", "Somewhat-Bearish", "Neutral", "Somewhat-Bullish", "Bullish"
|
|
34
|
+
|
|
35
|
+
# Get news by topic
|
|
36
|
+
data = av_get("NEWS_SENTIMENT", topics="earnings,technology", time_from="20240101T0000", limit=50)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## EARNINGS_CALL_TRANSCRIPT — Earnings Call Transcript
|
|
40
|
+
|
|
41
|
+
Returns full earnings call transcripts (requires premium).
|
|
42
|
+
|
|
43
|
+
**Required:** `symbol`, `quarter` (format `YYYYQN`, e.g., `2023Q4`)
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
data = av_get("EARNINGS_CALL_TRANSCRIPT", symbol="AAPL", quarter="2023Q4")
|
|
47
|
+
transcript = data["transcript"]
|
|
48
|
+
|
|
49
|
+
for segment in transcript[:5]:
|
|
50
|
+
print(f"[{segment['speaker']}]: {segment['content'][:200]}")
|
|
51
|
+
# Fields: "symbol", "quarter", "transcript" (list of {speaker, title, content})
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## TOP_GAINERS_LOSERS — Top Market Movers
|
|
55
|
+
|
|
56
|
+
Returns top 20 gainers, losers, and most actively traded US stocks for the current/most recent trading day.
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
data = av_get("TOP_GAINERS_LOSERS")
|
|
60
|
+
|
|
61
|
+
for g in data["top_gainers"][:5]:
|
|
62
|
+
print(g["ticker"], g["price"], g["change_amount"], g["change_percentage"], g["volume"])
|
|
63
|
+
|
|
64
|
+
for l in data["top_losers"][:5]:
|
|
65
|
+
print(l["ticker"], l["price"], l["change_amount"], l["change_percentage"])
|
|
66
|
+
|
|
67
|
+
# Fields: "ticker", "price", "change_amount", "change_percentage", "volume"
|
|
68
|
+
# Also: data["most_actively_traded"]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## INSIDER_TRANSACTIONS — Insider Trading Data
|
|
72
|
+
|
|
73
|
+
Returns insider transactions (Form 4) for a given company (requires premium).
|
|
74
|
+
|
|
75
|
+
**Required:** `symbol`
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
data = av_get("INSIDER_TRANSACTIONS", symbol="AAPL")
|
|
79
|
+
transactions = data["data"]
|
|
80
|
+
|
|
81
|
+
for t in transactions[:5]:
|
|
82
|
+
print(
|
|
83
|
+
t["transaction_date"],
|
|
84
|
+
t["executive"], # insider name
|
|
85
|
+
t["executive_title"], # e.g., "CEO"
|
|
86
|
+
t["action"], # "Buy" or "Sell"
|
|
87
|
+
t["shares"],
|
|
88
|
+
t["share_price"],
|
|
89
|
+
t["total_value"]
|
|
90
|
+
)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## ANALYTICS_FIXED_WINDOW — Portfolio Analytics (Fixed Window)
|
|
94
|
+
|
|
95
|
+
Returns mean return, variance, covariance, correlation, and alpha/beta for a set of tickers over a fixed historical window.
|
|
96
|
+
|
|
97
|
+
**Required:**
|
|
98
|
+
- `SYMBOLS` — comma-separated tickers (e.g., `AAPL,MSFT,IBM`)
|
|
99
|
+
- `RANGE` — date range format: `2year`, `6month`, `30day`, or `YYYY-MM-DD&YYYY-MM-DD`
|
|
100
|
+
- `INTERVAL` — `DAILY`, `WEEKLY`, or `MONTHLY`
|
|
101
|
+
- `OHLC` — `close`, `open`, `high`, or `low`
|
|
102
|
+
- `CALCULATIONS` — comma-separated: `MEAN`, `STDDEV`, `MAX_DRAWDOWN`, `CORRELATION`, `COVARIANCE`, `VARIANCE`, `CUMULATIVE_RETURN`, `MIN`, `MAX`, `MEDIAN`, `HISTOGRAM`
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
data = av_get(
|
|
106
|
+
"ANALYTICS_FIXED_WINDOW",
|
|
107
|
+
SYMBOLS="AAPL,MSFT,IBM",
|
|
108
|
+
RANGE="1year",
|
|
109
|
+
INTERVAL="DAILY",
|
|
110
|
+
OHLC="close",
|
|
111
|
+
CALCULATIONS="MEAN,STDDEV,CORRELATION,MAX_DRAWDOWN"
|
|
112
|
+
)
|
|
113
|
+
payload = data["payload"]
|
|
114
|
+
print(payload["MEAN"]) # {"AAPL": 0.0012, "MSFT": 0.0009, ...}
|
|
115
|
+
print(payload["STDDEV"])
|
|
116
|
+
print(payload["CORRELATION"]) # correlation matrix
|
|
117
|
+
print(payload["MAX_DRAWDOWN"])
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## ANALYTICS_SLIDING_WINDOW — Portfolio Analytics (Sliding Window)
|
|
121
|
+
|
|
122
|
+
Same as fixed window but with rolling calculations over time.
|
|
123
|
+
|
|
124
|
+
**Required:** Same as fixed window, plus:
|
|
125
|
+
- `WINDOW_SIZE` — number of periods (e.g., `20` for 20-day rolling window)
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
data = av_get(
|
|
129
|
+
"ANALYTICS_SLIDING_WINDOW",
|
|
130
|
+
SYMBOLS="AAPL,MSFT",
|
|
131
|
+
RANGE="1year",
|
|
132
|
+
INTERVAL="DAILY",
|
|
133
|
+
OHLC="close",
|
|
134
|
+
CALCULATIONS="MEAN,STDDEV",
|
|
135
|
+
WINDOW_SIZE=20
|
|
136
|
+
)
|
|
137
|
+
# Returns time series of rolling calculations
|
|
138
|
+
```
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Options Data APIs (Premium)
|
|
2
|
+
|
|
3
|
+
Both options endpoints require a premium Alpha Vantage subscription.
|
|
4
|
+
|
|
5
|
+
## REALTIME_OPTIONS — Real-time Options Chain
|
|
6
|
+
|
|
7
|
+
Returns real-time options contracts for a given symbol.
|
|
8
|
+
|
|
9
|
+
**Required:** `symbol`
|
|
10
|
+
|
|
11
|
+
**Optional:**
|
|
12
|
+
- `contract` — specific contract ID (e.g., `AAPL240119C00150000`) to get a single contract
|
|
13
|
+
- `datatype` — `json` or `csv`
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
data = av_get("REALTIME_OPTIONS", symbol="AAPL")
|
|
17
|
+
options = data["data"]
|
|
18
|
+
|
|
19
|
+
for contract in options[:5]:
|
|
20
|
+
print(
|
|
21
|
+
contract["contractID"], # e.g., "AAPL240119C00150000"
|
|
22
|
+
contract["strike"], # "150.00"
|
|
23
|
+
contract["expiration"], # "2024-01-19"
|
|
24
|
+
contract["type"], # "call" or "put"
|
|
25
|
+
contract["last"], # last price
|
|
26
|
+
contract["bid"],
|
|
27
|
+
contract["ask"],
|
|
28
|
+
contract["volume"],
|
|
29
|
+
contract["open_interest"],
|
|
30
|
+
contract["implied_volatility"],
|
|
31
|
+
contract["delta"],
|
|
32
|
+
contract["gamma"],
|
|
33
|
+
contract["theta"],
|
|
34
|
+
contract["vega"],
|
|
35
|
+
contract["rho"]
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
# Get a specific contract
|
|
39
|
+
data = av_get("REALTIME_OPTIONS", symbol="AAPL", contract="AAPL240119C00150000")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## HISTORICAL_OPTIONS — Historical Options Chain
|
|
43
|
+
|
|
44
|
+
Returns historical end-of-day options data for a specific date.
|
|
45
|
+
|
|
46
|
+
**Required:** `symbol`
|
|
47
|
+
|
|
48
|
+
**Optional:**
|
|
49
|
+
- `date` — format `YYYY-MM-DD` (up to 2 years of history)
|
|
50
|
+
- `datatype` — `json` or `csv`
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
# Get options chain for a specific historical date
|
|
54
|
+
data = av_get("HISTORICAL_OPTIONS", symbol="AAPL", date="2023-12-15")
|
|
55
|
+
options = data["data"]
|
|
56
|
+
|
|
57
|
+
for contract in options[:5]:
|
|
58
|
+
print(
|
|
59
|
+
contract["contractID"],
|
|
60
|
+
contract["strike"],
|
|
61
|
+
contract["expiration"],
|
|
62
|
+
contract["type"], # "call" or "put"
|
|
63
|
+
contract["last"],
|
|
64
|
+
contract["mark"], # mark price
|
|
65
|
+
contract["bid"],
|
|
66
|
+
contract["ask"],
|
|
67
|
+
contract["volume"],
|
|
68
|
+
contract["open_interest"],
|
|
69
|
+
contract["date"], # the date of this snapshot
|
|
70
|
+
contract["implied_volatility"],
|
|
71
|
+
contract["delta"],
|
|
72
|
+
contract["gamma"],
|
|
73
|
+
contract["theta"],
|
|
74
|
+
contract["vega"],
|
|
75
|
+
contract["rho"]
|
|
76
|
+
)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Filter Options by Expiration/Type
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
import pandas as pd
|
|
83
|
+
|
|
84
|
+
data = av_get("HISTORICAL_OPTIONS", symbol="AAPL", date="2023-12-15")
|
|
85
|
+
df = pd.DataFrame(data["data"])
|
|
86
|
+
df["strike"] = pd.to_numeric(df["strike"])
|
|
87
|
+
df["expiration"] = pd.to_datetime(df["expiration"])
|
|
88
|
+
|
|
89
|
+
# Filter calls expiring in January 2024
|
|
90
|
+
calls_jan = df[(df["type"] == "call") & (df["expiration"].dt.month == 1) & (df["expiration"].dt.year == 2024)]
|
|
91
|
+
calls_jan = calls_jan.sort_values("strike")
|
|
92
|
+
print(calls_jan[["contractID", "strike", "bid", "ask", "implied_volatility", "delta"]].head(10))
|
|
93
|
+
```
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# Technical Indicators APIs
|
|
2
|
+
|
|
3
|
+
All technical indicators work with equities, forex pairs, and crypto. Calculated from adjusted time series data.
|
|
4
|
+
|
|
5
|
+
## Common Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Values |
|
|
8
|
+
|-----------|----------|--------|
|
|
9
|
+
| `symbol` | Yes | Ticker (e.g., `IBM`), forex pair (`USDEUR`), or crypto pair (`BTCUSD`) |
|
|
10
|
+
| `interval` | Yes | `1min`, `5min`, `15min`, `30min`, `60min`, `daily`, `weekly`, `monthly` |
|
|
11
|
+
| `time_period` | Most | Number of periods (e.g., `14`, `20`, `50`, `200`) |
|
|
12
|
+
| `series_type` | Most | `close`, `open`, `high`, `low` |
|
|
13
|
+
| `month` | No | `YYYY-MM` for specific historical month |
|
|
14
|
+
| `datatype` | No | `json` or `csv` |
|
|
15
|
+
|
|
16
|
+
## Response Format
|
|
17
|
+
|
|
18
|
+
All indicators return a metadata object and a time series dictionary:
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
data = av_get("SMA", symbol="IBM", interval="daily", time_period=20, series_type="close")
|
|
22
|
+
ts = data["Technical Analysis: SMA"]
|
|
23
|
+
# Key: "2024-01-15" → {"SMA": "185.4200"}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Moving Averages
|
|
27
|
+
|
|
28
|
+
### SMA — Simple Moving Average
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
data = av_get("SMA", symbol="AAPL", interval="daily", time_period=20, series_type="close")
|
|
32
|
+
ts = data["Technical Analysis: SMA"]
|
|
33
|
+
print(sorted(ts.keys())[-1], ts[sorted(ts.keys())[-1]]["SMA"])
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### EMA — Exponential Moving Average
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
data = av_get("EMA", symbol="AAPL", interval="daily", time_period=20, series_type="close")
|
|
40
|
+
ts = data["Technical Analysis: EMA"] # → {"EMA": "..."}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### WMA — Weighted Moving Average
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
data = av_get("WMA", symbol="IBM", interval="daily", time_period=20, series_type="close")
|
|
47
|
+
ts = data["Technical Analysis: WMA"] # → {"WMA": "..."}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### DEMA — Double Exponential Moving Average
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
data = av_get("DEMA", symbol="IBM", interval="daily", time_period=20, series_type="close")
|
|
54
|
+
ts = data["Technical Analysis: DEMA"]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### TEMA — Triple Exponential Moving Average
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
data = av_get("TEMA", symbol="IBM", interval="daily", time_period=20, series_type="close")
|
|
61
|
+
ts = data["Technical Analysis: TEMA"]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### KAMA — Kaufman Adaptive Moving Average
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
data = av_get("KAMA", symbol="IBM", interval="daily", time_period=20, series_type="close")
|
|
68
|
+
ts = data["Technical Analysis: KAMA"]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### T3 — Triple Smooth Exponential Moving Average
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
data = av_get("T3", symbol="IBM", interval="daily", time_period=5, series_type="close")
|
|
75
|
+
ts = data["Technical Analysis: T3"]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### VWAP — Volume Weighted Average Price (Premium, intraday only)
|
|
79
|
+
|
|
80
|
+
**Required:** `symbol`, `interval` (intraday only: `1min`–`60min`)
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
data = av_get("VWAP", symbol="AAPL", interval="5min")
|
|
84
|
+
ts = data["Technical Analysis: VWAP"] # → {"VWAP": "..."}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Momentum Indicators
|
|
90
|
+
|
|
91
|
+
### MACD — Moving Average Convergence/Divergence (Premium)
|
|
92
|
+
|
|
93
|
+
**Optional:** `fastperiod` (default 12), `slowperiod` (default 26), `signalperiod` (default 9), `series_type`
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
data = av_get("MACD", symbol="AAPL", interval="daily", series_type="close",
|
|
97
|
+
fastperiod=12, slowperiod=26, signalperiod=9)
|
|
98
|
+
ts = data["Technical Analysis: MACD"]
|
|
99
|
+
latest_date = sorted(ts.keys())[-1]
|
|
100
|
+
print(ts[latest_date]) # {"MACD": "...", "MACD_Signal": "...", "MACD_Hist": "..."}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### RSI — Relative Strength Index
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
data = av_get("RSI", symbol="AAPL", interval="daily", time_period=14, series_type="close")
|
|
107
|
+
ts = data["Technical Analysis: RSI"] # → {"RSI": "..."}
|
|
108
|
+
# Overbought >70, Oversold <30
|
|
109
|
+
latest_date = sorted(ts.keys())[-1]
|
|
110
|
+
print(f"RSI: {ts[latest_date]['RSI']}")
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### STOCH — Stochastic Oscillator
|
|
114
|
+
|
|
115
|
+
**Optional:** `fastkperiod` (default 5), `slowkperiod` (default 3), `slowdperiod` (default 3), `slowkmatype`, `slowdmatype`
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
data = av_get("STOCH", symbol="IBM", interval="daily")
|
|
119
|
+
ts = data["Technical Analysis: STOCH"] # → {"SlowK": "...", "SlowD": "..."}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### STOCHF — Stochastic Fast
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
data = av_get("STOCHF", symbol="IBM", interval="daily")
|
|
126
|
+
ts = data["Technical Analysis: STOCHF"] # → {"FastK": "...", "FastD": "..."}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### STOCHRSI — Stochastic Relative Strength Index
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
data = av_get("STOCHRSI", symbol="IBM", interval="daily", time_period=14, series_type="close")
|
|
133
|
+
ts = data["Technical Analysis: STOCHRSI"] # → {"FastK": "...", "FastD": "..."}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### WILLR — Williams %R
|
|
137
|
+
|
|
138
|
+
```python
|
|
139
|
+
data = av_get("WILLR", symbol="IBM", interval="daily", time_period=14)
|
|
140
|
+
ts = data["Technical Analysis: WILLR"] # → {"WILLR": "..."}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### MOM — Momentum
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
data = av_get("MOM", symbol="IBM", interval="daily", time_period=10, series_type="close")
|
|
147
|
+
ts = data["Technical Analysis: MOM"]
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### ROC — Rate of Change
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
data = av_get("ROC", symbol="IBM", interval="daily", time_period=10, series_type="close")
|
|
154
|
+
ts = data["Technical Analysis: ROC"]
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### CCI — Commodity Channel Index
|
|
158
|
+
|
|
159
|
+
**Required:** `symbol`, `interval`, `time_period` (no `series_type`)
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
data = av_get("CCI", symbol="IBM", interval="daily", time_period=20)
|
|
163
|
+
ts = data["Technical Analysis: CCI"]
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### CMO — Chande Momentum Oscillator
|
|
167
|
+
|
|
168
|
+
```python
|
|
169
|
+
data = av_get("CMO", symbol="IBM", interval="daily", time_period=14, series_type="close")
|
|
170
|
+
ts = data["Technical Analysis: CMO"]
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### PPO — Percentage Price Oscillator
|
|
174
|
+
|
|
175
|
+
**Optional:** `fastperiod`, `slowperiod`, `matype`
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
data = av_get("PPO", symbol="IBM", interval="daily", series_type="close")
|
|
179
|
+
ts = data["Technical Analysis: PPO"]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### BOP — Balance of Power
|
|
183
|
+
|
|
184
|
+
**Required:** `symbol`, `interval` (no `time_period` or `series_type`)
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
data = av_get("BOP", symbol="IBM", interval="daily")
|
|
188
|
+
ts = data["Technical Analysis: BOP"]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Trend Indicators
|
|
194
|
+
|
|
195
|
+
### ADX — Average Directional Movement Index
|
|
196
|
+
|
|
197
|
+
**Required:** `symbol`, `interval`, `time_period` (no `series_type`)
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
data = av_get("ADX", symbol="IBM", interval="daily", time_period=14)
|
|
201
|
+
ts = data["Technical Analysis: ADX"] # → {"ADX": "..."}
|
|
202
|
+
# ADX > 25 = strong trend
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### AROON — Aroon
|
|
206
|
+
|
|
207
|
+
**Required:** `symbol`, `interval`, `time_period` (no `series_type`)
|
|
208
|
+
|
|
209
|
+
```python
|
|
210
|
+
data = av_get("AROON", symbol="IBM", interval="daily", time_period=25)
|
|
211
|
+
ts = data["Technical Analysis: AROON"] # → {"Aroon Down": "...", "Aroon Up": "..."}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### BBANDS — Bollinger Bands
|
|
215
|
+
|
|
216
|
+
**Optional:** `nbdevup` (default 2), `nbdevdn` (default 2), `matype` (default 0=SMA)
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
data = av_get("BBANDS", symbol="AAPL", interval="daily", time_period=20,
|
|
220
|
+
series_type="close", nbdevup=2, nbdevdn=2)
|
|
221
|
+
ts = data["Technical Analysis: BBANDS"]
|
|
222
|
+
latest = ts[sorted(ts.keys())[-1]]
|
|
223
|
+
print(latest["Real Upper Band"], latest["Real Middle Band"], latest["Real Lower Band"])
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### SAR — Parabolic SAR
|
|
227
|
+
|
|
228
|
+
**Optional:** `acceleration` (default 0.01), `maximum` (default 0.20)
|
|
229
|
+
|
|
230
|
+
```python
|
|
231
|
+
data = av_get("SAR", symbol="IBM", interval="daily")
|
|
232
|
+
ts = data["Technical Analysis: SAR"]
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Volume Indicators
|
|
238
|
+
|
|
239
|
+
### OBV — On Balance Volume
|
|
240
|
+
|
|
241
|
+
**Required:** `symbol`, `interval` (no `time_period` or `series_type`)
|
|
242
|
+
|
|
243
|
+
```python
|
|
244
|
+
data = av_get("OBV", symbol="IBM", interval="daily")
|
|
245
|
+
ts = data["Technical Analysis: OBV"]
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### VWAP — See Moving Averages section above
|
|
249
|
+
|
|
250
|
+
### MFI — Money Flow Index
|
|
251
|
+
|
|
252
|
+
**Required:** `symbol`, `interval`, `time_period` (no `series_type`)
|
|
253
|
+
|
|
254
|
+
```python
|
|
255
|
+
data = av_get("MFI", symbol="IBM", interval="daily", time_period=14)
|
|
256
|
+
ts = data["Technical Analysis: MFI"]
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Volatility Indicators
|
|
262
|
+
|
|
263
|
+
### ATR — Average True Range
|
|
264
|
+
|
|
265
|
+
**Required:** `symbol`, `interval`, `time_period` (no `series_type`)
|
|
266
|
+
|
|
267
|
+
```python
|
|
268
|
+
data = av_get("ATR", symbol="IBM", interval="daily", time_period=14)
|
|
269
|
+
ts = data["Technical Analysis: ATR"]
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### NATR — Normalized Average True Range
|
|
273
|
+
|
|
274
|
+
```python
|
|
275
|
+
data = av_get("NATR", symbol="IBM", interval="daily", time_period=14)
|
|
276
|
+
ts = data["Technical Analysis: NATR"]
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### TRANGE — True Range
|
|
280
|
+
|
|
281
|
+
**Required:** `symbol`, `interval` (no `time_period` or `series_type`)
|
|
282
|
+
|
|
283
|
+
```python
|
|
284
|
+
data = av_get("TRANGE", symbol="IBM", interval="daily")
|
|
285
|
+
ts = data["Technical Analysis: TRANGE"]
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Full Indicator Reference
|
|
291
|
+
|
|
292
|
+
| Function | Description | Required Params |
|
|
293
|
+
|----------|-------------|-----------------|
|
|
294
|
+
| SMA | Simple Moving Average | symbol, interval, time_period, series_type |
|
|
295
|
+
| EMA | Exponential Moving Average | symbol, interval, time_period, series_type |
|
|
296
|
+
| WMA | Weighted Moving Average | symbol, interval, time_period, series_type |
|
|
297
|
+
| DEMA | Double EMA | symbol, interval, time_period, series_type |
|
|
298
|
+
| TEMA | Triple EMA | symbol, interval, time_period, series_type |
|
|
299
|
+
| TRIMA | Triangular MA | symbol, interval, time_period, series_type |
|
|
300
|
+
| KAMA | Kaufman Adaptive MA | symbol, interval, time_period, series_type |
|
|
301
|
+
| MAMA | MESA Adaptive MA | symbol, interval, series_type |
|
|
302
|
+
| VWAP | Vol Weighted Avg Price | symbol, interval (intraday only) |
|
|
303
|
+
| T3 | Triple Smooth EMA | symbol, interval, time_period, series_type |
|
|
304
|
+
| MACD | MACD | symbol, interval, series_type |
|
|
305
|
+
| MACDEXT | MACD with Controllable MA | symbol, interval, series_type |
|
|
306
|
+
| STOCH | Stochastic | symbol, interval |
|
|
307
|
+
| STOCHF | Stochastic Fast | symbol, interval |
|
|
308
|
+
| RSI | Relative Strength Index | symbol, interval, time_period, series_type |
|
|
309
|
+
| STOCHRSI | Stochastic RSI | symbol, interval, time_period, series_type |
|
|
310
|
+
| WILLR | Williams %R | symbol, interval, time_period |
|
|
311
|
+
| ADX | Avg Directional Index | symbol, interval, time_period |
|
|
312
|
+
| ADXR | ADX Rating | symbol, interval, time_period |
|
|
313
|
+
| APO | Absolute Price Oscillator | symbol, interval, series_type |
|
|
314
|
+
| PPO | Percentage Price Oscillator | symbol, interval, series_type |
|
|
315
|
+
| MOM | Momentum | symbol, interval, time_period, series_type |
|
|
316
|
+
| BOP | Balance of Power | symbol, interval |
|
|
317
|
+
| CCI | Commodity Channel Index | symbol, interval, time_period |
|
|
318
|
+
| CMO | Chande Momentum Oscillator | symbol, interval, time_period, series_type |
|
|
319
|
+
| ROC | Rate of Change | symbol, interval, time_period, series_type |
|
|
320
|
+
| ROCR | Rate of Change Ratio | symbol, interval, time_period, series_type |
|
|
321
|
+
| AROON | Aroon | symbol, interval, time_period |
|
|
322
|
+
| AROONOSC | Aroon Oscillator | symbol, interval, time_period |
|
|
323
|
+
| MFI | Money Flow Index | symbol, interval, time_period |
|
|
324
|
+
| TRIX | 1-day Rate of Change of Triple EMA | symbol, interval, time_period, series_type |
|
|
325
|
+
| ULTOSC | Ultimate Oscillator | symbol, interval |
|
|
326
|
+
| DX | Directional Movement Index | symbol, interval, time_period |
|
|
327
|
+
| MINUS_DI | Minus Directional Indicator | symbol, interval, time_period |
|
|
328
|
+
| PLUS_DI | Plus Directional Indicator | symbol, interval, time_period |
|
|
329
|
+
| MINUS_DM | Minus Directional Movement | symbol, interval, time_period |
|
|
330
|
+
| PLUS_DM | Plus Directional Movement | symbol, interval, time_period |
|
|
331
|
+
| BBANDS | Bollinger Bands | symbol, interval, time_period, series_type |
|
|
332
|
+
| MIDPOINT | MidPoint | symbol, interval, time_period, series_type |
|
|
333
|
+
| MIDPRICE | MidPoint Price | symbol, interval, time_period |
|
|
334
|
+
| SAR | Parabolic SAR | symbol, interval |
|
|
335
|
+
| TRANGE | True Range | symbol, interval |
|
|
336
|
+
| ATR | Average True Range | symbol, interval, time_period |
|
|
337
|
+
| NATR | Normalized ATR | symbol, interval, time_period |
|
|
338
|
+
| AD | Chaikin A/D Line | symbol, interval |
|
|
339
|
+
| ADOSC | Chaikin A/D Oscillator | symbol, interval |
|
|
340
|
+
| OBV | On Balance Volume | symbol, interval |
|
|
341
|
+
| HT_TRENDLINE | Hilbert Transform - Trendline | symbol, interval, series_type |
|
|
342
|
+
| HT_SINE | Hilbert Transform - SineWave | symbol, interval, series_type |
|
|
343
|
+
| HT_TRENDMODE | Hilbert Transform - Trend vs Cycle | symbol, interval, series_type |
|
|
344
|
+
| HT_DCPERIOD | Hilbert Transform - DC Period | symbol, interval, series_type |
|
|
345
|
+
| HT_DCPHASE | Hilbert Transform - DC Phase | symbol, interval, series_type |
|
|
346
|
+
| HT_PHASOR | Hilbert Transform - Phasor Components | symbol, interval, series_type |
|
|
347
|
+
|
|
348
|
+
## Multi-Indicator Analysis Example
|
|
349
|
+
|
|
350
|
+
```python
|
|
351
|
+
import pandas as pd
|
|
352
|
+
|
|
353
|
+
def get_indicator_series(function, symbol, interval="daily", **kwargs):
|
|
354
|
+
data = av_get(function, symbol=symbol, interval=interval, **kwargs)
|
|
355
|
+
key = f"Technical Analysis: {function}"
|
|
356
|
+
ts = data[key]
|
|
357
|
+
rows = []
|
|
358
|
+
for date, values in ts.items():
|
|
359
|
+
row = {"date": date}
|
|
360
|
+
row.update(values)
|
|
361
|
+
rows.append(row)
|
|
362
|
+
df = pd.DataFrame(rows)
|
|
363
|
+
df["date"] = pd.to_datetime(df["date"])
|
|
364
|
+
df = df.set_index("date").sort_index()
|
|
365
|
+
return df.astype(float)
|
|
366
|
+
|
|
367
|
+
# Get RSI and BBANDS for signal generation
|
|
368
|
+
rsi = get_indicator_series("RSI", "AAPL", time_period=14, series_type="close")
|
|
369
|
+
bbands = get_indicator_series("BBANDS", "AAPL", time_period=20, series_type="close")
|
|
370
|
+
|
|
371
|
+
# Oversold condition: RSI < 30 AND price near lower band
|
|
372
|
+
print("Recent RSI values:")
|
|
373
|
+
print(rsi["RSI"].tail(5))
|
|
374
|
+
```
|