• 大小: 4.28M
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2023-11-07
  • 语言: 其他
  • 标签: 其他  

资源简介

量化选股过程.7z

资源截图

代码片段和文件信息

‘‘‘-------------------------------------------------------------------------------
策略思路:
         (1)回测标的:沪深300与中证800
         (2)回测时间段:2016年1月1日至2017年12月31日
         (3)数据清洗:
                1、为了使测试结果更符合投资逻辑,我们设定了三条样本筛选规则:
                 (1) 剔除涨停跌停股票;
                (2) 剔除上市不满一年的股票;
                (3) 剔除选股日由于停牌等原因而无法买入的股票。
                2、数据清洗
                我们本次采用研究中最常用的’中位数去极值法‘去除极值
                超出区间的定义为异常值。对于异常值,取n=3,把数值改为边界值。
                3、因子标准化
                我们采用研究中常用的正态标准化处理因子数据。
         (4)回测思路
                 (1)每个月把当月的因子平均值求出,然后对各个股票排序,把股票分成10档。一个月后
                 重新分档,各个股票等权看待。根据每天的数据,计算其夏普比率,最后总和所有数据计算
                 年化夏普比率。
#                 (2)每个月末以最好的一档为资产组合,跟踪市场表现,跟踪各档表现。
#                 (3)以沪深300指数为资产组合的基准指数
         (5)选股设置:
                该回测策略需要长期持有
        (6)目标逻辑:
                基础资金为100W,计算各个因子的各个股票档与资产组合的收益率、IC、IR、分档组合单调性,
                最后对该因子做t检验并且计算其年化夏普比率。
-------------------------------------------------------------------------------
‘‘‘
  
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(“执行开始“.center(20“-“))
    start = time.perf_counter()
    time_start=time.time()
    Begin_date = ‘2016-01-02‘
    #degin_date为训练数据的开始时间
    Begin_date = ‘2016-01-02‘
    del_date = ‘2015-01-01‘
    End_date = ‘2017-01-01‘
    #获取训练数据
    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天乖离率 分析师盈利分析 投资回报率预测 动量指标
    #数据清洗
    #剔除涨停涨跌与上市不满一年的股票
    stock_info = get_stock_info(stock_code_list)
    stock_info_data = stock_info[‘de_listed_date‘]
    #进行删除
    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):
        #进度条
        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_score_data.time)[0]]
        stock_fit_need_num =stock_fit_need_num.iloc[np.where( stock_fit_need_num.time<(begin_da

评论

共有 条评论