"""Factor construction, scoring, and selection for stock pre-selection."""

from optimizer.factors._alpha import (
    compute_gross_alpha,
    factor_scores_to_expected_returns,
)
from optimizer.factors._config import (
    FACTOR_GROUP_MAPPING,
    GROUP_WEIGHT_TIER,
    CompositeMethod,
    CompositeScoringConfig,
    FactorConstructionConfig,
    FactorGroupType,
    FactorIntegrationConfig,
    FactorType,
    FactorValidationConfig,
    GroupWeight,
    MacroRegime,
    PublicationLagConfig,
    RegimeTiltConfig,
    SelectionConfig,
    SelectionMethod,
    StandardizationConfig,
    StandardizationMethod,
)
from optimizer.factors._construction import (
    align_to_pit,
    compute_all_factors,
    compute_factor,
)
from optimizer.factors._diagnostics import (
    FactorPCAResult,
    check_survivorship_bias,
    compute_factor_pca,
    flag_redundant_factors,
)
from optimizer.factors._integration import (
    FactorExposureConstraints,
    NetAlphaResult,
    build_factor_bl_views,
    build_factor_exposure_constraints,
    compute_net_alpha,
    estimate_factor_premia,
)
from optimizer.factors._mimicking import (
    QuintileSpreadResult,
    build_factor_mimicking_portfolios,
    compute_cross_factor_correlation,
    compute_quintile_spread,
)
from optimizer.factors._ml_scoring import (
    FittedMLModel,
    fit_gbt_composite,
    fit_ridge_composite,
    predict_composite_scores,
)
from optimizer.factors._oos_validation import (
    FactorOOSConfig,
    FactorOOSResult,
    run_factor_oos_validation,
)
from optimizer.factors._regime import (
    apply_regime_tilts,
    classify_regime,
    get_regime_tilts,
)
from optimizer.factors._scoring import (
    compute_composite_score,
    compute_equal_weight_composite,
    compute_group_scores,
    compute_ic_weighted_composite,
    compute_icir_weighted_composite,
    compute_ml_composite,
)
from optimizer.factors._selection import (
    apply_sector_balance,
    compute_selection_turnover,
    select_fixed_count,
    select_quantile,
    select_stocks,
)
from optimizer.factors._standardization import (
    neutralize_sector,
    orthogonalize_factors,
    rank_normal_standardize,
    standardize_all_factors,
    standardize_factor,
    winsorize_cross_section,
    z_score_standardize,
)
from optimizer.factors._validation import (
    FACTOR_SPREAD_BENCHMARKS,
    CorrectedPValues,
    FactorValidationReport,
    ICResult,
    ICStats,
    QuantileSpreadResult,
    benjamini_hochberg,
    compute_ic_series,
    compute_ic_stats,
    compute_icir,
    compute_monthly_ic,
    compute_newey_west_tstat,
    compute_quantile_spread,
    compute_vif,
    correct_pvalues,
    run_factor_validation,
    validate_factor_universe,
)

__all__ = [
    "FACTOR_GROUP_MAPPING",
    "FACTOR_SPREAD_BENCHMARKS",
    "GROUP_WEIGHT_TIER",
    "CompositeMethod",
    "CompositeScoringConfig",
    "CorrectedPValues",
    "FactorConstructionConfig",
    "FactorExposureConstraints",
    "FactorGroupType",
    "FactorIntegrationConfig",
    "FactorOOSConfig",
    "FactorOOSResult",
    "FactorPCAResult",
    "FactorType",
    "FactorValidationConfig",
    "FactorValidationReport",
    "FittedMLModel",
    "GroupWeight",
    "ICResult",
    "ICStats",
    "MacroRegime",
    "NetAlphaResult",
    "PublicationLagConfig",
    "QuantileSpreadResult",
    "QuintileSpreadResult",
    "RegimeTiltConfig",
    "SelectionConfig",
    "SelectionMethod",
    "StandardizationConfig",
    "StandardizationMethod",
    "align_to_pit",
    "apply_regime_tilts",
    "apply_sector_balance",
    "benjamini_hochberg",
    "build_factor_bl_views",
    "build_factor_exposure_constraints",
    "build_factor_mimicking_portfolios",
    "check_survivorship_bias",
    "classify_regime",
    "compute_all_factors",
    "compute_composite_score",
    "compute_cross_factor_correlation",
    "compute_equal_weight_composite",
    "compute_factor",
    "compute_factor_pca",
    "compute_gross_alpha",
    "compute_group_scores",
    "compute_ic_series",
    "compute_ic_stats",
    "compute_ic_weighted_composite",
    "compute_icir",
    "compute_icir_weighted_composite",
    "compute_ml_composite",
    "compute_monthly_ic",
    "compute_net_alpha",
    "compute_newey_west_tstat",
    "compute_quantile_spread",
    "compute_quintile_spread",
    "compute_selection_turnover",
    "compute_vif",
    "correct_pvalues",
    "estimate_factor_premia",
    "factor_scores_to_expected_returns",
    "fit_gbt_composite",
    "fit_ridge_composite",
    "flag_redundant_factors",
    "get_regime_tilts",
    "neutralize_sector",
    "orthogonalize_factors",
    "predict_composite_scores",
    "rank_normal_standardize",
    "run_factor_oos_validation",
    "run_factor_validation",
    "select_fixed_count",
    "select_quantile",
    "select_stocks",
    "standardize_all_factors",
    "standardize_factor",
    "validate_factor_universe",
    "winsorize_cross_section",
    "z_score_standardize",
]
