FerroSpread

Bull call debit

Build a directional, defined-risk candidate set from one chain.

A bull call debit is one of the candidate families generated by build_spread_candidates. Enable the family in SpreadBuilderConfig, pass the same enriched rows used by the pipeline, then filter the returned summaries for the family or resolution you want to inspect.

use spread_builder::{build_spread_candidates, SpreadBuilderInput};
 
config.spread_builder.bull_call_debit.enabled = true;
 
let input = SpreadBuilderInput {
    snapshot_date,
    equity_rows: &equity_rows,
    option_rows: &option_rows,
    eligibility_rows: &eligibility_rows,
    min_short_leg_open_interest: Some(100),
};
 
let output = build_spread_candidates(&config.spread_builder, &input)?;
 
for candidate in output.summaries {
    println!(
        "{} {} {} {:?}",
        candidate.symbol,
        candidate.strategy_family,
        candidate.strategy_code,
        candidate.tradeable_resolution_reason
    );
}
# Ok::<(), Box<dyn std::error::Error>>(())

Construction-time constraints keep the candidate set focused before ranking. Use the analytics bundle for expected value, probability of profit, health drivers, and scenario decomposition.