eth-btc-nextgen-signal-intent.json 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. {
  2. "created_at": "2026-04-29T19:22:13Z",
  3. "data": {
  4. "aligned_candles": 222500,
  5. "btc_candles": "data/okx-candles/BTC-USDT-SWAP/15m.csv",
  6. "decision_candle_time": "2026-04-29T16:30:00Z",
  7. "decision_candle_ts": 1777480200000,
  8. "decision_rule": "use the aligned candle immediately before the latest aligned local candle",
  9. "eth_candles": "data/okx-candles/ETH-USDT-SWAP/15m.csv",
  10. "latest_aligned_candle_time": "2026-04-29T16:45:00Z",
  11. "latest_aligned_candle_ts": 1777481100000,
  12. "source": "local_csv"
  13. },
  14. "decision": {
  15. "active_signal_count": 0,
  16. "active_suggested_weight": 0,
  17. "intent": "observe_no_signal",
  18. "needs_cancel": false,
  19. "needs_order": false,
  20. "signal": "no_signal"
  21. },
  22. "legs": [
  23. {
  24. "bar": "15m",
  25. "conditions": {
  26. "btc_close_above_sma480": {
  27. "distance_to_pass": 1475.1000000000058,
  28. "passes": false,
  29. "threshold": 77331.1,
  30. "value": 75856.0
  31. },
  32. "btc_momentum_at_or_above_min": {
  33. "distance_to_pass": 0.040101233786776325,
  34. "passes": false,
  35. "threshold": 0.0,
  36. "value": -0.040101233786776325
  37. },
  38. "eth_close_above_sma50": {
  39. "distance_to_pass": 48.865400000000136,
  40. "passes": false,
  41. "threshold": 2315.6154,
  42. "value": 2266.75
  43. },
  44. "eth_rsi2_at_or_below_3": {
  45. "distance_to_pass": 7.743438715792621,
  46. "passes": false,
  47. "threshold": 3.0,
  48. "value": 10.743438715792621
  49. }
  50. },
  51. "direction": "long",
  52. "dry_run_action": "observe_no_signal",
  53. "entry_rule": "eth_close > eth_sma50 and eth_rsi2 <= 3 and btc_close > btc_sma480 and btc_momentum_240 >= minimum",
  54. "exit_rule": "eth_rsi2 >= exit_rsi or btc_close < btc_sma480; shock leg also exits when shock guard fails",
  55. "exit_signal": true,
  56. "family": "btc_trend_eth_rsi",
  57. "indicators": {
  58. "btc_close": 75856.0,
  59. "btc_momentum_240": -0.040101233786776325,
  60. "btc_sma480": 77331.1,
  61. "eth_close": 2266.75,
  62. "eth_rsi2": 10.743438715792621,
  63. "eth_sma50": 2315.6154
  64. },
  65. "intent": "no_signal",
  66. "leg_id": "btc_trend_eth_rsi",
  67. "params": {
  68. "btc_min_momentum": 0.0,
  69. "btc_momentum_lookback": 240,
  70. "btc_trend_sma": 480,
  71. "eth_exit_rsi": 55.0,
  72. "eth_rsi_threshold": 3.0,
  73. "eth_trend_sma": 50
  74. },
  75. "signal": false,
  76. "suggested_weight": 0.5,
  77. "symbol": "ETH-USDT-SWAP"
  78. },
  79. {
  80. "bar": "15m",
  81. "conditions": {
  82. "btc_close_above_sma480": {
  83. "distance_to_pass": 1475.1000000000058,
  84. "passes": false,
  85. "threshold": 77331.1,
  86. "value": 75856.0
  87. },
  88. "btc_drawdown_at_or_above_floor": {
  89. "distance_to_pass": 0.0,
  90. "passes": true,
  91. "threshold": -0.05,
  92. "value": -0.025520730294209204
  93. },
  94. "btc_momentum_at_or_above_min": {
  95. "distance_to_pass": 0.05010123378677633,
  96. "passes": false,
  97. "threshold": 0.01,
  98. "value": -0.040101233786776325
  99. },
  100. "btc_realized_vol_at_or_below_max": {
  101. "distance_to_pass": 0.0,
  102. "passes": true,
  103. "threshold": 0.01,
  104. "value": 0.001651657896372991
  105. },
  106. "eth_close_above_sma50": {
  107. "distance_to_pass": 48.865400000000136,
  108. "passes": false,
  109. "threshold": 2315.6154,
  110. "value": 2266.75
  111. },
  112. "eth_rsi2_at_or_below_3": {
  113. "distance_to_pass": 7.743438715792621,
  114. "passes": false,
  115. "threshold": 3.0,
  116. "value": 10.743438715792621
  117. }
  118. },
  119. "direction": "long",
  120. "dry_run_action": "observe_no_signal",
  121. "entry_rule": "eth_close > eth_sma50 and eth_rsi2 <= 3 and btc_close > btc_sma480 and btc_momentum_240 >= minimum and btc_realized_vol_96 <= 0.01 and btc_drawdown_96 >= -0.05",
  122. "exit_rule": "eth_rsi2 >= exit_rsi or btc_close < btc_sma480; shock leg also exits when shock guard fails",
  123. "exit_signal": true,
  124. "family": "btc_shock_guard_eth_rsi",
  125. "indicators": {
  126. "btc_close": 75856.0,
  127. "btc_drawdown_96": -0.025520730294209204,
  128. "btc_momentum_240": -0.040101233786776325,
  129. "btc_realized_vol_96": 0.001651657896372991,
  130. "btc_recent_high_96": 77842.6,
  131. "btc_sma480": 77331.1,
  132. "eth_close": 2266.75,
  133. "eth_rsi2": 10.743438715792621,
  134. "eth_sma50": 2315.6154
  135. },
  136. "intent": "no_signal",
  137. "leg_id": "btc_shock_guard_eth_rsi",
  138. "params": {
  139. "btc_max_drawdown": 0.05,
  140. "btc_max_realized_vol": 0.01,
  141. "btc_min_momentum": 0.01,
  142. "btc_momentum_lookback": 240,
  143. "btc_shock_lookback": 96,
  144. "btc_trend_sma": 480,
  145. "eth_exit_rsi": 55.0,
  146. "eth_rsi_threshold": 3.0,
  147. "eth_trend_sma": 50
  148. },
  149. "signal": false,
  150. "suggested_weight": 0.5,
  151. "symbol": "ETH-USDT-SWAP"
  152. }
  153. ],
  154. "mode": "readonly_signal_intent",
  155. "observation_parameters": {
  156. "bar_close_confirmation": "15m aligned ETH/BTC local candles",
  157. "candidate_cost_model": "maker_taker",
  158. "candidate_roundtrip_cost_on_margin": 0.0021,
  159. "execution": "no_order_submission",
  160. "portfolio_weighting": "equal 0.5 / 0.5",
  161. "position_direction_to_observe": "no_signal",
  162. "purpose": "small-capital futures observation candidate only after separate order-path implementation",
  163. "state_assumption": "no live position state read or assumed"
  164. },
  165. "order_client": null,
  166. "private_key_required": false,
  167. "readiness_check": {
  168. "blocked_for_live_trading": true,
  169. "blocker": "this script intentionally has no OKX private client, order sizing, or submit path",
  170. "can_be_used_for_later_small_capital_futures_observation": true,
  171. "reason": "signal rules are closed over local public candles and produce no order or cancel payload"
  172. },
  173. "strategy": {
  174. "bar": "15m",
  175. "direction": "long_only",
  176. "leverage_observation_reference": 3,
  177. "name": "eth-btc-nextgen equal-2-c0003",
  178. "short_supported": false,
  179. "source_candidate": "reports/eth-exploration/eth-btc-nextgen-portfolios.csv:equal-2-c0003",
  180. "symbol": "ETH-USDT-SWAP"
  181. },
  182. "submitted_orders": 0
  183. }