{"schema_version":"publication_handoff_v1","producer":{"name":"strategy-lab publication-handoff","renderer_implementation_identity":"ce6bc4ff7c662eb675c13b5823d602c25681c77830af1d606ef1f3893a246f2a"},"run":{"run_id":"research_gerritsen_trb_btcusdt_oos_revalidation","manifest_sha256":"b9d558b92c119e57165e2e5a6d4380413f07ed79e0e8edf9a5c0e977e22dec13","artifact_index_sha256":"57a6a64a3619b5e59d9624400686062a6abd829f4db2dde48251a522578a028c","replay_of":null},"research":{"research_id":"research_gerritsen_trb_btcusdt_oos_revalidation","approved_research_identity":"f1eaa249b8eab5c0aafaa21f8404565758dbca57366cfbd926aa1e345e0eb922","source_material":{"media_type":"application/pdf","sha256":"0b0fade2fff8c7929eb2308d4f80819a6c0ad217c37af554f417f158fe718482"},"source":{"title":"The profitability of technical trading rules in the Bitcoin market","author":"Dirk F. Gerritsen; Elie Bouri; Ehsan Ramezanifar; David Roubaud","date":"2020","url":"https://doi.org/10.1016/j.frl.2019.08.011"},"research_context":{"classification":"OUT_OF_SAMPLE_VALIDATION","research_question":"Do the published Gerritsen et al. 50-, 150-, and 200-day trading-range-breakout parameterizations retain evidence of excess return versus identically costed buy-and-hold when re-evaluated out of sample on Binance Spot BTCUSDT over [2019-01-01, 2026-01-01) under frozen Strategy Lab conventions?","substitutions":[{"type":"SAMPLE_PERIOD_CHANGED","detail":"The source price history ends on 2018-12-31; this out-of-sample evaluation uses [2019-01-01, 2026-01-01)."},{"type":"SOURCE_DATASET_CHANGED","detail":"The source study uses Mt Gox Bitcoin price history and, from 2013-04-28, CoinMarketCap; Strategy Lab uses checksum-verified Binance Public Data Spot daily archives."},{"type":"MARKET_PROXY_CHANGED","detail":"The source study evaluates a Bitcoin price series; Strategy Lab evaluates Binance Spot BTCUSDT, using USDT-quoted BTC as the supported market proxy."},{"type":"EXECUTION_CONVENTION_STRATEGY_LAB_DEFINED","detail":"The source defines daily buy/sell/hold signals from trading-range breakouts and its long-only strategy is long only on buy-signal days. Strategy Lab maps the published channel parameters to its supported stateful close_channel rule, starts FLAT, retains LONG inside the channel including equality, and executes signal changes at the next daily open."},{"type":"ACCOUNTING_CONVENTION_STRATEGY_LAB_DEFINED","detail":"The source long-only strategy invests outside-Bitcoin capital at the risk-free rate; Strategy Lab long_flat accounting leaves FLAT capital unchanged and performs terminal liquidation under fractional_all_in_terminal_liquidation_v1."},{"type":"COST_MODEL_STRATEGY_LAB_DEFINED","detail":"The source study does not define Strategy Lab's frozen per-side cost schedule; Strategy Lab applies 15 bps primary cost with 20 and 25 bps diagnostic costs to both strategy and benchmark."},{"type":"STATISTICAL_TEST_STRATEGY_LAB_DEFINED","detail":"The source evaluates Sharpe ratios using bootstrap inference. Strategy Lab instead applies excess_return_v2 independently to each member and freezes a 2-of-3 k_of_n family decision rule."}]}},"family":{"family_identity":"67bfba2f4a8871a7e87d39a7750f087db489cd17d1e4b2eb01240780a2223f57","mechanism":"close_channel","symbol":"BTCUSDT","interval":"1d","exposure":"long_flat","execution":"next_daily_open","accounting":"fractional_all_in_terminal_liquidation_v1","benchmark":"identically_costed_buy_and_hold","evaluation_start_utc":"2019-01-01","evaluation_end_exclusive_utc":"2026-01-01","evaluation_days":2557,"maximum_warmup_days":201,"primary_cost_bps_per_leg":15,"diagnostic_cost_bps_per_leg":[20,25],"decision_rule":{"type":"k_of_n","version":"family_rule_v1","k":2,"n":3},"members":[{"order":1,"id":"trb_50","decision_role":"symmetric_member","member_criterion_version":"excess_return_v2","parameters":[{"name":"entry_lookback","value":50},{"name":"exit_lookback","value":50}],"warmup_days":51,"required_first_bar_utc":"2018-11-11","numerical_specification_identity":"cb8ce650303e5e72e006f35834526eaf891e9b6144146cef786fbc3324a9824c","source_description":"Gerritsen et al. trading-range-breakout rule with n=50: a bullish signal occurs above preceding resistance and a bearish signal below preceding support.","source_excerpt":"","cost_rationale":"Apply the current Strategy Lab standing per-side cost policy: 15 bps primary, with 20 and 25 bps diagnostics; the source study does not define this Strategy Lab schedule.","date_selection_reason":"Out-of-sample validation starts immediately after the source price sample ends on 2018-12-31 and uses the maximum supported seven-calendar-year interval [2019-01-01, 2026-01-01).","prior_inspection":"known"},{"order":2,"id":"trb_150","decision_role":"symmetric_member","member_criterion_version":"excess_return_v2","parameters":[{"name":"entry_lookback","value":150},{"name":"exit_lookback","value":150}],"warmup_days":151,"required_first_bar_utc":"2018-08-03","numerical_specification_identity":"ba9a13938e87d72c0451b9ffa585fbc32e957e7a38777abad67dbf40a40e0391","source_description":"Gerritsen et al. trading-range-breakout rule with n=150: a bullish signal occurs above preceding resistance and a bearish signal below preceding support.","source_excerpt":"","cost_rationale":"Apply the current Strategy Lab standing per-side cost policy: 15 bps primary, with 20 and 25 bps diagnostics; the source study does not define this Strategy Lab schedule.","date_selection_reason":"Out-of-sample validation starts immediately after the source price sample ends on 2018-12-31 and uses the maximum supported seven-calendar-year interval [2019-01-01, 2026-01-01).","prior_inspection":"known"},{"order":3,"id":"trb_200","decision_role":"symmetric_member","member_criterion_version":"excess_return_v2","parameters":[{"name":"entry_lookback","value":200},{"name":"exit_lookback","value":200}],"warmup_days":201,"required_first_bar_utc":"2018-06-14","numerical_specification_identity":"897b84e9943318ccf75b914d20555527b0819e55354daccd5d3c4a67d45a9a7e","source_description":"Gerritsen et al. trading-range-breakout rule with n=200: a bullish signal occurs above preceding resistance and a bearish signal below preceding support.","source_excerpt":"","cost_rationale":"Apply the current Strategy Lab standing per-side cost policy: 15 bps primary, with 20 and 25 bps diagnostics; the source study does not define this Strategy Lab schedule.","date_selection_reason":"Out-of-sample validation starts immediately after the source price sample ends on 2018-12-31 and uses the maximum supported seven-calendar-year interval [2019-01-01, 2026-01-01).","prior_inspection":"known"}]},"dataset":{"provider":"Binance Public Data","market":"Spot","symbol":"BTCUSDT","interval":"1d","capture_source":"Binance Public Data Spot monthly kline archives plus daily kline archives for the trailing partial month","rows":2759,"first_open_utc":"2018-06-14T00:00:00Z","terminal_open_utc":"2026-01-01T00:00:00Z","normalized_bars_sha256":"8994ffc23a62f3e824565779777921849150ba0c9b9cca326c672768cfa93b65","capture_manifest_sha256":"ca492e8f6c28fc5ff7e4e92206619348a87a927fbed9f6880ad1725fd2a70fbe","source_attribution_sha256":"7e84097fcf8f9a4a5bdac06610b05858747d73816a7f88b5464f8477072e6536","pre_run_provenance_sha256":"2878d37af2d55c8d40df5bb338962f4d2c8ade8c4a8742c2f6027014ddaf5c04","research_plan_sha256":"9f59d8e1069f1946067dec29585e48dd3a7d2edc256615a979d330b1b448e1c8","retained_provider_archives":92,"normalizer_identity":"d1690db6a30e8e772687bcf06803fb4d3e2c433d043e42a9bfe0ed035247ba2a"},"results":{"outcome":"DID_NOT_MEET_CRITERIA","completion":"COMPLETE","reason":"The k-of-n threshold cannot be reached even if every unresolved frozen member later meets its criterion.","met_criteria_members":0,"did_not_meet_criteria_members":3,"inconclusive_members":0,"evaluation_failed_members":0,"missing_members":0,"members":[{"id":"trb_50","status":"EVALUATED","scientific_outcome":"DID_NOT_MEET_CRITERIA","reason":"The declared historical benchmark test was not met; this is not proof of universal unprofitability.","operational_error":"","primary":{"cost_bps_per_leg":15,"strategy":{"cumulative_return_percent":"1806.946292","annualized_return_percent":"52.321929","simple_return_sharpe":"1.140571","log_return_sharpe":"0.913167","maximum_drawdown_percent":"-62.634241","exposure_days":1480,"turnover_legs":30,"closed_trades":15},"benchmark":{"cumulative_return_percent":"2260.989703","annualized_return_percent":"57.037319","simple_return_sharpe":"1.038152","log_return_sharpe":"0.709154","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}},"hac":{"lag_days":20,"mean_daily_excess_log_return":"-8.35266853620345e-05","one_sided_95_lower_bound":"-0.0007238471564021261","standard_error":"0.0003892872049817858"},"drawdown_criterion":null,"diagnostic_costs":[{"cost_bps_per_leg":20,"strategy":{"cumulative_return_percent":"1778.555473","annualized_return_percent":"51.996128","simple_return_sharpe":"1.135921","log_return_sharpe":"0.908491","maximum_drawdown_percent":"-62.764826","exposure_days":1480,"turnover_legs":30,"closed_trades":15},"benchmark":{"cumulative_return_percent":"2258.629886","annualized_return_percent":"57.014904","simple_return_sharpe":"1.037925","log_return_sharpe":"0.708930","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}},{"cost_bps_per_leg":25,"strategy":{"cumulative_return_percent":"1750.587285","annualized_return_percent":"51.671024","simple_return_sharpe":"1.131268","log_return_sharpe":"0.903812","maximum_drawdown_percent":"-62.894963","exposure_days":1480,"turnover_legs":30,"closed_trades":15},"benchmark":{"cumulative_return_percent":"2256.272424","annualized_return_percent":"56.992492","simple_return_sharpe":"1.037698","log_return_sharpe":"0.708707","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}}]},{"id":"trb_150","status":"EVALUATED","scientific_outcome":"DID_NOT_MEET_CRITERIA","reason":"The declared historical benchmark test was not met; this is not proof of universal unprofitability.","operational_error":"","primary":{"cost_bps_per_leg":15,"strategy":{"cumulative_return_percent":"199.334156","annualized_return_percent":"16.941624","simple_return_sharpe":"0.571399","log_return_sharpe":"0.308304","maximum_drawdown_percent":"-75.809838","exposure_days":1571,"turnover_legs":14,"closed_trades":7},"benchmark":{"cumulative_return_percent":"2260.989703","annualized_return_percent":"57.037319","simple_return_sharpe":"1.038152","log_return_sharpe":"0.709154","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}},"hac":{"lag_days":20,"mean_daily_excess_log_return":"-0.0008076948178714871","one_sided_95_lower_bound":"-0.0014842882935506667","standard_error":"0.0004113396259660867"},"drawdown_criterion":null,"diagnostic_costs":[{"cost_bps_per_leg":20,"strategy":{"cumulative_return_percent":"197.246127","annualized_return_percent":"16.824832","simple_return_sharpe":"0.569377","log_return_sharpe":"0.306330","maximum_drawdown_percent":"-75.858170","exposure_days":1571,"turnover_legs":14,"closed_trades":7},"benchmark":{"cumulative_return_percent":"2258.629886","annualized_return_percent":"57.014904","simple_return_sharpe":"1.037925","log_return_sharpe":"0.708930","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}},{"cost_bps_per_leg":25,"strategy":{"cumulative_return_percent":"195.172659","annualized_return_percent":"16.708156","simple_return_sharpe":"0.567355","log_return_sharpe":"0.304356","maximum_drawdown_percent":"-75.906406","exposure_days":1571,"turnover_legs":14,"closed_trades":7},"benchmark":{"cumulative_return_percent":"2256.272424","annualized_return_percent":"56.992492","simple_return_sharpe":"1.037698","log_return_sharpe":"0.708707","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}}]},{"id":"trb_200","status":"EVALUATED","scientific_outcome":"DID_NOT_MEET_CRITERIA","reason":"The declared historical benchmark test was not met; this is not proof of universal unprofitability.","operational_error":"","primary":{"cost_bps_per_leg":15,"strategy":{"cumulative_return_percent":"1017.949094","annualized_return_percent":"41.142377","simple_return_sharpe":"0.922095","log_return_sharpe":"0.666243","maximum_drawdown_percent":"-58.779606","exposure_days":1873,"turnover_legs":6,"closed_trades":3},"benchmark":{"cumulative_return_percent":"2260.989703","annualized_return_percent":"57.037319","simple_return_sharpe":"1.038152","log_return_sharpe":"0.709154","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}},"hac":{"lag_days":20,"mean_daily_excess_log_return":"-0.00029236803136725064","one_sided_95_lower_bound":"-0.0008979164549973572","standard_error":"0.0003681473011993255"},"drawdown_criterion":null,"diagnostic_costs":[{"cost_bps_per_leg":20,"strategy":{"cumulative_return_percent":"1014.600262","annualized_return_percent":"41.081947","simple_return_sharpe":"0.921265","log_return_sharpe":"0.665408","maximum_drawdown_percent":"-58.820806","exposure_days":1873,"turnover_legs":6,"closed_trades":3},"benchmark":{"cumulative_return_percent":"2258.629886","annualized_return_percent":"57.014904","simple_return_sharpe":"1.037925","log_return_sharpe":"0.708930","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}},{"cost_bps_per_leg":25,"strategy":{"cumulative_return_percent":"1011.261455","annualized_return_percent":"41.021544","simple_return_sharpe":"0.920435","log_return_sharpe":"0.664572","maximum_drawdown_percent":"-58.861965","exposure_days":1873,"turnover_legs":6,"closed_trades":3},"benchmark":{"cumulative_return_percent":"2256.272424","annualized_return_percent":"56.992492","simple_return_sharpe":"1.037698","log_return_sharpe":"0.708707","maximum_drawdown_percent":"-76.629251","exposure_days":2557,"turnover_legs":2,"closed_trades":1}}]}]},"implementation":{"numerical_implementation_identity":"d1690db6a30e8e772687bcf06803fb4d3e2c433d043e42a9bfe0ed035247ba2a","renderer_implementation_identity":"ce6bc4ff7c662eb675c13b5823d602c25681c77830af1d606ef1f3893a246f2a","environment_identity":"047c23e23c52a10b0400986440cc310bb9a00b59091de695ba6f0134aed570f5","executable_sha256":"30d479685363e610e239c68da4c17e086c04df31b121f8bafb214cf0e04b55a5","main_module_version":"(devel)","vcs_revision":"","vcs_modified":null},"interpretation_limits":[{"code":"HISTORICAL_HYPOTHETICAL","statement":"Results are historical hypothetical simulations under the frozen execution, cost, benchmark and accounting assumptions. They do not establish execution feasibility or future profitability."},{"code":"HISTORICAL_DATA_NOT_UNSEEN","statement":"The evaluation period is historical market data that was publicly accessible before the study was frozen; it is not genuinely unseen or future data, whatever the research classification."},{"code":"DEPENDENT_FAMILY_MEMBERS","statement":"Members evaluated on one BTCUSDT series with overlapping lookbacks are strongly dependent. The frozen family rule is a declared decision rule, not a calibrated family-level confidence test, and individual HAC bounds do not establish a family-wise error rate."},{"code":"ALL_MEMBERS_REPORTED","statement":"Every frozen member is reported in declared order, including unfavorable, inconclusive and operationally failed members. No member may be selected, promoted or reordered after observing results, and diagnostic costs cannot change the primary-cost outcome."},{"code":"FIDELITY_OPERATOR_DECLARED","statement":"The research classification and declared substitutions are operator-approved disclosures. Strategy Lab validates their structure and internal consistency but does not verify them against the source material."}],"artifacts":[{"path":"input.json","role":"submitted_input","sha256":"9b53ee6ea63dca6ce537369e487f9b58fcaef0d68b0eb56c539e64a17bec6abe"},{"path":"assessment.md","role":"assessment","sha256":"986aba1b0dc7119262447dc99c558051edf525bd74d534d0e3909f0d437ea4a3"},{"path":"request.json","role":"run_request","sha256":"cfa5a7ff3ccd7484e1aaaee4de5eb68413b726746a9588ccea67fe51d603a38f"},{"path":"family.json","role":"resolved_family","sha256":"9b53ee6ea63dca6ce537369e487f9b58fcaef0d68b0eb56c539e64a17bec6abe"},{"path":"dataset/capture-manifest.json","role":"captured_source_manifest","sha256":"ca492e8f6c28fc5ff7e4e92206619348a87a927fbed9f6880ad1725fd2a70fbe"},{"path":"dataset/source-attribution.json","role":"captured_source_attribution","sha256":"7e84097fcf8f9a4a5bdac06610b05858747d73816a7f88b5464f8477072e6536"},{"path":"dataset/pre-run-provenance.json","role":"captured_pre_run_provenance","sha256":"2878d37af2d55c8d40df5bb338962f4d2c8ade8c4a8742c2f6027014ddaf5c04"},{"path":"dataset/plan/research-plan.json","role":"captured_research_plan","sha256":"9f59d8e1069f1946067dec29585e48dd3a7d2edc256615a979d330b1b448e1c8"},{"path":"dataset/bars.json","role":"normalized_dataset","sha256":"8994ffc23a62f3e824565779777921849150ba0c9b9cca326c672768cfa93b65"},{"path":"dataset.json","role":"dataset_binding","sha256":"fc46175cf69cb40f24131c30a6c222bc0e51ac9af70cfa82a06aa2a415011278"},{"path":"build-provenance.json","role":"build_provenance","sha256":"662f1d59a589fd1866b7b0f67c192a8b3a41ae58d1ccf2a123772375f8e3681a"},{"path":"result.json","role":"evaluation_result","sha256":"82684bd5c73f50b1ce0b719ff2f8c405ff3c4acf13de4cc3e7566f00c985982a"},{"path":"report.md","role":"factual_report","sha256":"f4b3d12c174e36558ae05abe88595ded0e0ac597553a1d67fdf56fa311eaa59d"}]}
