| name | strategy-development |
| description | 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. |
| metadata | {"hermes":{"tags":["strategy","trading","design","implementation"],"category":"trading"}} |
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
- Requirements — timeframe, instruments, risk tolerance, return targets
- Signal logic — entry conditions, exit conditions, filters
- Position sizing — fixed fraction, Kelly criterion, volatility-based
- Risk management — stop-loss, take-profit, trailing stops
- Implementation — code as a class with
generate_signals(data) -> DataFrame
- Validation — walk-forward analysis, out-of-sample testing, overfitting checks
Strategy Template (follow tradinlearn convention)
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
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