Factor

class zvt.contract.factor.Factor(data_schema: Type[Mixin], entity_schema: Type[TradableEntity] = None, provider: str = None, entity_provider: str = None, entity_ids: List[str] = None, exchanges: List[str] = None, codes: List[str] = None, start_timestamp: str | Timestamp = None, end_timestamp: str | Timestamp = None, columns: List = None, filters: List = None, order: object = None, limit: int = None, level: str | IntervalLevel = IntervalLevel.LEVEL_1DAY, category_field: str = 'entity_id', time_field: str = 'timestamp', keep_window: int = None, keep_all_timestamp: bool = False, fill_method: str = 'ffill', effective_number: int = None, transformer: Transformer = None, accumulator: Accumulator = None, need_persist: bool = False, only_compute_factor: bool = False, factor_name: str = None, clear_state: bool = False, only_load_factor: bool = False)

Bases: DataReader, EntityStateService, DataListener

__init__(data_schema: Type[Mixin], entity_schema: Type[TradableEntity] = None, provider: str = None, entity_provider: str = None, entity_ids: List[str] = None, exchanges: List[str] = None, codes: List[str] = None, start_timestamp: str | Timestamp = None, end_timestamp: str | Timestamp = None, columns: List = None, filters: List = None, order: object = None, limit: int = None, level: str | IntervalLevel = IntervalLevel.LEVEL_1DAY, category_field: str = 'entity_id', time_field: str = 'timestamp', keep_window: int = None, keep_all_timestamp: bool = False, fill_method: str = 'ffill', effective_number: int = None, transformer: Transformer = None, accumulator: Accumulator = None, need_persist: bool = False, only_compute_factor: bool = False, factor_name: str = None, clear_state: bool = False, only_load_factor: bool = False) None
Parameters:
  • keep_all_timestamp

  • fill_method

  • effective_number

  • transformer

  • accumulator

  • need_persist – whether persist factor

  • only_compute_factor – only compute factor nor result

  • factor_name

  • clear_state

  • only_load_factor – only load factor and compute result

state_schema

Schema for storing states

alias of FactorState

factor_schema: Type[Mixin] = None

define the schema for persist,its columns should be same as indicators in transformer or accumulator

name = None

name of the service, default name of class if not set manually

transformer: Transformer = None

transformer for this factor if not passed as __init__ argument

accumulator: Accumulator = None

accumulator for this factor if not passed as __init__ argument

pipe_df: pd.DataFrame

中间结果,不持久化 data_df->pipe_df

factor_df: pd.DataFrame

计算因子的结果,可持久化,通过对pipe_df的计算得到 pipe_df->factor_df

result_df: pd.DataFrame

result_df是用于选股的标准df,通过对factor_df的计算得到 factor_df->result_df

factor_col_map_object_hook() dict

:return:{col:object_hook}

clear_state_data(entity_id=None)

clear state of the entity

Parameters:

entity_id – entity id

on_data_loaded(data: DataFrame)
Parameters:

data

on_data_changed(data: DataFrame)

overwrite it for computing after data added

Parameters:

data

on_entity_data_changed(entity, added_data: DataFrame)

overwrite it for computing after entity data added

Parameters:
  • entity

  • added_data

decode_state(state: str)

decode state

Parameters:

state

Returns:

encode_state(state: object)

encode state

Parameters:

state

Returns:

move_on(to_timestamp: str | Timestamp = None, timeout: int = 20) object

using continual fetching data in realtime 1)get the data happened before to_timestamp,if not set,get all the data which means to now 2)if computing_window set,the data_df would be cut for saving memory

Parameters:
  • to_timestamp

  • timeout (int)

Returns:

Return type:

states: dict

entity_id:state