Personal Finance Skill
A comprehensive personal finance management skill with 75 tools across 7 extensions for banking, investing, tax, market intelligence, social sentiment, and financial analysis workflows.
When to Use
Activate this skill when a user asks for:
- Account aggregation — connecting bank accounts, viewing balances, syncing transactions
- Net worth / cash flow — computing totals, tracking spending, savings rate analysis
- Portfolio monitoring — positions, allocation, performance, drift detection
- Trading — placing/canceling orders, market data, asset lookup (Alpaca)
- Tax optimization — estimated liability, TLH candidates, wash sale checks, quarterly payments
- Tax document processing — parsing W-2, 1099-B/DIV/INT, K-1, Form 1040, Schedules A-E/SE, Form 8949, Form 6251 (AMT), state returns
- Market intelligence — company news, SEC filings, analyst recommendations, economic data (FRED, BLS), news sentiment
- Social sentiment — StockTwits sentiment, X/Twitter cashtag analysis, trending symbols, congressional trading
- Recurring expense tracking — subscriptions, bills, income streams
- Anomaly detection — unusual transactions, balance drops, duplicate charges
- Financial briefings — weekly/monthly summaries with action items
- Scheduled finance workflows — cron-based scans, alerts, reports
Architecture Overview
Seven extensions organized in three layers:
Intelligence Layer
tax-engine (23 tools) — parsing (15), liability, TLH, wash sales, lots,
Schedule D computation, state tax, AMT
market-intel (10 tools) — news, fundamentals, SEC filings, economic data
social-sentiment (6 tools) — StockTwits, X/Twitter, congressional trades
Data Source Adapters
plaid-connect (8) alpaca-trading (10) ibkr-portfolio (9)
Foundation Layer
finance-core (9 tools) — canonical models, storage, normalization,
policy checks, anomaly detection, briefs
Data flow: Adapters fetch provider data → finance-core normalizes and stores → intelligence layer analyzes → policy engine gates actions.
Tool Catalog
finance-core — 9 tools
| Tool |
Description |
Risk |
finance_upsert_snapshot |
Store normalized financial data snapshot (idempotent) |
LOW |
finance_get_state |
Get current financial state (accounts, positions, etc.) |
READ |
finance_get_transactions |
Query transactions with filters and pagination |
READ |
finance_get_net_worth |
Calculate net worth breakdown by category/account |
READ |
finance_detect_anomalies |
Scan for unusual transactions, balance drops, fee spikes |
READ |
finance_cash_flow_summary |
Income vs expenses by category with savings rate |
READ |
finance_subscription_tracker |
Identify recurring charges and subscription patterns |
READ |
finance_generate_brief |
Create structured financial summary with action items |
READ |
finance_policy_check |
Validate proposed action against policy rules |
READ |
Full schemas: references/ext-finance-core.md
plaid-connect — 8 tools
| Tool |
Description |
Risk |
plaid_create_link_token |
Initialize Plaid Link for account connection |
LOW |
plaid_exchange_token |
Exchange public token for permanent access |
MED |
plaid_get_accounts |
List connected accounts with balances |
READ |
plaid_get_transactions |
Fetch transactions via cursor-based sync |
READ |
plaid_get_investments |
Fetch holdings, securities, investment transactions |
READ |
plaid_get_liabilities |
Fetch credit, student loan, and mortgage data |
READ |
plaid_get_recurring |
Identify recurring inflow/outflow streams |
READ |
plaid_webhook_handler |
Process incoming Plaid webhook events |
LOW |
Full schemas: references/ext-plaid-connect.md
alpaca-trading — 10 tools
| Tool |
Description |
Risk |
alpaca_get_account |
Get account balances, buying power, status |
READ |
alpaca_list_positions |
List all open positions |
READ |
alpaca_get_position |
Get single position by symbol |
READ |
alpaca_list_orders |
List orders with status/date filters |
READ |
alpaca_create_order |
Submit buy/sell order with safety checks |
HIGH |
alpaca_cancel_order |
Cancel a pending order |
MED |
alpaca_portfolio_history |
Historical equity and P/L over time |
READ |
alpaca_get_assets |
Search tradable assets by class/exchange |
READ |
alpaca_market_data |
Get snapshots, bars, or quotes for symbols |
READ |
alpaca_clock |
Check if market is open, next open/close |
READ |
Full schemas: references/ext-alpaca-trading.md
ibkr-portfolio — 9 tools
| Tool |
Description |
Risk |
ibkr_auth_status |
Check gateway authentication status |
READ |
ibkr_tickle |
Keep gateway session alive (~1 min interval) |
LOW |
ibkr_list_accounts |
List accounts (must call first) |
READ |
ibkr_get_positions |
Get positions for an account (paginated) |
READ |
ibkr_portfolio_allocation |
Allocation by asset class, sector, group |
READ |
ibkr_portfolio_performance |
NAV time series and returns |
READ |
ibkr_search_contracts |
Search contracts by symbol/name/type |
READ |
ibkr_market_snapshot |
Real-time market data for contracts |
READ |
ibkr_get_orders |
Get current live orders |
READ |
Full schemas: references/ext-ibkr-portfolio.md
tax-engine — 23 tools
| Tool |
Description |
Risk |
tax_parse_1099b |
Parse 1099-B (proceeds, cost basis, wash sales) |
READ |
tax_parse_1099div |
Parse 1099-DIV (dividends, capital gains) |
READ |
tax_parse_1099int |
Parse 1099-INT (interest, bond premiums) |
READ |
tax_parse_w2 |
Parse W-2 (wages, withholding, SS/Medicare) |
READ |
tax_parse_k1 |
Parse Schedule K-1 (partnership pass-through) |
READ |
tax_parse_1040 |
Parse Form 1040 (main federal return) |
READ |
tax_parse_schedule_a |
Parse Schedule A (itemized deductions, SALT cap) |
READ |
tax_parse_schedule_b |
Parse Schedule B (interest/dividend payors) |
READ |
tax_parse_schedule_c |
Parse Schedule C (self-employment income) |
READ |
tax_parse_schedule_d |
Parse Schedule D (capital gains netting) |
READ |
tax_parse_schedule_e |
Parse Schedule E (rental/royalty/partnership) |
READ |
tax_parse_schedule_se |
Parse Schedule SE (self-employment tax) |
READ |
tax_parse_form_8949 |
Parse Form 8949 (sales and dispositions) |
READ |
tax_parse_state_return |
Parse state return (CA 540, NY IT-201, etc.) |
READ |
tax_parse_form_6251 |
Parse Form 6251 (AMT) |
READ |
tax_estimate_liability |
Calculate federal/state tax with brackets |
READ |
tax_find_tlh_candidates |
Identify tax-loss harvesting opportunities |
READ |
tax_check_wash_sales |
Validate wash sale rule compliance (61-day window) |
READ |
tax_lot_selection |
Compare FIFO/LIFO/specific ID for a proposed sale |
READ |
tax_quarterly_estimate |
Quarterly estimated payments with safe harbor |
READ |
tax_compute_schedule_d |
Compute Schedule D netting with loss carryover |
READ |
tax_compute_state_tax |
Compute state tax for CA/NY/NJ/IL/PA/MA/TX/FL |
READ |
tax_compute_amt |
Compute Alternative Minimum Tax (Form 6251) |
READ |
Full schemas: references/ext-tax-engine.md
market-intel — 10 tools
| Tool |
Description |
Risk |
intel_company_news |
Get recent news articles for a company (Finnhub) |
READ |
intel_market_news |
Get general market news by category (Finnhub) |
READ |
intel_stock_fundamentals |
Get reported financial statements (Finnhub) |
READ |
intel_analyst_recommendations |
Get analyst buy/hold/sell consensus (Finnhub) |
READ |
intel_sec_filings |
List SEC filings for a company by ticker (EDGAR) |
READ |
intel_sec_search |
Full-text search across SEC filings (EDGAR) |
READ |
intel_fred_series |
Fetch economic time series (GDP, CPI, rates) (FRED) |
READ |
intel_fred_search |
Search for FRED series by keyword |
READ |
intel_bls_data |
Fetch labor/price statistics time series (BLS) |
READ |
intel_news_sentiment |
Get news with AI-scored sentiment (Alpha Vantage) |
READ |
Full schemas: references/ext-market-intel.md
social-sentiment — 6 tools
| Tool |
Description |
Risk |
social_stocktwits_sentiment |
Get bull/bear sentiment for a stock (StockTwits) |
READ |
social_stocktwits_trending |
Get currently trending symbols (StockTwits) |
READ |
social_x_search |
Search recent tweets by keyword (X/Twitter) |
READ |
social_x_user_timeline |
Get recent tweets from a user (X/Twitter) |
READ |
social_x_cashtag |
Search cashtag with keyword sentiment scoring (X) |
READ |
social_quiver_congress |
Get congressional stock trading disclosures (Quiver) |
READ |
Full schemas: references/ext-social-sentiment.md
Key Workflows
1. Onboarding — Connect Accounts
plaid_create_link_token(products: ["transactions", "investments", "liabilities"])
→ User completes Plaid Link
→ plaid_exchange_token(publicToken)
→ plaid_get_accounts → finance_upsert_snapshot(source: "plaid")
→ plaid_get_transactions → finance_upsert_snapshot
→ plaid_get_investments → finance_upsert_snapshot
→ finance_get_net_worth → present baseline to user
2. Daily Scan — Anomaly Detection
plaid_get_transactions(cursor) → finance_upsert_snapshot
alpaca_list_positions → finance_upsert_snapshot(source: "alpaca")
ibkr_auth_status → ibkr_get_positions → finance_upsert_snapshot(source: "ibkr")
→ finance_detect_anomalies(lookbackDays: 7)
→ Alert on medium/high severity findings
3. Tax-Loss Harvesting
finance_get_state(include: ["positions"])
→ tax_find_tlh_candidates(positions, marginalRate)
→ tax_check_wash_sales(proposedSales, recentPurchases)
→ tax_lot_selection(symbol, qty, lots)
→ finance_policy_check(actionType: "tax_move")
→ [If approved] alpaca_create_order(side: "sell", ...)
4. Quarterly Tax Review
tax_parse_w2 + tax_parse_1099b + tax_parse_1099div + tax_parse_1099int
→ tax_estimate_liability(filingStatus, income)
→ tax_quarterly_estimate(projectedIncome, priorYearTax, paymentsMade)
→ finance_generate_brief(period: "quarterly")
5. Portfolio Monitoring
alpaca_list_positions + ibkr_get_positions
→ finance_upsert_snapshot (both sources)
→ ibkr_portfolio_allocation (check drift)
→ alpaca_portfolio_history (performance trend)
→ finance_detect_anomalies
→ finance_generate_brief(period: "weekly")
6. Company Research — Market Intelligence
intel_company_news(symbol: "AAPL", limit: 10)
→ intel_analyst_recommendations(symbol: "AAPL")
→ intel_stock_fundamentals(symbol: "AAPL", freq: "quarterly")
→ intel_sec_filings(symbol: "AAPL", formType: "10-K")
→ intel_news_sentiment(tickers: "AAPL")
→ social_stocktwits_sentiment(symbol: "AAPL")
→ social_x_cashtag(symbol: "AAPL")
7. Economic Overview
intel_fred_series(seriesId: "GDP")
→ intel_fred_series(seriesId: "CPIAUCSL")
→ intel_fred_series(seriesId: "UNRATE")
→ intel_bls_data(seriesIds: ["CES0000000001"])
→ intel_fred_series(seriesId: "DFF")
8. Full Tax Return Processing
tax_parse_1040(rawData) → tax_parse_schedule_a(rawData)
→ tax_parse_schedule_b(rawData) → tax_parse_schedule_c(rawData)
→ tax_parse_schedule_d(rawData) → tax_parse_schedule_e(rawData)
→ tax_parse_form_8949(rawData) → tax_parse_schedule_se(rawData)
→ tax_compute_schedule_d(gains, losses, carryovers)
→ tax_compute_state_tax(stateCode, taxableIncome, filingStatus)
→ tax_compute_amt(taxableIncome, adjustments, regularTax)
→ tax_parse_state_return(rawData)
9. Congressional Trading Signals
social_quiver_congress(daysBack: 30)
→ Filter for large purchases
→ intel_company_news(symbol: <top_ticker>)
→ alpaca_market_data(symbols: <top_ticker>)
→ social_stocktwits_sentiment(symbol: <top_ticker>)
Configuration
Environment Variables
| Variable |
Extension |
Description |
PLAID_CLIENT_ID |
plaid-connect |
Plaid API client ID |
PLAID_SECRET |
plaid-connect |
Plaid API secret key |
PLAID_ENV |
plaid-connect |
sandbox / development / production |
ALPACA_API_KEY |
alpaca-trading |
Alpaca API key |
ALPACA_API_SECRET |
alpaca-trading |
Alpaca API secret |
ALPACA_ENV |
alpaca-trading |
paper / live |
IBKR_BASE_URL |
ibkr-portfolio |
Client Portal Gateway URL |
FINNHUB_API_KEY |
market-intel |
Finnhub API key (finnhub.io) |
FRED_API_KEY |
market-intel |
FRED API key (fred.stlouisfed.org) |
BLS_API_KEY |
market-intel |
BLS registration key (v2) |
ALPHA_VANTAGE_API_KEY |
market-intel |
Alpha Vantage API key |
X_API_BEARER_TOKEN |
social-sentiment |
X/Twitter OAuth 2.0 Bearer Token |
QUIVER_API_KEY |
social-sentiment |
Quiver Quantitative API key |
Extension Config
Each extension has an openclaw.plugin.json with a configSchema. Key settings:
- finance-core:
storageDir, anomalyThresholds, policyRulesPath
- plaid-connect:
plaidEnv, webhookUrl, clientName, countryCodes
- alpaca-trading:
env (paper/live), maxOrderQty, maxOrderNotional
- ibkr-portfolio:
baseUrl, defaultAccountId
- tax-engine:
defaultFilingStatus, defaultState, defaultTaxYear
- market-intel:
finnhubApiKeyEnv, fredApiKeyEnv, blsApiKeyEnv, alphaVantageApiKeyEnv, secEdgarUserAgent
- social-sentiment:
xApiBearerTokenEnv, quiverApiKeyEnv
Cron Examples
Weekly Financial Brief
openclaw cron add \
--name "Finance Weekly Brief" \
--cron "0 8 * * 1" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Run personal-finance-skill weekly workflow: sync all providers, compute net worth delta, top spend changes, upcoming bills, tax posture, and portfolio drift. Send concise brief with action queue."
Daily Anomaly Scan
openclaw cron add \
--name "Finance Daily Anomaly" \
--cron "15 7 * * *" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Sync latest transactions, run finance_detect_anomalies. Alert on medium/high/critical findings only."
Quarterly Tax Check
openclaw cron add \
--name "Quarterly Tax Review" \
--cron "0 9 1 1,4,6,9 *" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Run quarterly tax review: estimate liability, check withholding gap, find TLH opportunities, assess quarterly payment risk."
Portfolio Drift Monitor
openclaw cron add \
--name "Portfolio Drift Monitor" \
--cron "*/30 13-21 * * 1-5" \
--tz "America/New_York" \
--session isolated \
--message "Check portfolio allocation vs target bands. Alert if drift exceeds threshold for 2 consecutive scans."
Non-Negotiable Guardrails
These rules apply to all AI agents using this skill:
- Always run
finance_policy_check before any side-effecting action (trades, transfers, tax moves).
- Never bypass approval requirements. If policy requires user or advisor approval, halt and request it.
- Numeric outputs must come from deterministic calculators. Never use LLM arithmetic for tax amounts, P/L, or net worth — always use the tool.
- Recommendations must include assumptions and data freshness. Every financial recommendation states what data it used and when that data was last updated.
- Never expose raw access tokens or API keys in tool outputs or conversation.
- Never auto-execute in live trading without explicit user confirmation, even if policy rules allow it.
- All investment-related outputs must include disclaimer: "This is informational only, not financial advice. Consult a qualified advisor before making financial decisions."
- If data is stale, say so. Report data freshness before advising.
Reference Index
Detailed documentation is available in the references/ directory:
| File |
Contents |
| references/ext-finance-core.md |
9 tools, storage layer, normalization functions |
| references/ext-plaid-connect.md |
8 tools, Plaid Link flow, webhook handling |
| references/ext-alpaca-trading.md |
10 tools, order lifecycle, safety limits |
| references/ext-ibkr-portfolio.md |
9 tools, session management, market data fields |
| references/ext-tax-engine.md |
23 tools, 15 parsers + 8 calculators/strategy, form field mappings |
| references/ext-market-intel.md |
10 tools, Finnhub/SEC EDGAR/FRED/BLS/Alpha Vantage |
| references/ext-social-sentiment.md |
6 tools, StockTwits/X/Twitter/Quiver Quantitative |
| references/data-models-and-schemas.md |
Canonical types, enums, entity schemas |
| references/risk-and-policy-guardrails.md |
Policy engine, approval tiers, hard rules |
| references/api-plaid.md |
Full Plaid API reference |
| references/api-alpaca-trading.md |
Full Alpaca API reference |
| references/api-ibkr-client-portal.md |
IBKR Client Portal Web API reference |
| references/api-openclaw-framework.md |
OpenClaw architecture reference |
| references/api-openclaw-extension-patterns.md |
How to build OpenClaw extensions |
| references/api-irs-tax-forms.md |
IRS tax form schemas and rules |
1---2name: personal-finance-skill3description: Personal finance management skill providing 75 tools across 7 extensions for bank account aggregation (Plaid), brokerage trading (Alpaca), portfolio monitoring (IBKR), tax optimization, market intelligence (Finnhub, SEC EDGAR, FRED, BLS, Alpha Vantage), social sentiment (StockTwits, X/Twitter, Quiver), and financial analysis. Supports scheduled scans, anomaly detection, net worth tracking, tax-loss harvesting, and approval-gated execution of financial actions.4license: MIT5---6
7# Personal Finance Skill
8
9A comprehensive personal finance management skill with 75 tools across 7 extensions for banking, investing, tax, market intelligence, social sentiment, and financial analysis workflows.
10
11## When to Use
12
13Activate this skill when a user asks for:
14
15- **Account aggregation** — connecting bank accounts, viewing balances, syncing transactions
16- **Net worth / cash flow** — computing totals, tracking spending, savings rate analysis
17- **Portfolio monitoring** — positions, allocation, performance, drift detection
18- **Trading** — placing/canceling orders, market data, asset lookup (Alpaca)
19- **Tax optimization** — estimated liability, TLH candidates, wash sale checks, quarterly payments
20- **Tax document processing** — parsing W-2, 1099-B/DIV/INT, K-1, Form 1040, Schedules A-E/SE, Form 8949, Form 6251 (AMT), state returns
21- **Market intelligence** — company news, SEC filings, analyst recommendations, economic data (FRED, BLS), news sentiment
22- **Social sentiment** — StockTwits sentiment, X/Twitter cashtag analysis, trending symbols, congressional trading
23- **Recurring expense tracking** — subscriptions, bills, income streams
24- **Anomaly detection** — unusual transactions, balance drops, duplicate charges
25- **Financial briefings** — weekly/monthly summaries with action items
26- **Scheduled finance workflows** — cron-based scans, alerts, reports
27
28## Architecture Overview
29
30Seven extensions organized in three layers:
31
32```
33Intelligence Layer
34 tax-engine (23 tools) — parsing (15), liability, TLH, wash sales, lots,
35 Schedule D computation, state tax, AMT
36 market-intel (10 tools) — news, fundamentals, SEC filings, economic data
37 social-sentiment (6 tools) — StockTwits, X/Twitter, congressional trades
38
39Data Source Adapters
40 plaid-connect (8) alpaca-trading (10) ibkr-portfolio (9)
41
42Foundation Layer
43 finance-core (9 tools) — canonical models, storage, normalization,
44 policy checks, anomaly detection, briefs
45```
46
47**Data flow**: Adapters fetch provider data → finance-core normalizes and stores → intelligence layer analyzes → policy engine gates actions.
48
49## Tool Catalog
50
51### finance-core — 9 tools
52
53| Tool | Description | Risk |
54|------|-------------|------|
55| `finance_upsert_snapshot` | Store normalized financial data snapshot (idempotent) | LOW |
56| `finance_get_state` | Get current financial state (accounts, positions, etc.) | READ |
57| `finance_get_transactions` | Query transactions with filters and pagination | READ |
58| `finance_get_net_worth` | Calculate net worth breakdown by category/account | READ |
59| `finance_detect_anomalies` | Scan for unusual transactions, balance drops, fee spikes | READ |
60| `finance_cash_flow_summary` | Income vs expenses by category with savings rate | READ |
61| `finance_subscription_tracker` | Identify recurring charges and subscription patterns | READ |
62| `finance_generate_brief` | Create structured financial summary with action items | READ |
63| `finance_policy_check` | Validate proposed action against policy rules | READ |
64
65> Full schemas: [references/ext-finance-core.md](references/ext-finance-core.md)
66
67### plaid-connect — 8 tools
68
69| Tool | Description | Risk |
70|------|-------------|------|
71| `plaid_create_link_token` | Initialize Plaid Link for account connection | LOW |
72| `plaid_exchange_token` | Exchange public token for permanent access | MED |
73| `plaid_get_accounts` | List connected accounts with balances | READ |
74| `plaid_get_transactions` | Fetch transactions via cursor-based sync | READ |
75| `plaid_get_investments` | Fetch holdings, securities, investment transactions | READ |
76| `plaid_get_liabilities` | Fetch credit, student loan, and mortgage data | READ |
77| `plaid_get_recurring` | Identify recurring inflow/outflow streams | READ |
78| `plaid_webhook_handler` | Process incoming Plaid webhook events | LOW |
79
80> Full schemas: [references/ext-plaid-connect.md](references/ext-plaid-connect.md)
81
82### alpaca-trading — 10 tools
83
84| Tool | Description | Risk |
85|------|-------------|------|
86| `alpaca_get_account` | Get account balances, buying power, status | READ |
87| `alpaca_list_positions` | List all open positions | READ |
88| `alpaca_get_position` | Get single position by symbol | READ |
89| `alpaca_list_orders` | List orders with status/date filters | READ |
90| `alpaca_create_order` | Submit buy/sell order with safety checks | **HIGH** |
91| `alpaca_cancel_order` | Cancel a pending order | MED |
92| `alpaca_portfolio_history` | Historical equity and P/L over time | READ |
93| `alpaca_get_assets` | Search tradable assets by class/exchange | READ |
94| `alpaca_market_data` | Get snapshots, bars, or quotes for symbols | READ |
95| `alpaca_clock` | Check if market is open, next open/close | READ |
96
97> Full schemas: [references/ext-alpaca-trading.md](references/ext-alpaca-trading.md)
98
99### ibkr-portfolio — 9 tools
100
101| Tool | Description | Risk |
102|------|-------------|------|
103| `ibkr_auth_status` | Check gateway authentication status | READ |
104| `ibkr_tickle` | Keep gateway session alive (~1 min interval) | LOW |
105| `ibkr_list_accounts` | List accounts (must call first) | READ |
106| `ibkr_get_positions` | Get positions for an account (paginated) | READ |
107| `ibkr_portfolio_allocation` | Allocation by asset class, sector, group | READ |
108| `ibkr_portfolio_performance` | NAV time series and returns | READ |
109| `ibkr_search_contracts` | Search contracts by symbol/name/type | READ |
110| `ibkr_market_snapshot` | Real-time market data for contracts | READ |
111| `ibkr_get_orders` | Get current live orders | READ |
112
113> Full schemas: [references/ext-ibkr-portfolio.md](references/ext-ibkr-portfolio.md)
114
115### tax-engine — 23 tools
116
117| Tool | Description | Risk |
118|------|-------------|------|
119| `tax_parse_1099b` | Parse 1099-B (proceeds, cost basis, wash sales) | READ |
120| `tax_parse_1099div` | Parse 1099-DIV (dividends, capital gains) | READ |
121| `tax_parse_1099int` | Parse 1099-INT (interest, bond premiums) | READ |
122| `tax_parse_w2` | Parse W-2 (wages, withholding, SS/Medicare) | READ |
123| `tax_parse_k1` | Parse Schedule K-1 (partnership pass-through) | READ |
124| `tax_parse_1040` | Parse Form 1040 (main federal return) | READ |
125| `tax_parse_schedule_a` | Parse Schedule A (itemized deductions, SALT cap) | READ |
126| `tax_parse_schedule_b` | Parse Schedule B (interest/dividend payors) | READ |
127| `tax_parse_schedule_c` | Parse Schedule C (self-employment income) | READ |
128| `tax_parse_schedule_d` | Parse Schedule D (capital gains netting) | READ |
129| `tax_parse_schedule_e` | Parse Schedule E (rental/royalty/partnership) | READ |
130| `tax_parse_schedule_se` | Parse Schedule SE (self-employment tax) | READ |
131| `tax_parse_form_8949` | Parse Form 8949 (sales and dispositions) | READ |
132| `tax_parse_state_return` | Parse state return (CA 540, NY IT-201, etc.) | READ |
133| `tax_parse_form_6251` | Parse Form 6251 (AMT) | READ |
134| `tax_estimate_liability` | Calculate federal/state tax with brackets | READ |
135| `tax_find_tlh_candidates` | Identify tax-loss harvesting opportunities | READ |
136| `tax_check_wash_sales` | Validate wash sale rule compliance (61-day window) | READ |
137| `tax_lot_selection` | Compare FIFO/LIFO/specific ID for a proposed sale | READ |
138| `tax_quarterly_estimate` | Quarterly estimated payments with safe harbor | READ |
139| `tax_compute_schedule_d` | Compute Schedule D netting with loss carryover | READ |
140| `tax_compute_state_tax` | Compute state tax for CA/NY/NJ/IL/PA/MA/TX/FL | READ |
141| `tax_compute_amt` | Compute Alternative Minimum Tax (Form 6251) | READ |
142
143> Full schemas: [references/ext-tax-engine.md](references/ext-tax-engine.md)
144
145### market-intel — 10 tools
146
147| Tool | Description | Risk |
148|------|-------------|------|
149| `intel_company_news` | Get recent news articles for a company (Finnhub) | READ |
150| `intel_market_news` | Get general market news by category (Finnhub) | READ |
151| `intel_stock_fundamentals` | Get reported financial statements (Finnhub) | READ |
152| `intel_analyst_recommendations` | Get analyst buy/hold/sell consensus (Finnhub) | READ |
153| `intel_sec_filings` | List SEC filings for a company by ticker (EDGAR) | READ |
154| `intel_sec_search` | Full-text search across SEC filings (EDGAR) | READ |
155| `intel_fred_series` | Fetch economic time series (GDP, CPI, rates) (FRED) | READ |
156| `intel_fred_search` | Search for FRED series by keyword | READ |
157| `intel_bls_data` | Fetch labor/price statistics time series (BLS) | READ |
158| `intel_news_sentiment` | Get news with AI-scored sentiment (Alpha Vantage) | READ |
159
160> Full schemas: [references/ext-market-intel.md](references/ext-market-intel.md)
161
162### social-sentiment — 6 tools
163
164| Tool | Description | Risk |
165|------|-------------|------|
166| `social_stocktwits_sentiment` | Get bull/bear sentiment for a stock (StockTwits) | READ |
167| `social_stocktwits_trending` | Get currently trending symbols (StockTwits) | READ |
168| `social_x_search` | Search recent tweets by keyword (X/Twitter) | READ |
169| `social_x_user_timeline` | Get recent tweets from a user (X/Twitter) | READ |
170| `social_x_cashtag` | Search cashtag with keyword sentiment scoring (X) | READ |
171| `social_quiver_congress` | Get congressional stock trading disclosures (Quiver) | READ |
172
173> Full schemas: [references/ext-social-sentiment.md](references/ext-social-sentiment.md)
174
175## Key Workflows
176
177### 1. Onboarding — Connect Accounts
178
179```
180plaid_create_link_token(products: ["transactions", "investments", "liabilities"])
181 → User completes Plaid Link
182 → plaid_exchange_token(publicToken)
183 → plaid_get_accounts → finance_upsert_snapshot(source: "plaid")
184 → plaid_get_transactions → finance_upsert_snapshot
185 → plaid_get_investments → finance_upsert_snapshot
186 → finance_get_net_worth → present baseline to user
187```
188
189### 2. Daily Scan — Anomaly Detection
190
191```
192plaid_get_transactions(cursor) → finance_upsert_snapshot
193alpaca_list_positions → finance_upsert_snapshot(source: "alpaca")
194ibkr_auth_status → ibkr_get_positions → finance_upsert_snapshot(source: "ibkr")
195 → finance_detect_anomalies(lookbackDays: 7)
196 → Alert on medium/high severity findings
197```
198
199### 3. Tax-Loss Harvesting
200
201```
202finance_get_state(include: ["positions"])
203 → tax_find_tlh_candidates(positions, marginalRate)
204 → tax_check_wash_sales(proposedSales, recentPurchases)
205 → tax_lot_selection(symbol, qty, lots)
206 → finance_policy_check(actionType: "tax_move")
207 → [If approved] alpaca_create_order(side: "sell", ...)
208```
209
210### 4. Quarterly Tax Review
211
212```
213tax_parse_w2 + tax_parse_1099b + tax_parse_1099div + tax_parse_1099int
214 → tax_estimate_liability(filingStatus, income)
215 → tax_quarterly_estimate(projectedIncome, priorYearTax, paymentsMade)
216 → finance_generate_brief(period: "quarterly")
217```
218
219### 5. Portfolio Monitoring
220
221```
222alpaca_list_positions + ibkr_get_positions
223 → finance_upsert_snapshot (both sources)
224 → ibkr_portfolio_allocation (check drift)
225 → alpaca_portfolio_history (performance trend)
226 → finance_detect_anomalies
227 → finance_generate_brief(period: "weekly")
228```
229
230### 6. Company Research — Market Intelligence
231
232```
233intel_company_news(symbol: "AAPL", limit: 10)
234 → intel_analyst_recommendations(symbol: "AAPL")
235 → intel_stock_fundamentals(symbol: "AAPL", freq: "quarterly")
236 → intel_sec_filings(symbol: "AAPL", formType: "10-K")
237 → intel_news_sentiment(tickers: "AAPL")
238 → social_stocktwits_sentiment(symbol: "AAPL")
239 → social_x_cashtag(symbol: "AAPL")
240```
241
242### 7. Economic Overview
243
244```
245intel_fred_series(seriesId: "GDP")
246 → intel_fred_series(seriesId: "CPIAUCSL")
247 → intel_fred_series(seriesId: "UNRATE")
248 → intel_bls_data(seriesIds: ["CES0000000001"])
249 → intel_fred_series(seriesId: "DFF")
250```
251
252### 8. Full Tax Return Processing
253
254```
255tax_parse_1040(rawData) → tax_parse_schedule_a(rawData)
256 → tax_parse_schedule_b(rawData) → tax_parse_schedule_c(rawData)
257 → tax_parse_schedule_d(rawData) → tax_parse_schedule_e(rawData)
258 → tax_parse_form_8949(rawData) → tax_parse_schedule_se(rawData)
259 → tax_compute_schedule_d(gains, losses, carryovers)
260 → tax_compute_state_tax(stateCode, taxableIncome, filingStatus)
261 → tax_compute_amt(taxableIncome, adjustments, regularTax)
262 → tax_parse_state_return(rawData)
263```
264
265### 9. Congressional Trading Signals
266
267```
268social_quiver_congress(daysBack: 30)
269 → Filter for large purchases
270 → intel_company_news(symbol: <top_ticker>)
271 → alpaca_market_data(symbols: <top_ticker>)
272 → social_stocktwits_sentiment(symbol: <top_ticker>)
273```
274
275## Configuration
276
277### Environment Variables
278
279| Variable | Extension | Description |
280|----------|-----------|-------------|
281| `PLAID_CLIENT_ID` | plaid-connect | Plaid API client ID |
282| `PLAID_SECRET` | plaid-connect | Plaid API secret key |
283| `PLAID_ENV` | plaid-connect | sandbox / development / production |
284| `ALPACA_API_KEY` | alpaca-trading | Alpaca API key |
285| `ALPACA_API_SECRET` | alpaca-trading | Alpaca API secret |
286| `ALPACA_ENV` | alpaca-trading | paper / live |
287| `IBKR_BASE_URL` | ibkr-portfolio | Client Portal Gateway URL |
288| `FINNHUB_API_KEY` | market-intel | Finnhub API key (finnhub.io) |
289| `FRED_API_KEY` | market-intel | FRED API key (fred.stlouisfed.org) |
290| `BLS_API_KEY` | market-intel | BLS registration key (v2) |
291| `ALPHA_VANTAGE_API_KEY` | market-intel | Alpha Vantage API key |
292| `X_API_BEARER_TOKEN` | social-sentiment | X/Twitter OAuth 2.0 Bearer Token |
293| `QUIVER_API_KEY` | social-sentiment | Quiver Quantitative API key |
294
295### Extension Config
296
297Each extension has an `openclaw.plugin.json` with a `configSchema`. Key settings:
298
299- **finance-core**: `storageDir`, `anomalyThresholds`, `policyRulesPath`
300- **plaid-connect**: `plaidEnv`, `webhookUrl`, `clientName`, `countryCodes`
301- **alpaca-trading**: `env` (paper/live), `maxOrderQty`, `maxOrderNotional`
302- **ibkr-portfolio**: `baseUrl`, `defaultAccountId`
303- **tax-engine**: `defaultFilingStatus`, `defaultState`, `defaultTaxYear`
304- **market-intel**: `finnhubApiKeyEnv`, `fredApiKeyEnv`, `blsApiKeyEnv`, `alphaVantageApiKeyEnv`, `secEdgarUserAgent`
305- **social-sentiment**: `xApiBearerTokenEnv`, `quiverApiKeyEnv`
306
307## Cron Examples
308
309### Weekly Financial Brief
310```bash
311openclaw cron add \
312 --name "Finance Weekly Brief" \
313 --cron "0 8 * * 1" \
314 --tz "America/Los_Angeles" \
315 --session isolated \
316 --message "Run personal-finance-skill weekly workflow: sync all providers, compute net worth delta, top spend changes, upcoming bills, tax posture, and portfolio drift. Send concise brief with action queue."
317```
318
319### Daily Anomaly Scan
320```bash
321openclaw cron add \
322 --name "Finance Daily Anomaly" \
323 --cron "15 7 * * *" \
324 --tz "America/Los_Angeles" \
325 --session isolated \
326 --message "Sync latest transactions, run finance_detect_anomalies. Alert on medium/high/critical findings only."
327```
328
329### Quarterly Tax Check
330```bash
331openclaw cron add \
332 --name "Quarterly Tax Review" \
333 --cron "0 9 1 1,4,6,9 *" \
334 --tz "America/Los_Angeles" \
335 --session isolated \
336 --message "Run quarterly tax review: estimate liability, check withholding gap, find TLH opportunities, assess quarterly payment risk."
337```
338
339### Portfolio Drift Monitor
340```bash
341openclaw cron add \
342 --name "Portfolio Drift Monitor" \
343 --cron "*/30 13-21 * * 1-5" \
344 --tz "America/New_York" \
345 --session isolated \
346 --message "Check portfolio allocation vs target bands. Alert if drift exceeds threshold for 2 consecutive scans."
347```
348
349## Non-Negotiable Guardrails
350
351These rules apply to all AI agents using this skill:
352
3531. **Always run `finance_policy_check` before any side-effecting action** (trades, transfers, tax moves).
3542. **Never bypass approval requirements.** If policy requires user or advisor approval, halt and request it.
3553. **Numeric outputs must come from deterministic calculators.** Never use LLM arithmetic for tax amounts, P/L, or net worth — always use the tool.
3564. **Recommendations must include assumptions and data freshness.** Every financial recommendation states what data it used and when that data was last updated.
3575. **Never expose raw access tokens or API keys** in tool outputs or conversation.
3586. **Never auto-execute in live trading** without explicit user confirmation, even if policy rules allow it.
3597. **All investment-related outputs must include disclaimer**: "This is informational only, not financial advice. Consult a qualified advisor before making financial decisions."
3608. **If data is stale, say so.** Report data freshness before advising.
361
362## Reference Index
363
364Detailed documentation is available in the `references/` directory:
365
366| File | Contents |
367|------|----------|
368| [references/ext-finance-core.md](references/ext-finance-core.md) | 9 tools, storage layer, normalization functions |
369| [references/ext-plaid-connect.md](references/ext-plaid-connect.md) | 8 tools, Plaid Link flow, webhook handling |
370| [references/ext-alpaca-trading.md](references/ext-alpaca-trading.md) | 10 tools, order lifecycle, safety limits |
371| [references/ext-ibkr-portfolio.md](references/ext-ibkr-portfolio.md) | 9 tools, session management, market data fields |
372| [references/ext-tax-engine.md](references/ext-tax-engine.md) | 23 tools, 15 parsers + 8 calculators/strategy, form field mappings |
373| [references/ext-market-intel.md](references/ext-market-intel.md) | 10 tools, Finnhub/SEC EDGAR/FRED/BLS/Alpha Vantage |
374| [references/ext-social-sentiment.md](references/ext-social-sentiment.md) | 6 tools, StockTwits/X/Twitter/Quiver Quantitative |
375| [references/data-models-and-schemas.md](references/data-models-and-schemas.md) | Canonical types, enums, entity schemas |
376| [references/risk-and-policy-guardrails.md](references/risk-and-policy-guardrails.md) | Policy engine, approval tiers, hard rules |
377| [references/api-plaid.md](references/api-plaid.md) | Full Plaid API reference |
378| [references/api-alpaca-trading.md](references/api-alpaca-trading.md) | Full Alpaca API reference |
379| [references/api-ibkr-client-portal.md](references/api-ibkr-client-portal.md) | IBKR Client Portal Web API reference |
380| [references/api-openclaw-framework.md](references/api-openclaw-framework.md) | OpenClaw architecture reference |
381| [references/api-openclaw-extension-patterns.md](references/api-openclaw-extension-patterns.md) | How to build OpenClaw extensions |
382| [references/api-irs-tax-forms.md](references/api-irs-tax-forms.md) | IRS tax form schemas and rules |