Factor

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

Bases: zvt.contract.reader.DataReader, zvt.contract.base_service.EntityStateService, zvt.contract.reader.DataListener

__init__(data_schema: Type[zvt.contract.schema.Mixin], entity_schema: Optional[Type[zvt.contract.schema.TradableEntity]] = None, provider: Optional[str] = None, entity_provider: Optional[str] = None, entity_ids: Optional[List[str]] = None, exchanges: Optional[List[str]] = None, codes: Optional[List[str]] = None, start_timestamp: Optional[Union[str, pandas._libs.tslibs.timestamps.Timestamp]] = None, end_timestamp: Optional[Union[str, pandas._libs.tslibs.timestamps.Timestamp]] = None, columns: Optional[List] = None, filters: Optional[List] = None, order: Optional[object] = None, limit: Optional[int] = None, level: Union[str, zvt.contract.IntervalLevel] = IntervalLevel.LEVEL_1DAY, category_field: str = 'entity_id', time_field: str = 'timestamp', keep_window: Optional[int] = None, keep_all_timestamp: bool = False, fill_method: str = 'ffill', effective_number: Optional[int] = None, transformer: Optional[zvt.contract.factor.Transformer] = None, accumulator: Optional[zvt.contract.factor.Accumulator] = None, need_persist: bool = False, only_compute_factor: bool = False, factor_name: Optional[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 zvt.contract.zvt_info.FactorState

factor_schema: Type[zvt.contract.schema.Mixin] = None

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

transformer: zvt.contract.factor.Transformer = None

transformer for this factor if not passed as __init__ argument

accumulator: zvt.contract.factor.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: pandas.core.frame.DataFrame)
Parameters

data

on_data_changed(data: pandas.core.frame.DataFrame)

overwrite it for computing after data added

Parameters

data

on_entity_data_changed(entity, added_data: pandas.core.frame.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: Optional[Union[str, pandas._libs.tslibs.timestamps.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