from ldnode.calculator.schemas.enumerations import SecurityType


CB_BUILTIN_FACTORS: list[str] = [
    'code',
    'trade_date',
    'name',
    'pre_close',
    'open',
    'high',
    'low',
    'close',
    'limit',
    'close_ma_5',
    'bias_5',
    'pct_chg',
    'vol',
    'vol_5',
    'amount',
    'amount_5',
    'volatility',
    'code_stk',
    'name_stk',
    'pre_close_stk',
    'open_stk',
    'high_stk',
    'low_stk',
    'close_stk',
    'pct_chg_stk',
    'vol_stk',
    'amount_stk',
    'pe_ttm',
    'pb',
    'ps_ttm',
    'dv_ratio',
    # 'total_share',
    # 'float_share',
    'total_mv',
    'circ_mv',
    'debt_to_assets',
    'volatility_stk',
    'is_call',
    # 'redeem_real_days',
    # 'redeem_count_days',
    # 'redeem_total_days',
    'redeem_remain_days',
    'conv_price',
    'conv_value',
    'conv_prem',
    'dblow',
    'issue_size',
    'remain_size',
    'remain_cap',
    'turnover',
    'turnover_5',
    'cap_mv_rate',
    # 'list_date',
    'list_days',
    # 'conv_start_date',
    # 'left_conv_start_days',
    'conv_end_date',
    'left_years',
    'ytm',
    'pure_value',
    'bond_prem',
    'option_value',
    'theory_value',
    'theory_bias',
    'rating',
    'yy_rating',
    'orgform',
    'area',
    'industry_1',
    'industry_2',
    'industry_3',
    'maturity_put_price',
    'maturity',
    'redeem_price_rate',
    # 'popularity_ranking',
    'pct_chg_5',
    'pct_chg_5_stk',
    'alpha_pct_chg_5',
    'theory_conv_prem',
    'mod_conv_prem',
    # 'open_pct_chg',
    # 'high_pct_chg',
    # 'low_pct_chg',
    # 'cash_div',
    # 'stk_div',
    'suspension',
]
""" 转债内置因子 """

STK_BUILTIN_FACTORS: list[str] = [
    'code', # 股票代码
    'trade_date', # 交易日期
    'name', # 股票名称
    'pre_close', # 前收盘价
    'open', # 开盘价
    'high', # 最高价
    'low', # 最低价
    'close', # 收盘价
    'adj_factor', # 复权因子
    'limit', # 涨跌停标记
    'pct_chg', # 涨跌幅
    'vol', # 成交量
    'amount', # 成交额
    'total_share', # 总股本
    'float_share', # 流通股本
    'total_mv', # 总市值
    'circ_mv', # 流通市值
    'turnover', # 换手率
    'list_trade_days', # 上市交易日天数
    # 'list_date',
    'list_days', # 上市自然日天数
    #'orgform',
    'area', # 地区
    'industry_1', # 一级行业
    'industry_2', # 二级行业
    'industry_3', # 三级行业
    'suspension', # 停牌标记
    
    # 原始财报数据
    'tetoshopc', #归母权益合计
    'gw', #商誉
    'toi', #营业总收入
    'ncffoa', #经营现金流量净额
    'dy_ttm', #股息TTM
    'roe', #roe
    'roa', #roa
    'tl', #负债合计
    'ta', #资产总计
    'lwi_ta_r', #有息负债率

    # 衍生财报数据
    'tetoshopc_wo_gw', #扣除商誉归母权益合计
    'tl_ta_r', #资产负债率
    
    # 财报数据TTM
    'npatoshopc_ttm', # 归母净利润TTM
    'npadnrpatoshaopc_ttm', #归母扣非净利润TTM
    'toi_ttm', #营业总收入TTM
    'ncffoa_ttm', #经营现金流量净额TTM
    
    # 财务指标
    'pe_ttm', # 市盈率TTM
    'ep_ttm', # 市盈率TTM倒数
    'd_pe_ttm', # 扣非市盈率TTM
    'd_ep_ttm', # 扣非市盈率TTM倒数
    'pb', # 市净率
    'bp', # 市净率倒数
    'pb_wo_gw', # 扣除商誉市净率
    'bp_wo_gw', # 扣除商誉市净率倒数
    'ps', # 市销率
    'ps_ttm', # 市销率TTM
    'pcf', # 市现率
    'pcf_ttm', # 市现率TTM
    'dyr', # 股息率
]
""" 股票内置因子 """


ETF_BUILTIN_FACTORS: list[str] = [
    'code',
    'trade_date',
    'name',
    'pre_close',
    'open',
    'high',
    'low',
    'close',
    'vol',
    'amount',
    
    'pct_chg',
    'open_pct_chg',
    'high_pct_chg',
    'low_pct_chg',
    'suspension',
    'limit',
    
    'list_trade_days',
    'list_days',
    'adj_factor',
    'adj_back',
    'cash_div',
]
""" ETF内置因子 """


BUILTIN_FACTORS: dict[SecurityType, list[str]] = {
    SecurityType.CB: CB_BUILTIN_FACTORS,
    SecurityType.STK: STK_BUILTIN_FACTORS,
    SecurityType.ETF: ETF_BUILTIN_FACTORS,
}
""" 内置因子 """