Indian-trading-skills weekly-fno-trade-planner

install
source · Clone the upstream repo
git clone https://github.com/ajeeshworkspace/indian-trading-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ajeeshworkspace/indian-trading-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/weekly-fno-trade-planner" ~/.claude/skills/ajeeshworkspace-indian-trading-skills-weekly-fno-trade-planner && rm -rf "$T"
manifest: skills/weekly-fno-trade-planner/SKILL.md
source content

Weekly F&O Trade Planner

Overview

A complete weekly trading workflow for Indian F&O markets — from macro thesis to position management. This skill identifies high-conviction directional trades by combining news analysis, sector screening, technical confirmation, and institutional flow data, then manages the position with structured stop-loss and profit-booking rules.

Designed for retail traders with limited capital who prefer option buying over selling. Supports both Groww MCP and Zerodha Kite MCP for live execution.


Phase 1: News & Macro Scan

Goal

Identify the dominant narrative driving markets this week.

Steps

  1. Fetch breaking news and macro events:
WebSearch: "Indian stock market news this week {current_date}"
WebSearch: "global markets impact India {current_week}"
WebSearch: "RBI SEBI announcement {current_month} {current_year}"
WebSearch: "geopolitical risk India market {current_date}"
  1. Categorize the macro environment:
CategoryExamplesTypical F&O Play
Geopolitical crisisWar, sanctions, oil shockIndex PUTs (Nifty/BankNifty)
Policy eventRBI rate decision, budget, SEBI circularStraddle/strangle before event
Earnings seasonIT/Banking results weekStock options directional
Global risk-offUS recession fear, China slowdown, Fed hawkishIndex PUTs, IT stock CALLs (INR weak)
Domestic momentumDII buying, reform news, GDP beatIndex CALLs, banking CALLs
Sector rotationDefence order, pharma approval, EV policySector-specific stock options
Low convictionNo clear driver, range-boundAvoid or play iron condor
  1. Rate the macro conviction (1-5):
    • 5: Clear, strong catalyst with defined timeline (e.g., war escalation, surprise rate cut)
    • 4: Strong theme but timing uncertain
    • 3: Moderate — multiple conflicting signals
    • 2: Weak — mostly noise
    • 1: No conviction — skip the week or go very small

Rule: Only proceed to Phase 2 if conviction >= 3.


Phase 2: Sector & Instrument Identification

Goal

Find the ONE instrument most likely to move meaningfully this week.

Steps

  1. Screen market movers and sectors:

Use whichever broker MCP is connected:

# Groww MCP
fetch_market_movers_and_trending_stocks_funds(
    discovery_filter_types=["TOP_GAINERS", "TOP_LOSERS", "VOLUME_SHOCKERS",
                           "YEARLY_HIGH", "YEARLY_LOW", "STOCKS_IN_NEWS"]
)
fetch_curated_fno(fno_filter_types=["GAINERS", "LOSERS", "TOP_TRADED"])

# Zerodha Kite MCP — use web search for movers, then:
# search_instruments(query="{sector_leader}")
  1. Check institutional flows (invoke

    fii-dii-flow-tracker
    skill):

    • FII net buy/sell trend (last 5-10 days)
    • DII positioning
    • Sector-wise FII allocation shifts
  2. Narrow to ONE instrument using this priority:

    • Index (Nifty/BankNifty): For macro/geopolitical/broad market themes
    • Sector ETF or index: For sector rotation themes
    • Single stock: For earnings/company-specific catalysts (must be in F&O list)
  3. Validate F&O availability:

# Groww MCP
fno_mcx_contracts_search_tool(search_term="{instrument_name}")

# Zerodha Kite MCP
search_instruments(query="{instrument_name}", segment="NFO-OPT")

Selection Criteria

The ideal instrument has:

  • Direct exposure to the identified macro theme
  • High F&O liquidity (tight bid-ask spread)
  • Clear technical setup (trending, not choppy)
  • Manageable lot size for user's capital

Phase 3: Direction & Technical Confirmation

Goal

Determine the probable direction (bullish/bearish) with technical evidence.

Steps

  1. Fetch price data (daily and hourly):
# Groww MCP
fetch_historical_candle_data(
    trading_symbol="{symbol}",
    start_time="{60_days_ago} 09:15:00",
    end_time="{today} 15:30:00",
    interval_in_minutes="1440"
)

# Zerodha Kite MCP
get_historical_data(
    instrument_token="{token}",
    from_date="{60_days_ago}",
    to_date="{today}",
    interval="day"
)
  1. Run technical indicators:
# Groww MCP
get_historical_technical_indicators(
    trading_symbol="{symbol}",
    start_time="{30_days_ago} 09:15:00",
    end_time="{today} 15:30:00",
    interval_in_minutes="1440",
    indicators=["sma", "ema", "rsi", "macd", "supertrend", "bollinger", "atr", "vwap"]
)

# Zerodha Kite MCP — fetch raw candles and compute indicators manually or via yfinance
  1. Identify key levels:

    • Support levels: Recent swing lows, round numbers, SMA/EMA zones
    • Resistance levels: Recent swing highs, previous breakdown points
    • Trend: Higher highs/lows (bullish) or lower highs/lows (bearish)
    • Momentum: RSI, MACD crossover direction, SuperTrend signal
  2. Check Open Interest for institutional positioning:

# Groww MCP
get_open_interest_analysis(symbol="{symbol}", view="all")

# Zerodha Kite MCP — use web search for OI data from NSE
  • Heavy PUT writing at a strike = institutional support floor
  • Heavy CALL writing at a strike = institutional resistance ceiling
  • PCR > 1.2 = market leaning bullish (hedged)
  • PCR < 0.8 = market leaning bearish
  1. Direction verdict:
SignalBullishBearish
TrendHigher lowsLower highs
RSI40-60 rising40-60 falling
MACDBullish crossoverBearish crossover
SuperTrendGreen/BuyRed/Sell
FII flowsNet buyingNet selling
OI structureHeavy PUT writing belowHeavy CALL writing above

Rule: Need 4+ signals aligned for a directional trade. If mixed, skip or play non-directional.


Phase 4: Strategy & Entry Plan

Goal

Select the optimal option strategy and define precise entry levels.

Steps

  1. Check IV environment:
# Groww MCP
get_greeks_for_fno_contract(
    search_queries=["{atm_option}"],
    expiry="{expiry_date}"
)
get_atm_straddle_chart(symbol="{symbol}")

# Zerodha Kite MCP — compute IV from option price using Black-Scholes
  1. Select strategy based on conviction + IV:
ConvictionIV LevelDirectionStrategy
High (4-5)Low-NormalBullishBuy ATM/slightly OTM CALL
High (4-5)Low-NormalBearishBuy ATM/slightly OTM PUT
High (4-5)HighBullishBull call spread (cap IV risk)
High (4-5)HighBearishBear put spread (cap IV risk)
Moderate (3)LowEitherBuy OTM option (cheap lottery)
Moderate (3)HighEitherSell far OTM opposite side (collect premium)
AnyVery HighPre-eventStraddle/strangle (if event binary)
  1. Expiry selection:

    • Current week expiry: Only if entering Mon-Tue with high conviction
    • Next week expiry: Default choice — gives 7-12 days
    • Monthly expiry: For lower conviction or swing trades
    • Rule: Never buy options with < 3 days to expiry unless very high conviction
  2. Strike selection:

    • ATM or 1 strike OTM: High conviction, want delta exposure
    • 2-3 strikes OTM: Moderate conviction, cheaper but needs bigger move
    • Deep OTM: Avoid (low probability, theta destroys)
  3. Position sizing:

# Groww MCP
calculate_fno_margin(
    trading_symbol="{option_symbol}",
    num_lots=1,
    transaction_type="BUY",
    product="NRML"
)
get_available_margin_details()

# Zerodha Kite MCP
get_margins()
  • Max risk per trade: 30-40% of capital for single directional bet
  • Preferred: Split into 2-3 lots for scaling in/out
  • Never: Risk more than 50% of capital on a single trade
  1. Define entry plan:
    • Entry trigger: Specific price level or technical confirmation
    • Entry price range: Acceptable premium range
    • Lot allocation: How many lots at entry vs. add-on

Output: Trade Card

TRADE IDEA — Week of {date}
━━━━━━━━━━━━━━━━━━━━━━━━━━━
Thesis:     {1-line macro reason}
Instrument: {symbol}
Direction:  {BULLISH/BEARISH}
Conviction: {3/4/5 out of 5}

Strategy:   Buy {strike} {CE/PE} {expiry}
Entry:      ₹{premium} (when {underlying} at {level})
Lots:       {n} lots ({quantity} qty)
Capital:    ₹{amount} ({%} of total)

Stop-Loss:  ₹{sl_premium} ({underlying} at ~{level}) = -₹{loss}
Target 1:   ₹{t1_premium} ({underlying} at ~{level}) = +₹{profit1}
Target 2:   ₹{t2_premium} ({underlying} at ~{level}) = +₹{profit2}

Risk:Reward = 1:{ratio}
Max Loss:   ₹{max_loss} ({%} of capital)
━━━━━━━━━━━━━━━━━━━━━━━━━━━

Phase 4.5: Gap Probability & Immediate Entry Decision

Goal

When analysis is run DURING MARKET HOURS or AFTER MARKET CLOSE (post 3:30 PM), assess whether the next trading day is likely to see a significant gap-up or gap-down. If high probability, recommend IMMEDIATE entry before close — do NOT defer to next morning.

THIS IS THE MOST CRITICAL PHASE FOR MULTIPLIED PROFITS. Buying OTM options before a gap is 2-5x cheaper than buying after the gap opens. Missing this window is the single biggest profit killer for retail F&O traders.

When to Trigger This Phase

  • Always when running the skill after 2:00 PM on a trading day
  • Always when running the skill after market close (post 3:30 PM)
  • Always when conviction is >= 4 and direction is clear
  • Always when an active geopolitical/macro crisis is ongoing

Steps

  1. Check GIFT Nifty / SGX Nifty (after hours):
WebSearch: "GIFT Nifty live today {current_date}"
WebSearch: "SGX Nifty futures {current_date} evening"
  • GIFT Nifty trading > 100 pts below close = high gap-down probability
  • GIFT Nifty trading > 100 pts above close = high gap-up probability
  1. Check overnight global cues:
WebSearch: "US futures S&P Nasdaq live {current_date}"
WebSearch: "Asian markets Japan China {current_date} evening"
WebSearch: "crude oil price Brent live tonight {current_date}"
  • US futures down > 1% = gap-down signal
  • Brent crude spike > 3% overnight = strong gap-down for India
  • Asian markets deep red = confirms gap-down
  1. Check overnight news catalysts:
WebSearch: "{active_crisis} latest news tonight {current_date}"
WebSearch: "breaking news global markets after hours {current_date}"
  • New escalation in active crisis = gap accelerator
  • De-escalation / ceasefire = reverse gap
  1. Calculate Gap Probability Score:
FactorBearish GapBullish Gap
GIFT Nifty > 100 pts below close+30%
GIFT Nifty > 200 pts below close+50%
US futures down > 1%+15%
Brent crude up > 3% overnight+20%
Active geopolitical crisis escalating+20%
FII selling > ₹3,000 cr today+10%
GIFT Nifty > 100 pts above close+30%
GIFT Nifty > 200 pts above close+50%
US futures up > 1%+15%
Ceasefire / de-escalation news+25%
FII buying > ₹2,000 cr today+10%

Score > 60% = HIGH probability gap. RECOMMEND IMMEDIATE ENTRY.

  1. Immediate Entry vs Wait Decision:
Gap ProbabilityTimeAction
> 60%Before 3:15 PMBUY NOW. Do not wait for tomorrow.
> 60%After 3:30 PMAlert user: Buy at 9:15 AM tomorrow. Pre-set limit order.
40-60%AnyBuy half position now, half at open
< 40%AnyWait for confirmation at open
  1. Pre-Gap Strike Selection (DIFFERENT from regular entry): When buying BEFORE a gap, select strikes that are currently 2-4 strikes OTM:

    • These are cheap (₹50-150 range) = maximum leverage
    • After the gap, they become ATM or slightly OTM = premium explodes
    • Buy MORE lots of cheaper OTM options for max profit on the gap
    • This is the "lottery ticket" entry — high R:R, limited downside

    Example (Bearish gap expected):

    • Nifty at 23,778 → Buy 23,000 PE at ₹109 (778 pts OTM)
    • Next day gap to 23,200 → 23,000 PE jumps to ₹250+ (130% overnight gain)
    • 6 lots × 65 × ₹141 profit = ₹55,000 on ₹42,500 invested
  2. Output: Immediate Entry Alert:

🚨 GAP ALERT — {DIRECTION} GAP EXPECTED TOMORROW
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Gap Probability: {score}%
GIFT Nifty:      {level} ({change} from close)
Key Catalyst:    {reason}

⚡ IMMEDIATE ENTRY RECOMMENDED — BUY BEFORE CLOSE
Strategy:   Buy {strike} {CE/PE} {expiry} (currently {X} pts OTM)
Premium:    ₹{cheap_price} per unit
Lots:       {max_lots} lots in ₹{budget}
Cost:       ₹{total_cost}

Expected tomorrow open: ₹{estimated_premium} (+{%} overnight)
Expected profit:        ₹{overnight_profit}

vs. buying AFTER gap:   Premium will be ₹{expensive_price}
                        You'd get {fewer_lots} lots for same ₹{budget}
                        Profit potential: {reduced}% lower

⏰ WINDOW: Buy before 3:15 PM today
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Critical Rules for Pre-Gap Entry

  1. Only with conviction >= 4 — Don't gamble on uncertain gaps
  2. Max 40% of capital — Even with high conviction, respect position limits
  3. Always use monthly expiry for pre-gap entries — gives time if gap is delayed
  4. Set SL immediately — Pre-gap entries can go wrong (gap doesn't materialize)
  5. If gap doesn't happen next day — Hold if thesis is intact, exit if thesis breaks
  6. Don't chase if you miss the window — Post-gap premiums are 2-3x, reduce lots

Phase 5: Execution

Goal

Place the trade with proper order types.

Steps

  1. Verify live price before entry:
# Groww MCP
get_ltp(search_queries=["{option_symbol}"], segment="FNO", query_type="fno")
get_quotes_and_depth(search_query="{option_symbol}", segment="FNO", entity_type="fno")

# Zerodha Kite MCP
get_ltp(instruments=["NFO:{option_symbol}"])
get_quotes(instruments=["NFO:{option_symbol}"])
  1. Place the order (always ask user for confirmation):
# Groww MCP
place_fno_order(
    trading_symbol="{option_symbol}",
    num_lots={n},
    transaction_type="BUY",
    order_type="LIMIT",
    price={limit_price},
    product="NRML"
)

# Zerodha Kite MCP
place_order(
    exchange="NFO",
    tradingsymbol="{option_symbol}",
    transaction_type="BUY",
    quantity={quantity},
    order_type="LIMIT",
    price={limit_price},
    product="NRML"
)
  1. Set GTT stop-loss immediately after fill:
# Groww MCP
place_fno_order(
    trading_symbol="{option_symbol}",
    num_lots={n},
    transaction_type="SELL",
    order_type="LIMIT",
    price={sl_price},
    trigger_price={sl_trigger},
    smart_order_category="GTT",
    trigger_direction="DOWN",
    product="NRML"
)

# Zerodha Kite MCP
place_gtt_order(
    trigger_type="single",
    tradingsymbol="{option_symbol}",
    exchange="NFO",
    trigger_values=[{sl_trigger}],
    last_price={current_ltp},
    orders=[{
        "transaction_type": "SELL",
        "quantity": {quantity},
        "price": {sl_price},
        "order_type": "LIMIT",
        "product": "NRML"
    }]
)
  1. Set GTT profit target (same pattern as above with trigger_direction="UP")

Important GTT notes:

  • GTT triggers on the OPTION's LTP, not the underlying price
  • Always set trigger_price slightly before the limit price (e.g., trigger at ₹95, sell at ₹90 for SL)
  • On Groww: GTT may show "verification failed" — this is a known display bug, the order is active
  • After exiting a position, ALWAYS cancel orphaned GTTs

Phase 6: Position Management (Ongoing)

Goal

Manage the position daily with structured rules for SL tightening, partial exits, and full exit.

Daily Monitoring Checklist

  1. Check position P&L:
# Groww MCP
get_my_trading_positions_today()
get_specific_stock_position(trading_symbol="{option}", segment="FNO")

# Zerodha Kite MCP
get_positions()
  1. Check underlying price action:
# Use either broker MCP for live price + intraday chart
get_ltp(search_queries=["{underlying}"])
fetch_historical_candle_data(
    trading_symbol="{underlying}",
    start_time="{today} 09:15:00",
    end_time="{today} 15:30:00",
    interval_in_minutes="5"
)
  1. Check news for thesis changes:
WebSearch: "{macro_theme} latest news {current_date}"
  1. Check institutional flows (FII/DII daily data via
    fii-dii-flow-tracker
    skill)

Stop-Loss Tightening Rules

Premium MoveNew SL LevelLogic
Entry-30% of premiumInitial risk limit
+30% profitBreakeven (entry price)"Free trade" — can't lose
+50% profitEntry + 20%Lock 20% guaranteed profit
+100% profitEntry + 50%Lock 50%, let rest run
+150%+ profitTrail by 30% from peakRide the momentum

To tighten a GTT SL:

# Groww MCP
modify_order_with_confirmation(
    groww_order_id="{gtt_order_id}",
    quantity={qty},
    segment="FNO",
    order_type="LIMIT",
    price={new_sl_price},
    trigger_price={new_trigger},
    trigger_direction="DOWN",
    order_category="GTT"
)

# Zerodha Kite MCP
modify_gtt_order(
    trigger_id={gtt_id},
    trigger_type="single",
    tradingsymbol="{option_symbol}",
    exchange="NFO",
    trigger_values=[{new_trigger}],
    last_price={current_ltp},
    orders=[{
        "transaction_type": "SELL",
        "quantity": {qty},
        "price": {new_sl_price},
        "order_type": "LIMIT",
        "product": "NRML"
    }]
)

Partial Profit Booking Rules

ConditionActionRemaining
Target 1 hit (+50-80%)Exit 40-50% of position50-60% as runner
Target 2 hit (+100-150%)Exit another 30%20-30% as runner
Momentum continuesTrail SL on remainingLet it ride
Thesis weakensExit all remainingProtect profits

Full Exit Triggers

Exit the ENTIRE position when:

  • SL hit: No questions, no hoping — exit immediately
  • Thesis invalidated: Key news changes the setup (e.g., ceasefire in a war trade)
  • Time decay risk: < 2 days to expiry and position is OTM
  • IV crush: After a binary event, IV drops killing premium even if direction is right
  • Weekend risk: For weekly expiry options, exit Friday unless very high conviction
  • Overexposure: If unrealized P&L exceeds 50% of total capital, take some off

Exit Execution

# Market exit for urgency (Groww)
place_fno_order(
    trading_symbol="{option_symbol}",
    num_lots={remaining_lots},
    transaction_type="SELL",
    order_type="MARKET",
    product="NRML"
)

# Zerodha Kite
place_order(
    exchange="NFO",
    tradingsymbol="{option_symbol}",
    transaction_type="SELL",
    quantity={remaining_qty},
    order_type="MARKET",
    product="NRML"
)

# ALWAYS cancel orphaned GTTs after exit
# Groww: cancel_order_with_confirmation(groww_order_id="{gtt_id}", segment="FNO", order_category="GTT")
# Zerodha: delete_gtt_order(trigger_id={gtt_id})

Risk Management Rules (Non-Negotiable)

  1. Max capital at risk: 40% of total capital per trade
  2. Always set SL: Never hold a position without a stop-loss GTT
  3. No averaging down: If SL is hit, accept the loss. Don't add to losers.
  4. Weekend rule: Exit weekly expiry options before Friday close unless thesis is very strong
  5. Theta awareness: Options lose ~30-50% of remaining time value over a weekend
  6. IV awareness: After a big event, IV crushes. Factor this into hold decisions.
  7. No revenge trading: If a trade is stopped out, wait for the next clean setup
  8. Position limit: Max 2 open F&O positions at any time
  9. Cancel orphaned GTTs: After every exit, clean up ALL related GTT orders
  10. Journal the trade: Record entry reason, exit reason, P&L, and lessons learned

Weekly Schedule

DayActivity
Sunday eveningPhase 1-4: Full analysis, generate Trade Card
Monday 9:00 AMPhase 4.5: Check GIFT Nifty, assess gap probability
Monday 9:00-9:15Phase 5: Execute if setup confirms (pre-open or at open)
Mon-Thu (market hours)Phase 6: Daily monitoring, SL tightening, partial exits
Mon-Thu (post 3 PM)Phase 4.5: ALWAYS check for next-day gap opportunity
Mon-Thu (after close)Phase 4.5: Check GIFT Nifty + overnight cues for gap alert
FridayDecision: Exit before weekend or hold (apply weekend rule)
WeekendReview, journal, prepare next week's analysis

IMPORTANT: Evening Workflow (The Edge)

Every trading day after 2:30 PM or after market close, if an active position thesis exists or macro conviction >= 3, the skill MUST run Phase 4.5 to check for overnight gap opportunities.

The #1 profit multiplier in F&O is buying BEFORE the gap, not AFTER.

If the user invokes this skill in the evening / after hours:

  1. Skip Phases 1-3 if thesis is already established
  2. Go DIRECTLY to Phase 4.5 (Gap Probability)
  3. If gap score > 60%, issue Immediate Entry Alert
  4. NEVER say "wait for tomorrow" when gap probability is high and market is still open
  5. If market is closed, alert user to set pre-market limit order or buy at 9:15 sharp

Tools Used

Use whichever broker MCP is connected (Groww or Zerodha Kite):

ActionGroww MCPZerodha Kite MCPFallback
Live price
get_ltp
get_ltp
yfinance
Market depth
get_quotes_and_depth
get_quotes
Historical data
fetch_historical_candle_data
get_historical_data
yfinance
Technical indicators
get_historical_technical_indicators
— (compute from candles)yfinance + pandas
Open interest
get_open_interest_analysis
Web search (NSE)
Greeks/IV
get_greeks_for_fno_contract
Black-Scholes script
ATM straddle
get_atm_straddle_chart
Manual calculation
Margin check
calculate_fno_margin
get_margins
F&O search
fno_mcx_contracts_search_tool
search_instruments
Place order
place_fno_order
place_order
GTT orders
place_fno_order
(GTT)
place_gtt_order
Modify GTT
modify_order_with_confirmation
modify_gtt_order
Cancel GTT
cancel_order_with_confirmation
delete_gtt_order
Positions
get_my_trading_positions_today
get_positions
Portfolio
get_equity_portfolio_holdings
get_holdings
Market movers
fetch_market_movers_and_trending_stocks_funds
Web search
F&O movers
fetch_curated_fno
Web search
Trading calendar
resolve_market_time_and_calendar
Web search
Screener
fetch_technical_screener
Web search
News
WebSearch
WebSearch
WebSearch
FII/DII flows
fii-dii-flow-tracker
skill
fii-dii-flow-tracker
skill
Web search
Calculator
calculator
Python

Disclaimer

This skill provides analysis and trade suggestions based on publicly available data and technical/fundamental indicators. It is NOT financial advice. All F&O trading involves significant risk of loss. Users must make their own investment decisions and are responsible for their own trades. Past patterns do not guarantee future results.