Esempio n. 1
0
import data_merge as dm
import factor_test as ft

cash_flow = dbi.get_stocks_data('equity_selected_cashflow_sheet_q',
                                ['net_incr_cash_cash_equ'], '2004-01-01',
                                '2018-03-01')
cash_flow['ncf_ttm'] = cash_flow.groupby('stkcd')[[
    'net_incr_cash_cash_equ'
]].apply(lambda x: x.rolling(4, min_periods=4).sum())

store = pd.HDFStore('test_data.h5')
fdmt = store['fundamental_info']
retn_1m = store['retn_1m']
retn_1m_zz500 = store['retn_1m_zz500']
store.close()

data = dm.factor_merge(fdmt, cash_flow)
data = data.loc[:, ['stkcd', 'trd_dt', 'wind_indcd', 'cap', 'ncf_ttm']]
data['NCFP_TTM_raw'] = data['ncf_ttm'] / (10000 * data['cap'])
ncf_raw = data['NCFP_TTM_raw'].groupby(level=1).describe()
data.drop(pd.to_datetime(['2005-01-31', '2005-02-28', '2005-03-31']),
          level=1,
          inplace=True)
data = dc.clean(data, 'NCFP_TTM')
data = data.set_index(['trd_dt', 'stkcd'])
data.index.names = ['trade_date', 'stock_ID']
signal_input = data[['NCFP_TTM_neu']]
test_data = ft.data_join(retn_1m, signal_input)
btic_des, btic_m = ft.btic(test_data, 'NCFP_TTM')
layer_des = ft.layer_result(test_data, retn_1m_zz500, 'NCFP_TTM')
Esempio n. 2
0
                                 ['net_profit_excl_min_int_inc'], '2004-01-01',
                                 '2018-03-01')
net_profit['net_profit_emi_ttm'] = net_profit.groupby('stkcd')[[
    'net_profit_excl_min_int_inc'
]].apply(lambda x: x.rolling(4, min_periods=4).sum())
net_profit['growth'] = net_profit.groupby('stkcd')[[
    'net_profit_emi_ttm'
]].apply(lambda x: x.pct_change())

store = pd.HDFStore('test_data.h5')
fdmt = store['fundamental_info']
retn_1m = store['retn_1m']
retn_1m_zz500 = store['retn_1m_zz500']
store.close()

data = dm.factor_merge(fdmt, net_profit)
data = data.loc[:, [
    'stkcd', 'trd_dt', 'wind_indcd', 'cap', 'net_profit_emi_ttm', 'growth'
]]
data['PEG_TTM_raw'] = 100 * data['cap'] / data['net_profit_emi_ttm'] / data[
    'growth']
p_raw = data['PEG_TTM_raw'].groupby(level=1).describe()
data.drop(pd.to_datetime(['2005-01-31', '2005-02-28', '2005-03-31']),
          level=1,
          inplace=True)
data = dc.clean(data, 'PEG_TTM')
data = data.set_index(['trd_dt', 'stkcd'])
data.index.names = ['trade_date', 'stock_ID']
signal_input = data[['PEG_TTM_neu']]
test_data = ft.data_join(retn_1m, signal_input)
btic_des, btic_m = ft.btic(test_data, 'PEG_TTM')
Esempio n. 3
0
import sys
sys.path.append(r'E:\FT_Users\XQZhu\stocks_backtest\self_lib')  # 自定义的函数
import pandas as pd
import database_api as dbi
import data_clean as dc
import data_merge as dm
import factor_test as ft

divid = dbi.get_stocks_data('equity_cash_dividend', ['cash_div'], '2004-01-01',
                            '2018-03-01')
store = pd.HDFStore('test_data.h5')
fdmt = store['fundamental_info']
retn_1m = store['retn_1m']
retn_1m_zz500 = store['retn_1m_zz500']
store.close()

data = dm.factor_merge(fdmt, divid)
data = data.loc[:, ['stkcd', 'trd_dt', 'wind_indcd', 'cap', 'cash_div']]
data['DP_raw'] = data['cash_div'] / data['cap']
dp_raw = data['DP_raw'].groupby(level=1).describe()
data.drop(pd.to_datetime(['2005-01-31', '2005-02-28', '2005-03-31']),
          level=1,
          inplace=True)
data = dc.clean(data, 'DP')
data = data.set_index(['trd_dt', 'stkcd'])
data.index.names = ['trade_date', 'stock_ID']
signal_input = data[['DP_neu']]
test_data = ft.data_join(retn_1m, signal_input)
btic_des, btic_m = ft.btic(test_data, 'DP')
layer_des = ft.layer_result(test_data, retn_1m_zz500, 'NCFP_TTM', quantile=5)
Esempio n. 4
0
exec(open(r'E:\FT_Users\XQZhu\stocks_backtest\prerun.py').read())
import sys
sys.path.append(r'E:\FT_Users\XQZhu\stocks_backtest\self_lib') # 自定义的函数
import pandas as pd
import database_api as dbi
import data_merge as dm
import data_clean as dc

oper_rev = dbi.get_stocks_data('equity_selected_income_sheet_q', ['oper_rev'],
                               '2004-01-01', '2018-03-01')
oper_rev['oper_rev_ttm'] = oper_rev.groupby('stkcd')[['oper_rev']].apply(
        lambda x: x.rolling(4, min_periods=4).sum())

store = pd.HDFStore('test_data.h5')
fdmt = store['fundamental_info']
store.close()

data = dm.factor_merge(fdmt, oper_rev)
data = data.loc[:, ['stkcd', 'trd_dt', 'wind_indcd', 'cap', 'oper_rev_ttm']]
data['SP_TTM_raw'] = data['oper_rev_ttm'] / (10000 * data['cap'])
s_raw = data['SP_TTM_raw'].groupby(level=1).describe()
data.drop(pd.to_datetime(['2005-01-31', '2005-02-28', '2005-03-31']), level=1, inplace=True)
data = dc.clean(data, 'SP_TTM')
signal_input, test_data = dm.test_merge(data, 'SP_TTM_neu', close_price_post)
dm.test_result(test_data, 'SP_TTM_neu', 'close_price_post')

store = pd.HDFStore('test_data.h5')
store['SP_TTM_neu'] = signal_input
store.close()