import numpy as np
import pandas as pd
from typing import Callable

def vwap(price: np.array, volume: np.array, **kwargs) -> float: ...
def twap(price: np.array, **kwargs) -> float: ...
def remove_beta_effects(df, **kwargs): ...
def cross_sectional_strategy(df, factor, weight: str = 'weight', long: float = 0.3, short: float = 0.3, **kwargs): ...
def judge_factor_direction(df: pd.DataFrame, factor, target: str = 'n1b', by: str = 'symbol', **kwargs): ...
def monotonicity(sequence): ...
def min_max_limit(x, min_val, max_val, digits: int = 4): ...
def rolling_layers(df, factor, n: int = 5, **kwargs): ...
def cal_yearly_days(dts: list, **kwargs): ...
def cal_symbols_factor(dfk: pd.DataFrame, factor_function: Callable, **kwargs): ...
def weights_simple_ensemble(df, weight_cols, method: str = 'mean', only_long: bool = False, **kwargs): ...
def unify_weights(dfw: pd.DataFrame, **kwargs): ...
def sma_long_bear(df: pd.DataFrame, **kwargs): ...
def dif_long_bear(df: pd.DataFrame, **kwargs): ...
def tsf_type(df: pd.DataFrame, factor, n: int = 5, **kwargs): ...
def limit_leverage(df: pd.DataFrame, leverage: float = 1.0, **kwargs): ...
def cal_trade_price(df: pd.DataFrame, digits=None, **kwargs): ...
def mark_cta_periods(df: pd.DataFrame, **kwargs): ...
def mark_v_reversal(df: pd.DataFrame, **kwargs): ...
def mark_volatility(df: pd.DataFrame, kind: str = 'ts', **kwargs): ...
def make_price_features(df, price: str = 'price', **kwargs): ...
def turnover_rate(df: pd.DataFrame, **kwargs): ...
