Install
openclaw skills install finskills-trading-plan-generatorGenerate structured trade plans with entry, stop-loss, and take-profit levels based on technical and fundamental data from the Finskills API.
openclaw skills install finskills-trading-plan-generatorTransform a stock idea into a complete, structured trading plan with specific entry triggers, position sizing, stop-loss levels, profit targets, timeline, and thesis statement — powered by live data from the Finskills API. Implements professional trading desk methodology for both swing trades (days to weeks) and position trades (weeks to months).
API Key required — Register at https://finskills.net to get your free key.
Header: X-API-Key: <your_api_key>
Get your API key: Register at https://finskills.net — free tier available, Pro plan unlocks real-time quotes, history, and financials.
Activate when the user:
Before fetching data, confirm:
GET https://finskills.net/v1/stocks/quote/{SYMBOL}
Extract: price, dayHigh, dayLow, open, previousClose, volume, avgVolume, marketCap, 52WeekHigh, 52WeekLow, peRatio, beta
GET https://finskills.net/v1/stocks/history/{SYMBOL}?period=6mo&interval=1d
Extract: last 6 months of daily OHLCV
Compute: ATR (14), key swing highs/lows, 50-day SMA, 20-day SMA, 200-day SMA, RSI
GET https://finskills.net/v1/stocks/recommendations/{SYMBOL}
Extract:
From the quote data, determine:
Compute critical levels:
ATR-based volatility:
ATR_14 = EWM(True_Range, span=14)
Daily_Range_Estimate = 1.2 × ATR_14
Support Levels (from 6-month history):
Resistance Levels (from 6-month history):
Moving Averages (dynamic support/resistance):
For Long Trades:
For Short Trades:
Recommend an entry type and exact trigger price based on the user's thesis and time horizon.
Entry Trigger:
Entry = Buy {SYMBOL} at $X only if {volume confirmation condition AND price condition}
or
Entry = Limit order at ${level} (pullback entry)
Fixed Risk Position Sizing (Industry Standard):
Dollar Risk Per Trade = Account_Size × Max_Risk_Pct
e.g., $100,000 × 2% = $2,000 max risk
Distance to Stop = Entry_Price - Stop_Loss_Price (for longs)
Shares to Buy = Dollar_Risk_Per_Trade / Distance_to_Stop
Position Value = Shares × Entry_Price
Position % of Portfolio = Position_Value / Account_Size
Flag if position exceeds 20% of portfolio (concentration risk warning).
Volatility-Adjusted Check:
ATR-Based Stop (preferred):
For Long: Stop_Loss = Entry_Price - (1.5 × ATR_14)
For Short: Stop_Loss = Entry_Price + (1.5 × ATR_14)
Structure-Based Stop (alternative):
Hard Rule: Never place stop inside a natural support/resistance zone — price will "shake you out" before continuing.
Choose the wider of the two methods for stops (more conservative).
Target 1 (partial exit — 50% of position):
Target 2 (remaining position — trail or hold):
Target 3 (maximum case):
Time Stop (important):
Write a formal 3-part thesis:
╔══════════════════════════════════════════════════════════════════╗
║ TRADE PLAN — {DIRECTION} {TICKER} ║
║ Generated: {DATE} | Type: {Swing/Position/Investment} ║
╚══════════════════════════════════════════════════════════════════╝
📌 TRADE THESIS
"I believe {TICKER} will {rise/fall} because {1-sentence catalyst}.
The trade is invalidated if {invalidation condition}."
Tag: {Breakout / Reversal / Catalyst / Macro-Driven / Technical}
📊 MARKET SNAPSHOT — {TICKER}
Price: ${price} Day Range: ${low} – ${high}
52-Week: ${52wkLow} – ${52wkHigh} Position: {Top/Mid/Bottom} third of range
Beta: {X.X} P/E: {X.X}x Avg Volume: {Xm} shares/day
Today's Vol: {Xm} shares ({+/-}% vs. average)
Analyst Consensus: {Strong Buy / Buy / Hold} Target: ${mean} Range: ${low}–${high}
🎯 KEY LEVELS
Resistance 3: ${R3} [{structure / 52wk-high}]
Resistance 2: ${R2} [{structure}]
► Resistance 1:${R1} [{recent swing high}] ← Nearest overhead
─── CURRENT: ${price} ───
► Support 1: ${S1} [{recent swing low}] ← Stop zone
Support 2: ${S2} [{prior swing low}]
Support 3: ${S3} [{major level}]
20-Day SMA: ${SMA20} 50-Day SMA: ${SMA50} 200-Day SMA: ${SMA200}
ATR (14): ${ATR} ({X.X}% of price)
📋 TRADE PARAMETERS
┌─────────────────────────────────────────────────────┐
│ ENTRY TYPE: {Breakout above} / {Pullback to} ${entry_price}
│ Entry Trigger: Price ${entry_trigger} on volume > {X}M shares
│ OR limit order at ${limit_price} │
│ │
│ STOP-LOSS: ${stop_price} ({ATR-based / Structure}) │
│ Distance: ${entry - stop} ({X.X}% below entry) │
│ │
│ TARGET 1: ${t1} ({2.1:1} R:R) ← Exit 50% │
│ TARGET 2: ${t2} ({3.2:1} R:R) ← Exit 35% │
│ TARGET 3: ${t3} ({4.5:1} R:R) ← Trail 15% │
│ │
│ TIME STOP: Exit by {date} if no progress │
└─────────────────────────────────────────────────────┘
💰 POSITION SIZING (Account: ${account_size})
Max Risk: ${risk_amount} ({risk_pct}% of portfolio)
Stop Distance: ${stop_distance}/share ({stop_pct}%)
Shares to Buy: {shares_count} shares
Position Value: ${position_value} ({position_pct}% of portfolio)
Beta-Adjusted Risk: ${adjusted_risk}
⚠️ {Any concentration or volatility warnings}
📅 TRADE MANAGEMENT RULES
On entry day: Confirm volume and price action before committing
At -50% to stop: Evaluate — add context, consider waiting for new catalyst
At Target 1: Sell 50%, move stop to break-even
At Target 2: Sell 35%, trail stop at 2× ATR
At Target 3: Sell remaining 15%
Time Stop: Exit FULL position on {date}, regardless of P&L
📌 MONITORING CHECKLIST
□ {Key upcoming earnings date if applicable}
□ {Key macro data that could impact trade}
□ {Sector ETF behavior as leading indicator}
□ {Price/Volume action to watch for confirmation or invalidation}