"""Column contracts for the JoinQuant comparison plugin.""" from typing import Final JOINQUANT_TARGET_COLUMNS: Final[list[str]] = [ "date", "portfolio_name", "symbol_id", "jq_symbol", "target_shares", "target_value", "target_weight", "export_mode", "snapshot_id", ] JOINQUANT_FILL_COLUMNS: Final[list[str]] = [ "date", "portfolio_name", "symbol_id", "jq_symbol", "order_id", "side", "requested_shares", "filled_shares", "fill_price", "trade_value", "trade_cost", "blocked", "raw_status", ] JOINQUANT_POSITION_COLUMNS: Final[list[str]] = [ "date", "portfolio_name", "symbol_id", "jq_symbol", "position_shares", "position_value", "cash", "total_value", ] JOINQUANT_PNL_COLUMNS: Final[list[str]] = [ "date", "portfolio_name", "gross_exposure", "net_exposure", "cash", "total_value", "pnl", "cost", "turnover", ] RECONCILE_COLUMNS: Final[list[str]] = [ "date", "portfolio_name", "symbol_id", "jq_symbol", "target_shares", "our_filled_shares", "jq_filled_shares", "filled_share_diff", "our_position_shares", "jq_position_shares", "position_share_diff", "our_trade_price", "jq_trade_price", "trade_price_diff", "our_cost", "jq_cost", "cost_diff", "our_pnl", "jq_pnl", "pnl_diff", "diff_reason", ] DIFF_REASONS: Final[list[str]] = [ "MATCH", "SYMBOL_MAPPING", "PRICE_MISMATCH", "LOT_ROUNDING", "SUSPENSION", "LIMIT_UP_BLOCK", "LIMIT_DOWN_BLOCK", "VOLUME_OR_LIQUIDITY", "COST_MODEL", "CASH_CONSTRAINT", "SHORT_NOT_SUPPORTED", "CORPORATE_ACTION", "JOINQUANT_INTERNAL_ROUNDING", "MISSING_IN_OUR_SYSTEM", "MISSING_IN_JOINQUANT", "UNKNOWN", ]