Exchanging token and fetching your account funds.
This takes a few seconds.
| Group | Allotted Cash | Index Drawdown | Deployable Cash | Allotted Margin | Max Risk |
|---|
2 strategy groups are queued for today’s session.
No strategies were scheduled. Your Kite session stays connected,
but no entries will fire today.
StrategiesManager.init() into phase 1 (createSession + margin snapshot + comparison DTO) and phase 2 (proceed → scheduleShortStrangleStrategyPositions).StrategiesManager.java:375-376): effectiveCash = min(availableCash, max(0, initialCashAllocation − indexDrawdown)); then × marginUtilisation% × maxRiskAsPercentageOfCash%.StrategiesManager.java:275-285): effectiveMargin = min(margin.net, initialMarginAllocation); then × marginUtilisation% × maxRiskAsPercentageOfMargin%. Drawdown never touches this track.finalMaxRisk = min(cashTrack, marginTrack) (StrategiesManager.java:389).MarketCalculationUtils.java:152-191): per-index peak-to-trough of cumulative realized netCredit over COMPLETED orders; recomputed each login, not persisted (SMS-1031).margin.available.liveBalance (cash) / margin.net (margin), already snapshotted via MarginSnapshotService. Allotted: strategy_group_configs.initial_cash_allocation / initial_margin_allocation.areStrategiesScheduledForToday (idempotency check) must distinguish SCHEDULED from DECLINED — a declined day lets the next Kite login re-run phase 1 (fresh funds check) and schedule. Session itself stays valid; only phase 2 is pending.app/auth/kite-callback/page.tsx; gate pattern mirrors ProxyMigrationGate. Phase 2: new POST /api/strategy/confirm-schedule behind the same init-strategies:{userId}:{date} lock + idempotency check.