# Strategy Development

> Designs and implements new trading strategies. Covers signal generation, entry/exit logic, position sizing, and risk management rules. Trigger when the user wants to create, modify, or formalize a trading strategy.

- Skill: `lisonevf/strategy-development` (Agent Skill)
- Install (CLI): `npx skillmds@latest add lisonevf/strategy-development`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lisonevf/strategy-development/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: lisonevf (https://skillmd.com/u/lisonevf)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lisonevf/strategy-development

---


# Strategy Development

Helps design, implement, and formalize trading strategies.

## Real Code Reference

- `tradinglearn/strategies/macd_strategy.py` — Example: `MACDStrategy` with `generate_signals(data) -> DataFrame`
- `tradinglearn/pytdx2/backtest.py` — `BaseStrategy` with `buy_condition()` / `sell_condition()` / `update_position()`
- `tradinglearn/pytdx2/evftrade/BaseStrategy.py` — Abstract `BaseStrategy` with `buy_condition(price, time)` / `sell_condition(price, time)`
- `tradinglearn/pytdx2/macd_strategy.py` — `MACDStrategy(BaseStrategy)` implementation
- `tradinglearn/pytdx2/large_trade_model.py` — `LargeTradeStrategy` with risk controls

## Process

1. **Requirements** — timeframe, instruments, risk tolerance, return targets
2. **Signal logic** — entry conditions, exit conditions, filters
3. **Position sizing** — fixed fraction, Kelly criterion, volatility-based
4. **Risk management** — stop-loss, take-profit, trailing stops
5. **Implementation** — code as a class with `generate_signals(data) -> DataFrame`
6. **Validation** — walk-forward analysis, out-of-sample testing, overfitting checks

## Strategy Template (follow tradinlearn convention)

```python
class MyStrategy:
    def __init__(self, param1=default, param2=default):
        self.param1 = param1
        self.param2 = param2

    def generate_signals(self, data: pd.DataFrame) -> pd.DataFrame:
        """Return DataFrame with 'position' column: 1=long, 0=flat, -1=short."""
        signals = pd.DataFrame(index=data.index)
        signals['position'] = 0
        # ... signal logic using data['close'], data['volume'], etc.
        return signals
```

## Key Principles

- Never use future data in signal calculation
- Test on out-of-sample periods separate from optimization
- Account for transaction costs and slippage in backtest
- Keep strategies explainable — complexity should be justified

