Skip to main content

Schism3 Strategy Deep Dive

Strategy Number: #378 (378th of 465 strategies)
Strategy Type: Multi-condition Rebound Trading + Cross-timeframe Filtering + Multi-currency Support
Timeframe: 5 minutes (5m) + 1 hour (1h information layer) / 1 hour + 4 hour (sub-strategy)


1. Strategy Overview​

Schism3 is a highly configurable rebound trading strategy with important upgrades over Schism2MM. Core innovations include: Bounce Pending Signal System, Multi-currency Pair Support (BTC/ETH stake currencies), and Three Strategy Variants (base, BTC, ETH versions). The strategy captures rebound signal prices and enters when prices recover, achieving more precise entry timing.

Core Features​

FeatureDescription
Buy ConditionsBounce pending signal + price confirmation + multi-timeframe filtering + multi-currency conditions
Sell ConditionsDynamic stop-loss + RMI trend reversal + portfolio profit management
Protection Mechanisms5-layer protection (stop-loss, order timeout, entry confirmation, price protection, bounce price tracking)
Timeframe5m + 1h (base) / 1h + 4h (sub-strategy)
Dependenciesnumpy, talib, qtpylib, arrow, cachetools, technical

2. Strategy Configuration Analysis​

2.1 Basic Risk Parameters​

# ROI exit table
minimal_roi = {
"0": 0.05, # Take 5% profit immediately
"10": 0.025, # After 10 minutes: 2.5%
"20": 0.015, # After 20 minutes: 1.5%
"30": 0.01, # After 30 minutes: 1%
"720": 0.005, # After 12 hours: 0.5%
"1440": 0 # After 24 hours: no profit requirement
}

# Stop-loss setting
stoploss = -0.30 # 30% fixed stop-loss (Note: relatively high)

Design Rationale:

  • ROI table spans 24 hours, suitable for medium-to-long term holding
  • Stop-loss as high as 30%, giving greater price volatility room
  • Combined with ignore_roi_if_buy_signal = True, delays exit when buy signal is valid

2.2 Order Type Configuration​

use_sell_signal = False      # Don't use standard sell signals
sell_profit_only = True # Only sell when profitable
ignore_roi_if_buy_signal = True # Ignore ROI when buy signal is valid

2.3 Buy Parameters​

buy_params = {
'bounce-lookback': 8, # Bounce signal lookback period
'bounce-price': 'min', # Bounce price takes minimum value
'down-inf-rsi': 37, # Downtrend 1h RSI threshold
'down-mp': 60, # Downtrend MP threshold
'down-rmi-fast': 28, # Downtrend fast RMI
'down-rmi-slow': 35, # Downtrend slow RMI
'up-inf-rsi': 59, # Uptrend 1h RSI threshold
'xinf-stake-rmi': 70, # Stake currency 1h RMI
'xtf-fiat-rsi': 15, # Fiat timeframe RSI
'xtf-stake-rsi': 60 # Stake currency timeframe RSI
}

3. Buy Conditions Detailed Analysis​

3.1 Bounce Pending Signal System (Core Innovation)​

Schism3 pioneered the bounce pending signal mechanism, working in three steps:

Step 1: Detect Bounce Conditions​

dataframe['bounce-pending'] = np.where(
(1h_rsi >= 37) & # 1h RSI not too low
(rmi-dn-trend == 1) & # RMI downtrend
(rmi-slow >= 35) & # Slow RMI not oversold
(rmi-fast <= 28) & # Fast RMI relatively low
(mp <= 60), # Momentum ping-pong not high
1, 0
)

Step 2: Capture Bounce Price​

dataframe['bounce-price'] = np.where(
bounce-pending == 1,
close, # Record price at signal time
close.rolling(8).min() # Otherwise take 8-period lowest price
)

Step 3: Confirm Entry​

# Actual buy requires confirmation
(1h_rsi >= 59) & # Large timeframe trend confirmation
(bounce-range == 1) & # Bounce signal within 8 periods
(rmi-up-trend == 1) & # RMI turned to uptrend
(close >= bounce-price) # Price recovery confirmed

Logic Interpretation:

  1. First detect "might rebound" conditions
  2. Record price when signal appears
  3. Wait for price recovery confirmation before entering

3.2 Multi-currency Pair Support​

When stake currency is BTC or ETH, the strategy additionally checks:

if stake_currency in ('BTC', 'ETH'):
# Timeframe conditions
(stake_rsi < 60) | (fiat_rsi > 15) # Stake currency not overbought OR fiat oversold
# Information frame conditions
stake_rmi_1h < 70 # Stake currency 1h RMI not high

Purpose: Avoid longing altcoins when BTC/ETH are dropping sharply.

3.3 Add Position Logic​

if active_trade:
profit_factor = 1 - (rmi-slow / 400) # Profit factor
rmi_grow = linear_growth(30, 70, 180, 720, open_minutes) # Linear growth

conditions.append(rmi-up-trend == 1)
conditions.append(current_profit > peak_profit * factor)
conditions.append(rmi-slow >= rmi_grow)

4. Sell Logic Detailed Analysis​

4.1 Dynamic Stop-loss System​

loss_cutoff = linear_growth(-0.03, 0, 0, 300, open_minutes)
# Holding 0 minutes: allow 3% loss
# Holding 300 minutes: require profit

4.2 RMI Stop-loss Signal​

if peak_profit > 0:
crossed_below(rmi-slow, 50) # Was profitable: RMI falls below 50
else:
crossed_below(rmi-slow, 10) # Never profitable: RMI falls below 10

4.3 Portfolio Profit Management​

if free_slots > 0:
hold_pct = (1 / free_slots) * -0.04
avg_other_profit >= hold_pct
else:
biggest_loser == True # Only allow biggest loser to sell

5. Technical Indicator System​

5.1 Core Indicators​

Indicator CategorySpecific IndicatorPurpose
MomentumRMI(21,5), RMI(8,4)Trend direction, overbought/oversold
Rate of ChangeROC(6), MPMomentum strength measurement
TrendRMI trend countTrend confirmation
Bounce Systembounce-pending, bounce-price, bounce-rangeEntry timing

5.2 Information Timeframe Indicators (1h)​

  • RSI(14): Confirm large timeframe trend
  • Stake Currency RMI (BTC/ETH only): Cross-currency filtering

5.3 Multi-currency Frame Indicators​

When stake currency is BTC or ETH:

IndicatorData SourcePurpose
{coin}_rsiCOIN/USD (5m)Coin fiat price trend
{stake}_rsiSTAKE/USD (5m)Stake currency fiat trend
{stake}_rmi_1hSTAKE/USD (1h)Stake currency long-term trend

6. Risk Management Features​

6.1 Multi-layer Stop-loss Protection​

Stop-loss TypeTrigger ConditionDescription
Fixed Stop-lossLoss >= 30%Hard exit (Note: relatively loose)
Dynamic Stop-lossProfit < time thresholdSoft exit
RMI Stop-lossRMI falls below thresholdTrend reversal
Portfolio Stop-lossOverall position considerationFund management
Bounce InvalidPrice doesn't recoverSignal invalidation

6.2 Order Timeout Protection​

def check_buy_timeout(self, pair, trade, order, **kwargs):
if current_price > order['price'] * 1.01: # Price deviates 1%
return True
return False

def check_sell_timeout(self, pair, trade, order, **kwargs):
if current_price < order['price'] * 0.99: # Price deviates 1%
return True
return False

6.3 Entry Price Protection​

def confirm_trade_entry(self, pair, order_type, amount, rate, **kwargs):
if current_price > rate * 1.01: # Price deviates more than 1%
return False
return True

6.4 Bounce Price Tracking​

The strategy records the price when bounce signal appears, ensuring entry only when price recovers, avoiding buying halfway down.


7. Strategy Variants​

7.1 Schism3_BTC (BTC Stake Currency Specific)​

timeframe = '1h'
inf_timeframe = '4h'

buy_params = {
'inf-rsi': 64,
'mp': 55,
'rmi-fast': 31,
'rmi-slow': 16,
'xinf-stake-rmi': 67,
'xtf-fiat-rsi': 17,
'xtf-stake-rsi': 57
}

minimal_roi = {
"0": 0.05,
"240": 0.025, # 4 hours
"1440": 0.01, # 1 day
"4320": 0 # 3 days
}

Features: Uses longer timeframes, suitable for BTC volatility characteristics.

7.2 Schism3_ETH (ETH Stake Currency Specific)​

timeframe = '1h'
inf_timeframe = '4h'

buy_params = {
'inf-rsi': 13,
'mp': 40,
'rmi-fast': 42,
'rmi-slow': 17,
'xinf-stake-rmi': 69,
'xtf-fiat-rsi': 15,
'xtf-stake-rsi': 92
}

Features: Parameter optimization for ETH volatility characteristics.


8. Strategy Advantages and Limitations​

✅ Advantages​

  1. Bounce Pending Signal System: First record signal price, confirm recovery before entry
  2. Multi-currency Support: Automatically adapts to BTC/ETH stake currencies
  3. Configurable Parameters: Supports per-coin-group parameter override
  4. Three Variants: Base, BTC, ETH versions for different scenarios

⚠️ Limitations​

  1. High Stop-loss Risk: 30% stop-loss may bear significant drawdown
  2. Multi-data Source Dependency: Requires additional STAKE/USD and COIN/USD data
  3. High Complexity: Bounce system + multi-currency conditions + portfolio management
  4. Backtest Limitations: Multi-currency conditions may need extra configuration in backtest

9. Suitable Scenario Recommendations​

Market EnvironmentRecommended ConfigurationDescription
BTC/ETH StakeSchism3_BTC / Schism3_ETHUse specialized variants
Stablecoin StakeSchism3 base versionDefault parameters
High Volatility MarketAdjust stop-lossLower stoploss
Long-term HoldingUse sub-strategy1h+4h framework

10. Suitable Market Environment Details​

Schism3 is a smart rebound strategy. Based on its code architecture and community long-term live trading verification, it is most suitable for oscillating uptrend markets and performs poorly in one-sided downtrends.

10.1 Strategy Core Logic​

  • Bounce Pending Signal: Detect potential rebound conditions, record price
  • Price Confirmation: Wait for price recovery confirmation before entry
  • Multi-currency Filtering: Extra check on stake currency trend when using BTC/ETH
  • Portfolio Management: Sell decisions considering overall positions

10.2 Performance in Different Market Environments​

Market TypePerformance RatingAnalysis
📈 Oscillating Uptrend⭐⭐⭐⭐⭐Bounce signals precise, price confirmation effective
🔄 Sideways Oscillation⭐⭐⭐☆☆Bounce signals may trigger frequently
📉 One-sided Downtrend⭐⭐☆☆☆30% stop-loss may be triggered
⚡ High Volatility⭐⭐⭐☆☆Bounce price tracking may fail

10.3 Key Configuration Recommendations​

Configuration ItemRecommended ValueDescription
bounce-lookback5-10Lookback period, increase for high volatility
stoploss-0.15 ~ -0.25Adjust based on risk tolerance
up-inf-rsi55-65Trend confirmation threshold

11. Summary​

Schism3 is a highly configurable rebound trading strategy. Its core value lies in:

  1. Bounce Pending Signal System: Detect first, confirm later, avoid buying halfway down
  2. Multi-currency Support: Automatically adapts to BTC/ETH stake currencies
  3. Strategy Variants: Three versions for different scenarios
  4. Portfolio Management: Smart decisions considering overall positions

For quantitative traders, this is a medium-to-high complexity strategy suitable for oscillating uptrend markets, requiring proper multi-currency data source configuration to achieve maximum effect.