資源簡介
量化選股過程.7z
代碼片段和文件信息
‘‘‘-------------------------------------------------------------------------------
策略思路:
?????????(1)回測標(biāo)的:滬深300與中證800
?????????(2)回測時間段:2016年1月1日至2017年12月31日
?????????(3)數(shù)據(jù)清洗:
????????????????1、為了使測試結(jié)果更符合投資邏輯,我們設(shè)定了三條樣本篩選規(guī)則:
?????????????????(1)?剔除漲停跌停股票;
????????????????(2)?剔除上市不滿一年的股票;
????????????????(3)?剔除選股日由于停牌等原因而無法買入的股票。
????????????????2、數(shù)據(jù)清洗
????????????????我們本次采用研究中最常用的’中位數(shù)去極值法‘去除極值
????????????????超出區(qū)間的定義為異常值。對于異常值,取n=3,把數(shù)值改為邊界值。
????????????????3、因子標(biāo)準(zhǔn)化
????????????????我們采用研究中常用的正態(tài)標(biāo)準(zhǔn)化處理因子數(shù)據(jù)。
?????????(4)回測思路
?????????????????(1)每個月把當(dāng)月的因子平均值求出,然后對各個股票排序,把股票分成10檔。一個月后
?????????????????重新分檔,各個股票等權(quán)看待。根據(jù)每天的數(shù)據(jù),計算其夏普比率,最后總和所有數(shù)據(jù)計算
?????????????????年化夏普比率。
#?????????????????(2)每個月末以最好的一檔為資產(chǎn)組合,跟蹤市場表現(xiàn),跟蹤各檔表現(xiàn)。
#?????????????????(3)以滬深300指數(shù)為資產(chǎn)組合的基準(zhǔn)指數(shù)
?????????(5)選股設(shè)置:
????????????????該回測策略需要長期持有
????????(6)目標(biāo)邏輯:
????????????????基礎(chǔ)資金為100W,計算各個因子的各個股票檔與資產(chǎn)組合的收益率、IC、IR、分檔組合單調(diào)性,
????????????????最后對該因子做t檢驗(yàn)并且計算其年化夏普比率。
-------------------------------------------------------------------------------
‘‘‘
??
from?atrader.calcfactor?import?*
import?numpy?as?np
import?pandas?as?pd
import?time
import?datetime?as?dt
import?xarray?as?xr
import?matplotlib.pyplot?as?plt
from?sklearn.datasets?import?make_moons
from?scipy?import?stats
import?random
from?sklearn.svm?import?SVR
from?sklearn.model_selection?import?GridSearchCV
from?sklearn.model_selection?import?learning_curve
if?__name__==‘__main__‘:
????time_i?=?0
????print(“執(zhí)行開始“.center(20“-“))
????start?=?time.perf_counter()
????time_start=time.time()
????Begin_date?=?‘2016-01-02‘
????#degin_date為訓(xùn)練數(shù)據(jù)的開始時間
????Begin_date?=?‘2016-01-02‘
????del_date?=?‘2015-01-01‘
????End_date?=?‘2017-01-01‘
????#獲取訓(xùn)練數(shù)據(jù)
????stock_code_list?=?list_get(Begin_dateEnd_date)
????#獲取kdata
????stock_score_data?=?data_get(stock_code_listBegin_dateEnd_date)
????choose_factor?=?[‘BIAS20‘‘CDLPIERCING‘‘FY12P‘‘EPIBS‘‘MTM10‘]#20天乖離率?分析師盈利分析?投資回報率預(yù)測?動量指標(biāo)
????#數(shù)據(jù)清洗
????#剔除漲停漲跌與上市不滿一年的股票
????stock_info?=?get_stock_info(stock_code_list)
????stock_info_data?=?stock_info[‘de_listed_date‘]
????#進(jìn)行刪除
????stock_score_data?=?del_data(stock_infostock_info_datadel_datestock_score_data)
????test_mouth?=?1
????begin_date?=?dt.datetime.strptime(Begin_date?‘%Y-%m-%d‘)
????profit_week?=?1
????all_test_time?=?10
????all_x?=?np.array([])
????all_y?=?np.array([])
????scale?=?all_test_time
????for?test_time?in?range(all_test_time):
????????#進(jìn)度條
????????a?=?‘*‘*(time_i)*3
????????b?=?‘.‘?*?((scale?-time_i))*3
????????c?=?(time_i/scale)
????????d?=?time.perf_counter()?-?start?+?0.5
????????time_i+=1
???????#?print?(“{:^3.0f}%[{}->{}]“.format(cab))
????????print?(“\r{:^3.0f}%[{}->{}]{:.2f}s“.format(cabd)end=“?“)
????????
????????#x?need
????????stock_fit_need_num?=stock_score_data.iloc[np.where(?(begin_date+dt.timedelta(days=profit_week*7*test_time))?????????stock_fit_need_num?=stock_fit_need_num.iloc[np.where(?stock_fit_need_num.time<(begin_da
評論
共有 條評論