示例#1
0
    def get_high_low_points(self, stock_code_list):
        msg = '''<html> <tr>Trend inverse reminder from H&L Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">'''
        bar_size = [5, 30, 60]
        column_num = [5, 9, 13]
        threshold = [0.03, 0.05, 0.15]
        send_email_flag = False
        for ii in range(len(bar_size)):
            if bar_size[ii] == 60:
                stock_intraday_data = LoadData.get_daily_stock_data(
                    stock_code_list, "20100101")
                msg = msg + ''' <tr><td rowspan="2">''' + ''' daily </td>'''
            else:
                stock_intraday_data = LoadData.get_intraday_stock_data(
                    stock_code_list, bar_size=bar_size[ii], delta_days=365)
                msg = msg + ''' <tr><td rowspan="2">''' + str(
                    bar_size[ii]) + ''' min </td>'''
            high_point_index_list, high_point_list, high_point_time_list, low_point_index_list, low_point_list, low_point_time_list = HighLowPoint.get_high_low_points_list(
                stock_intraday_data, threshold[ii])

            fall_end_list = []
            rise_end_lsit = []
            fall_end_msg = ""
            rise_end_msg = ""
            for jj in range(len(stock_code_list)):

                self.write_data_to_file(column_num[ii], jj,
                                        high_point_list[jj][-1],
                                        high_point_time_list[jj][-1],
                                        low_point_list[jj][-1],
                                        low_point_time_list[jj][-1])

                temp_msg_fall_end, temp_msg_rise_end = self.judge_trend_inverse(
                    high_point_list[jj], low_point_list[jj],
                    self.current_price[jj])

                if temp_msg_fall_end == True:
                    fall_end_list.append(stock_code_list[jj])
                    send_email_flag = True
                if temp_msg_rise_end == True:
                    rise_end_lsit.append(stock_code_list[jj])
                    send_email_flag = True
            for item in fall_end_list:
                fall_end_msg = fall_end_msg + item + " "
            for item in rise_end_lsit:
                rise_end_msg = rise_end_msg + item + " "

            msg = msg + "<td>" + "Falling End" + "</td><td>" + fall_end_msg + "</td></tr><tr><td> Rising End </td><td>" + rise_end_msg + "</td></tr> \n"
        msg = msg + " </table></html>"
        print msg
        if send_email_flag == True:
            a = SendEmail.Send_Email("Trend inverse reminder from H&L Model",
                                     msg)
            print a.isSend
示例#2
0
    def verify_account(self):
        self.usernameError.setText('')
        self.passwordError.setText('')

        data = LoadData()

        if self.usernameInput.text() != '' and self.passwordInput != '':
            if self.usernameInput.text() == '':
                self.usernameError.setText('Please enter a username')
                self.usernameError.adjustSize()

            if self.passwordInput.text() == '':
                self.passwordError.setText('Please enter a password')
                self.passwordError.adjustSize()

            if self.usernameInput.text() not in data.username_list:
                self.usernameError.setText('Please check your username')
                self.usernameError.adjustSize()

            else:
                if self.passwordInput.text() not in data.password_list:
                    self.passwordError.setText('You got the wrong password')
                    self.passwordError.adjustSize()

        else:
            self.usernameError.setText('Please enter a username')
            self.usernameError.adjustSize()

            self.passwordError.setText('Please enter a password')
            self.passwordError.adjustSize()
示例#3
0
	def __init__(self):
		input_file_path = "input/PriceVolume/bench_mark.xlsx"

		bench_mark_list,self.bench_mark_name_list = self.load_bench_mark_data(input_file_path)

		#bench_mark_list = ["000016.SH","000001.SH","000300.SH","399006.SZ","399905.SZ"]
		#self.bench_mark_name_list = [u"上证50",u"上证综指",u"沪深300",u"创业板指",u"中证500"]
		#bench_mark_list = ["0806.HK","QIHU.N"]
		#self.bench_mark_name_list = [u"惠理",u"奇虎"]
		stock_data_list = LoadData.get_daily_stock_data(bench_mark_list,"20110101")
		self.price_index = 4
		self.volume_index = 5 

		self.trade_cost = 1-0.001
		self.range_day = 1
		self.regression_day = [2,5]
		
		# short flag = 1 表示可以做空
		short_flag = 1
		
		self.price_list = []
		self.volume_list = []

		for ii in range(len(bench_mark_list)):
			self.price_list.append(list(zip(*stock_data_list[ii])[self.price_index]))
			self.volume_list.append(list(zip(*stock_data_list[ii])[self.volume_index]))

		self.plot(self.price_list,bench_mark_list,self.range_day,short_flag)

		#self.run(bench_mark_list)

		print "done\n"
	def __init__(self):
		file_path = "input/HighLowPoint/user_data.xlsx"

		stock_code_list,stock_name_list,stock_buy_price_list,stock_sell_price_list = LoadUserData.load_user_data(file_path)
		stock_daily_data_list = LoadData.get_daily_stock_data(stock_code_list)
		self.fall_end_flag = []
		self.rise_end_flag = []

		print "begin running\n"
		self.run(stock_code_list,stock_buy_price_list,stock_sell_price_list)
	def get_high_low_points(self,stock_code_list):
		msg = '''<html> <tr>Trend inverse reminder from H&L Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">'''
		bar_size = [5,30,60]
		column_num = [5,9,13]
		threshold = [0.03,0.05,0.15]
		send_email_flag = False
		for ii in range(len(bar_size)):
			if bar_size[ii]==60:
				stock_intraday_data = LoadData.get_daily_stock_data(stock_code_list,"20100101")
				msg = msg +''' <tr><td rowspan="2">'''  + ''' daily </td>'''
			else:
				stock_intraday_data = LoadData.get_intraday_stock_data(stock_code_list,bar_size=bar_size[ii],delta_days = 365)
				msg = msg +''' <tr><td rowspan="2">''' +str(bar_size[ii]) + ''' min </td>'''
			high_point_index_list,high_point_list,high_point_time_list,low_point_index_list,low_point_list,low_point_time_list = HighLowPoint.get_high_low_points_list(stock_intraday_data,threshold[ii])
			
			
			fall_end_list = []
			rise_end_lsit = []
			fall_end_msg = ""
			rise_end_msg = ""
			for jj in range(len(stock_code_list)):

				self.write_data_to_file(column_num[ii],jj,high_point_list[jj][-1],high_point_time_list[jj][-1],low_point_list[jj][-1],low_point_time_list[jj][-1])
				
				temp_msg_fall_end, temp_msg_rise_end = self.judge_trend_inverse(high_point_list[jj],low_point_list[jj],self.current_price[jj]) 

				if temp_msg_fall_end ==True:
					fall_end_list.append(stock_code_list[jj])
					send_email_flag = True
				if temp_msg_rise_end == True:
					rise_end_lsit.append(stock_code_list[jj])
					send_email_flag = True
			for item in fall_end_list:
				fall_end_msg = fall_end_msg + item + " "
			for item in rise_end_lsit:
				rise_end_msg = rise_end_msg + item +" "

			msg = msg +"<td>" + "Falling End" + "</td><td>"+fall_end_msg +"</td></tr><tr><td> Rising End </td><td>"+rise_end_msg+"</td></tr> \n"
		msg = msg +" </table></html>"
		print msg
		if send_email_flag == True:
			a = SendEmail.Send_Email("Trend inverse reminder from H&L Model",msg)
			print a.isSend
示例#6
0
    def __init__(self):
        file_path = "input/HighLowPoint/user_data.xlsx"

        stock_code_list, stock_name_list, stock_buy_price_list, stock_sell_price_list = LoadUserData.load_user_data(
            file_path)
        stock_daily_data_list = LoadData.get_daily_stock_data(stock_code_list)
        self.fall_end_flag = []
        self.rise_end_flag = []

        print "begin running\n"
        self.run(stock_code_list, stock_buy_price_list, stock_sell_price_list)
	def run(self,stock_code_list,stock_buy_price_list,stock_sell_price_list):

		for ii in range(60):
			print "the " + str(ii) + " th is begining"
			self.current_price = LoadData.get_realtime_price(stock_code_list)
			print self.current_price

			self.get_high_low_points(stock_code_list)
			
			#self.stock_price_reminder(stock_code_list,stock_buy_price_list,stock_sell_price_list)
			print "the "+ str(ii) + " th is done."
			time.sleep(300)
示例#8
0
    def run(self, stock_code_list, stock_buy_price_list,
            stock_sell_price_list):

        for ii in range(60):
            print "the " + str(ii) + " th is begining"
            self.current_price = LoadData.get_realtime_price(stock_code_list)
            print self.current_price

            self.get_high_low_points(stock_code_list)

            #self.stock_price_reminder(stock_code_list,stock_buy_price_list,stock_sell_price_list)
            print "the " + str(ii) + " th is done."
            time.sleep(300)
示例#9
0
    def __init__(self,
                 ma_days=200,
                 start_date="19950101",
                 init_days=60,
                 short_flag=0):

        input_file_path = "../input/DeviationFromMA/user_data.xlsx"
        self.user_stock_code_list, self.user_stock_name_list = self.load_excel(
            input_file_path)
        self.user_stock_data_list = LoadData.get_daily_stock_data(
            self.user_stock_code_list, start_date)
        self.short_flag = short_flag
        self.trade_cost = 1 - 0.001
        self.ma_days = ma_days
        self.user_stock_price_data_list = []
        self.user_stock_uniform_price_list = []
        self.user_stock_datetime_list = []
        self.user_stock_price_data_old_list = []
        for ii in range(len(self.user_stock_code_list)):
            self.user_stock_price_data_list.append(
                (list(zip(*self.user_stock_data_list[ii])[4]))[init_days:])
            self.user_stock_price_data_old_list.append(
                list(zip(*self.user_stock_data_list[ii])[4]))
            self.user_stock_datetime_list.append(
                (list(zip(*self.user_stock_data_list[ii])[0]))[init_days:])
            self.user_stock_uniform_price_list.append(
                CalcIndex.Uniform_Price(self.user_stock_price_data_list[ii]))

        self.price_ma_list = CalcIndex.Calc_MA(
            self.user_stock_price_data_old_list, int(ma_days), int(init_days))

        self.diviation_from_ma_list, self.diviation_from_ma_std_list = self.calc_diviation_from_ma(
            ma_days)

        self.ma_dict = {60: 10, 120: 20, 200: 60, 250: 60}

        self.diviation_ma_list = CalcIndex.Calc_MA(self.diviation_from_ma_list,
                                                   self.ma_dict[self.ma_days])

        #self.plot(ma_days)
        #self.eveluate_index(ma_days)

        long_stand_deviation = {60: -0.5, 120: -0.1, 200: -0.15, 250: -0.2}
        short_stand_deviation = {60: 0.5, 120: 0.1, 200: 0.15, 250: 0.2}

        self.back_test_info = self.back_test(long_stand_deviation[ma_days],
                                             short_stand_deviation[ma_days])
        self.plot_back_test(ma_days)

        print "done."
	def __init__(self):
		file_path = "input/user_data.xlsx"
		self.user_stock_code_list,self.user_stock_name_list,user_stock_buy_point_list,user_stock_sell_point_list = LoadUserData.load_user_data(file_path)

		self.daily_stock_data_all = LoadData.get_daily_stock_data(self.user_stock_code_list,"20150101")
		#存放收盘价
		self.daily_stock_data = []

		for ii in range(len(self.daily_stock_data_all)):
			temp = []
			for jj in range(len(self.daily_stock_data_all[ii])):
				temp.append(self.daily_stock_data_all[ii][jj][4])
			self.daily_stock_data.append(temp)
		#print self.daily_stock_data[0][-1],self.daily_stock_data[1][-1]
		self.reminder_info= []
		self.run()
示例#11
0
    def __init__(self):
        file_path = "input/user_data.xlsx"
        self.user_stock_code_list, self.user_stock_name_list, user_stock_buy_point_list, user_stock_sell_point_list = LoadUserData.load_user_data(
            file_path)

        self.daily_stock_data_all = LoadData.get_daily_stock_data(
            self.user_stock_code_list, "20150101")
        #存放收盘价
        self.daily_stock_data = []

        for ii in range(len(self.daily_stock_data_all)):
            temp = []
            for jj in range(len(self.daily_stock_data_all[ii])):
                temp.append(self.daily_stock_data_all[ii][jj][4])
            self.daily_stock_data.append(temp)
        #print self.daily_stock_data[0][-1],self.daily_stock_data[1][-1]
        self.reminder_info = []
        self.run()
示例#12
0
    def __init__(self):
        input_file_path = "input/PriceVolume/bench_mark.xlsx"

        bench_mark_list, self.bench_mark_name_list = self.load_bench_mark_data(
            input_file_path)

        #bench_mark_list = ["000016.SH","000001.SH","000300.SH","399006.SZ","399905.SZ"]
        #self.bench_mark_name_list = [u"上证50",u"上证综指",u"沪深300",u"创业板指",u"中证500"]
        #bench_mark_list = ["0806.HK","QIHU.N"]
        #self.bench_mark_name_list = [u"惠理",u"奇虎"]
        stock_data_list = LoadData.get_daily_stock_data(
            bench_mark_list, "20110101")
        self.price_index = 4
        self.volume_index = 5

        self.trade_cost = 1 - 0.001
        self.range_day = 1
        self.regression_day = [2, 5]

        # short flag = 1 表示可以做空
        short_flag = 1

        self.price_list = []
        self.volume_list = []

        for ii in range(len(bench_mark_list)):
            self.price_list.append(
                list(zip(*stock_data_list[ii])[self.price_index]))
            self.volume_list.append(
                list(zip(*stock_data_list[ii])[self.volume_index]))

        self.plot(self.price_list, bench_mark_list, self.range_day, short_flag)

        #self.run(bench_mark_list)

        print "done\n"
示例#13
0
	def __init__(self,ma_days=200,start_date="19950101",init_days = 60,short_flag =0):
		
		input_file_path = "../input/DeviationFromMA/user_data.xlsx"
		self.user_stock_code_list,self.user_stock_name_list = self.load_excel(input_file_path)
		self.user_stock_data_list = LoadData.get_daily_stock_data(self.user_stock_code_list,start_date)
		self.short_flag = short_flag
		self.trade_cost = 1-0.001
		self.ma_days = ma_days
		self.user_stock_price_data_list = []
		self.user_stock_uniform_price_list =[]
		self.user_stock_datetime_list = []
		self.user_stock_price_data_old_list =[]
		for ii in range(len(self.user_stock_code_list)):
			self.user_stock_price_data_list.append((list(zip(*self.user_stock_data_list[ii])[4]))[init_days:])
			self.user_stock_price_data_old_list.append(list(zip(*self.user_stock_data_list[ii])[4]))
			self.user_stock_datetime_list.append((list(zip(*self.user_stock_data_list[ii])[0]))[init_days:])
			self.user_stock_uniform_price_list.append(CalcIndex.Uniform_Price(self.user_stock_price_data_list[ii]))

		self.price_ma_list = CalcIndex.Calc_MA(self.user_stock_price_data_old_list,int(ma_days),int(init_days))

		self.diviation_from_ma_list,self.diviation_from_ma_std_list = self.calc_diviation_from_ma(ma_days)

		self.ma_dict ={60:10,120:20,200:60,250:60}
		
		self.diviation_ma_list = CalcIndex.Calc_MA(self.diviation_from_ma_list,self.ma_dict[self.ma_days])

		#self.plot(ma_days)
		#self.eveluate_index(ma_days)

		long_stand_deviation = {60:-0.5,120:-0.1,200:-0.15,250:-0.2}
		short_stand_deviation = {60:0.5,120:0.1,200:0.15,250:0.2}

		self.back_test_info = self.back_test(long_stand_deviation[ma_days],short_stand_deviation[ma_days])
		self.plot_back_test(ma_days)

		print "done."
示例#14
0
	def run(self,bench_mark_list,short_flag = 1,range_day =1):
		realtime_price_list,realtime_volume_list = LoadData.get_realtime_price_and_volume(bench_mark_list)
		print bench_mark_list
		print realtime_price_list
		print realtime_volume_list

		reminder_info_flag_list = []
		is_send_email = False


		for ii in range(len(bench_mark_list)):

			if float(datetime.today().hour) >=15:
				self.price_list[ii].pop()
				self.volume_list[ii].pop()
			print "volume",self.volume_list[ii][-1]

		old_action_len = []


		for regression_day in self.regression_day:

			old_action_len_per_rangeday = []
			self.offset = range_day +regression_day -2
			self.slope_price_list = PriceVolume.PriceVolume(self.price_list,range_day,regression_day)
			self.slope_volume_list = PriceVolume.PriceVolume(self.volume_list,range_day,regression_day)
			action_index_list,action_type_list,revenue_list = self.backtest(self.offset,short_flag)

			for ii in range(len(action_type_list)):
				old_action_len_per_rangeday.append(len(action_index_list[ii]))
			old_action_len.append(old_action_len_per_rangeday)

		for ii in range(len(bench_mark_list)):
			self.price_list[ii].append(realtime_price_list[ii])
			self.volume_list[ii].append(realtime_volume_list[ii])
			print "volume new",self.volume_list[ii][-1]

		for ii in range(len(self.regression_day)):

			temp_reminder_info_flag = []
			regression_day = self.regression_day[ii]
			

			self.offset = range_day +regression_day -2
			self.slope_price_list = PriceVolume.PriceVolume(self.price_list,range_day,regression_day)
			self.slope_volume_list = PriceVolume.PriceVolume(self.volume_list,range_day,regression_day)
			action_index_list,action_type_list,revenue_list = self.backtest(self.offset,short_flag)

			for jj in range(len(action_index_list)):
				print len(action_index_list[jj]),old_action_len[ii][jj]
				if len(action_index_list[jj]) - old_action_len[ii][jj] ==1:
					temp_reminder_info_flag.append(action_type_list[jj][-1])
					is_send_email = True
				else:
					temp_reminder_info_flag.append("x")

			reminder_info_flag_list.append(temp_reminder_info_flag)

		print reminder_info_flag_list

		if is_send_email == True:
			msg= '''<html> <tr>Trade  reminder from Price & Volume Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">'''

			for ii in range(len(reminder_info_flag_list)):
				if ii ==0:
					msg = msg + '''<tr><td> ''' + '''   </td>'''
					for jj in range(len(reminder_info_flag_list[ii])):
						msg = msg + ''' <td>  ''' + str(bench_mark_list[jj])+ "</td>"
					msg = msg +  '''  </tr>\n'''
				msg = msg + '''<tr><td>''' + str(self.regression_day[ii]) + ''' day </td>'''
				for jj in range(len(reminder_info_flag_list[ii])):
					if reminder_info_flag_list[ii][jj] =="b":
						msg = msg + '''<td> long </td>'''
					elif reminder_info_flag_list[ii][jj] =="s":
						if short_flag ==1:
							msg = msg + '''<td> short </td> '''
						else:
							msg = msg + '''<td> close previous long postion </td>'''
					else:
						msg = msg + '''<td> </td> '''

				msg = msg + '''</tr> \n'''
			msg = msg + '''</table></html> '''

			send_email = SendEmail.Send_Email("Trade  reminder from Price & Volume Model",msg)
			print send_email.isSend
示例#15
0
# # In[7]:

# class LabelTransform():
#     def __init__(self, classes):
#         self.classes = classes
#     def transform(self, label):
#         label = self.classes[label]
#         return label

# In[10]:
path = './iris.csv'
classes = {"Iris-setosa": 0, "Iris-versicolor": 1, "Iris-virginica": 2}

labeltransform = LabelTransform(classes)
dataset_return = DatasetCSV(path, labeltransform)
load_data_obj = LoadData(dataset_return)

load_data_obj.prepare_data()

print()
# idxs = list(range(len(dataset_return)))
# random.shuffle(idxs)
# train_idx = int(len(dataset_return) * 0.6)
# cv_idx = train_idx + int(len(dataset_return) * 0.2)
# train = idxs[: train_idx]
# cv = idxs[train_idx: cv_idx]
# test = idxs[cv_idx:]
# # In[ ]:

# train_dataset = Subset(dataset_return, train)
# cv_dataset = Subset(dataset_return, cv)
示例#16
0
from model import CreateModel
from data import LoadData
from keras.callbacks import ModelCheckpoint
import tensorflowjs as tfjs
import matplotlib.pyplot as plt

model = CreateModel()
model.compile(optimizer='sgd',
              loss='binary_crossentropy',
              metrics=['binary_accuracy'])
training_data, validation_data = LoadData()
#
## train model
#save_model = ModelCheckpoint('model.h5', save_best_only=True, save_weights_only=True, verbose=1)
#print(f'data generator length: {len(training_data)}')
#model.fit_generator(
#        training_data,
#        validation_data=validation_data,
#        epochs=2,
#        callbacks=[save_model])
#
## fine tuning
#for layer in base_model.layers[:-5]:
#  layer.trainable = False
#model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['binary_accuracy'])
#model.fit_generator(
#        training_data,
#        validation_data=validation_data,
#        epochs=2,
#        callbacks=[save_model])
## save model
示例#17
0
def train(configs):
    """

    """
    #src = T.imatrix()
    src = T.itensor3()
    #tgt = T.ivector()
    tgt = T.imatrix()
    src_mask = T.ivector()
    seg = segmentor_model(**configs)
    seg.apply(src , src_mask , tgt)
    cost = seg.cost
    params = seg.params
    params_regular = seg.L1 * 1e-6 + seg.L2 * 1e-6
    grads = T.grad(cost + params_regular , params)
    updates = adadelta(params , grads)

    #train_fn = theano.function([src , src_mask , tgt] , [cost , seg.emb , seg.hidden_output ,
    #                           seg.log_output , seg.src_mask , seg.tgt , seg.log] , updates=updates , on_unused_input='ignore')
    train_fn = theano.function([src , src_mask , tgt] , [cost] , updates=updates , on_unused_input='ignore')
    test_fn = theano.function([src , src_mask , tgt] , [cost , seg.log])

    loadData = LoadData(**configs)
    train_x , train_mask , train_y = loadData.loadTrain()
    valid_x , valid_x_src , valid_x_length , valid_y = loadData.loadValid()
    #test_x , test_y = loadData.loadTest()

    #init some parameters
    max_epochs = configs['finish_after']
    batch_size = configs['batch_size']
    window_size = configs['window_size']
    iters = 0
    valid_cost_best = -1
    test_cost_best = -1
    epoch_best = -1
    iters_best = -1
    cnt = 0
    batch_x = []
    batch_mask = []
    batch_y = []

    R , P , F1 = evaluate(loadData , test_fn , window_size , valid_x , valid_x_src , valid_x_length , valid_y , "valid")
    print "R= " , R , " P= " , P , " F1= " , F1
    for epoch in range(max_epochs):
        for i , (x , mask , y) in enumerate(zip(train_x , train_mask , train_y)):
            xx = contextwin(x , window_size)
            if cnt >= batch_size - 1:
                batch_x.append(xx)
                batch_mask.append(mask)
                batch_y.append(y)
                # batch_x : batch_size * sentence_size * window_size
                # batch_mask : batch_size
                # batch_y : batch_size * sentence_size
                # run_cost , k1 , k2 , k3 , k4 , k5 , k6 = train_fn(batch_x , batch_mask , batch_y)
                run_cost = train_fn(batch_x , batch_mask , batch_y)
                #print run_cost , k1.shape , k2.shape , k3.shape , k4.shape , k5.shape , k6
                #print "epoch: " , epoch , " iters: " , iters , " cost: " , run_cost
                cnt = 0
                batch_x = []
                batch_mask = []
                batch_y = []
            else:
                batch_x.append(xx)
                batch_mask.append(mask)
                batch_y.append(y)
                cnt += 1
            iters += 1
            if iters % configs['save_freq'] == 0:
                R , P , F1 = evaluate(loadData , test_fn , window_size , valid_x , valid_x_src , valid_x_length , valid_y , "valid")
                print "epoch: " , epoch , "R= " , R , " P= " , P , " F1= " , F1
                lm.save()
        if batch_x:
            run_cost = train_fn(batch_x , batch_mask , batch_y)
            print "epoch: " , epoch , " iters: " , iters , " cost: " , run_cost
        batch_x = []
        batch_mask = []
        batch_y = []
        cnt = 0
        R , P , F1 = evaluate(loadData , test_fn , window_size , valid_x , valid_x_src , valid_x_length , valid_y , "valid")
        print "epoch: " , epoch , "R= " , R , " P= " , P , " F1= " , F1
示例#18
0
文件: ml.py 项目: hduongtrong/Otto
        logger.info("Fold %i Accuracy: %.4f", i,
                    model.score(X[valid_idx], y[valid_idx]))
        res[valid_idx, :] = model.predict_proba(X[valid_idx])
        logger.info("Fold %i Log Loss: %.4f", i,
                    log_loss(y[valid_idx], res[valid_idx]))
        i += 1
        if short: break
    if short: return -log_loss(y[valid_idx], res[valid_idx])
    yhat = np.argmax(res, axis=1) + 1
    Y = np.array([int(i[-1]) for i in y])
    logger.info("CV Accuracy: %.5f", accuracy_score(Y, yhat))
    logger.info("CV Log Loss: %.4f", log_loss(y, res))
    return res, -log_loss(y, res)


_, y, _ = LoadData()
del _


def OptSVC(C, gamma):
    model = SVC(C=C, gamma=gamma, probability=True)
    return ReportPerfCV(model, "text", y)


def OptBTC(step_size=.5,
           max_iterations=100,
           row_subsample=.9,
           column_subsample=.9,
           max_depth=8):
    model = BoostedTreesClassifier(step_size=step_size,
                                   max_iterations=max_iterations,
    def creepy_data_from_wind_to_local(self):

        for ii in range(len(self.user_stock_name_list)):
            self.path_is_exist(self.user_stock_name_list[ii])
            data_base_path = sys.path[0] + "\\" + "data" + "\\" + "data_base"
            stock_fold_path = data_base_path + "\\" + self.user_stock_name_list[
                ii]

            for data_type in self.data_type_list:

                data_path = stock_fold_path + "\\" + data_type
                latest_date = self.get_latest_date_in_fold(data_path)
                print latest_date
                temp_stock_name = []
                temp_stock_name.append(self.user_stock_name_list[ii])

                delta_day = (
                    datetime.now() -
                    datetime(int(latest_date[0:4]), int(latest_date[4:6]),
                             int(latest_date[6:8]))).days
                print latest_date, delta_day, self.user_stock_name_list[ii]

                pos = self.user_stock_name_list[ii].split(".")[1]
                print pos
                if data_type == "daily":

                    stock_daily_data = LoadData.get_daily_stock_data(
                        temp_stock_name, latest_date)
                    for jj in range(len(stock_daily_data[0])):

                        output_data_path = data_path + "\\" + stock_daily_data[
                            0][jj][0] + ".txt"
                        WriteToFile.write_to_file(output_data_path,
                                                  stock_daily_data[0][jj])

                if pos != "SZ" and pos != "SH":
                    break

                if float(delta_day) > 3 * 365:
                    delta_day = 1095
                if data_type == "60min":
                    print "aaa"

                    stock_60_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=60, delta_days=delta_day)
                    date_60_min_index = self.get_day_sperate_index(
                        stock_60_min_data)
                    print stock_60_min_data
                    print date_60_min_index

                    for jj in range(len(date_60_min_index) - 1):
                        file_path = data_path + "\\" + stock_60_min_data[0][
                            date_60_min_index[jj]][0][0:8] + ".txt"
                        WriteToFile.write_list_to_file(
                            file_path, stock_60_min_data[0]
                            [date_60_min_index[jj]:date_60_min_index[jj + 1]])

                elif data_type == "30min":
                    stock_30_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=30, delta_days=delta_day)
                    date_30_min_index = self.get_day_sperate_index(
                        stock_30_min_data)

                    for jj in range(len(date_30_min_index) - 1):
                        file_path = data_path + "\\" + stock_30_min_data[0][
                            date_30_min_index[jj]][0][0:8] + ".txt"
                        WriteToFile.write_list_to_file(
                            file_path, stock_30_min_data[0]
                            [date_30_min_index[jj]:date_30_min_index[jj + 1]])
                elif data_type == "15min":
                    stock_15_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=15, delta_days=delta_day)
                    date_15_min_index = self.get_day_sperate_index(
                        stock_15_min_data)

                    for jj in range(len(date_15_min_index) - 1):
                        file_path = data_path + "\\" + stock_15_min_data[0][
                            date_15_min_index[jj]][0][0:8] + ".txt"
                        WriteToFile.write_list_to_file(
                            file_path, stock_15_min_data[0]
                            [date_15_min_index[jj]:date_15_min_index[jj + 1]])

                elif data_type == "5min":
                    stock_5_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=5, delta_days=delta_day)
                    date_5_min_index = self.get_day_sperate_index(
                        stock_5_min_data)

                    for jj in range(len(date_5_min_index) - 1):
                        file_path = data_path + "\\" + stock_5_min_data[0][
                            date_5_min_index[jj]][0][0:8] + ".txt"

                        WriteToFile.write_list_to_file(
                            file_path, stock_5_min_data[0]
                            [date_5_min_index[jj]:date_5_min_index[jj + 1]])
    def creepy_data_from_wind_to_local(self):

        for ii in range(len(self.user_stock_name_list)):
            self.path_is_exist(self.user_stock_name_list[ii])
            data_base_path = sys.path[0] + "\\" + "data" + "\\" + "data_base"
            stock_fold_path = data_base_path + "\\" + self.user_stock_name_list[ii]

            for data_type in self.data_type_list:

                data_path = stock_fold_path + "\\" + data_type
                latest_date = self.get_latest_date_in_fold(data_path)
                print latest_date
                temp_stock_name = []
                temp_stock_name.append(self.user_stock_name_list[ii])

                delta_day = (
                    datetime.now() - datetime(int(latest_date[0:4]), int(latest_date[4:6]), int(latest_date[6:8]))
                ).days
                print latest_date, delta_day, self.user_stock_name_list[ii]

                pos = self.user_stock_name_list[ii].split(".")[1]
                print pos
                if data_type == "daily":

                    stock_daily_data = LoadData.get_daily_stock_data(temp_stock_name, latest_date)
                    for jj in range(len(stock_daily_data[0])):

                        output_data_path = data_path + "\\" + stock_daily_data[0][jj][0] + ".txt"
                        WriteToFile.write_to_file(output_data_path, stock_daily_data[0][jj])

                if pos != "SZ" and pos != "SH":
                    break

                if float(delta_day) > 3 * 365:
                    delta_day = 1095
                if data_type == "60min":
                    print "aaa"

                    stock_60_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=60, delta_days=delta_day
                    )
                    date_60_min_index = self.get_day_sperate_index(stock_60_min_data)
                    print stock_60_min_data
                    print date_60_min_index

                    for jj in range(len(date_60_min_index) - 1):
                        file_path = data_path + "\\" + stock_60_min_data[0][date_60_min_index[jj]][0][0:8] + ".txt"
                        WriteToFile.write_list_to_file(
                            file_path, stock_60_min_data[0][date_60_min_index[jj] : date_60_min_index[jj + 1]]
                        )

                elif data_type == "30min":
                    stock_30_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=30, delta_days=delta_day
                    )
                    date_30_min_index = self.get_day_sperate_index(stock_30_min_data)

                    for jj in range(len(date_30_min_index) - 1):
                        file_path = data_path + "\\" + stock_30_min_data[0][date_30_min_index[jj]][0][0:8] + ".txt"
                        WriteToFile.write_list_to_file(
                            file_path, stock_30_min_data[0][date_30_min_index[jj] : date_30_min_index[jj + 1]]
                        )
                elif data_type == "15min":
                    stock_15_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=15, delta_days=delta_day
                    )
                    date_15_min_index = self.get_day_sperate_index(stock_15_min_data)

                    for jj in range(len(date_15_min_index) - 1):
                        file_path = data_path + "\\" + stock_15_min_data[0][date_15_min_index[jj]][0][0:8] + ".txt"
                        WriteToFile.write_list_to_file(
                            file_path, stock_15_min_data[0][date_15_min_index[jj] : date_15_min_index[jj + 1]]
                        )

                elif data_type == "5min":
                    stock_5_min_data = LoadData.get_intraday_stock_data(
                        temp_stock_name, bar_size=5, delta_days=delta_day
                    )
                    date_5_min_index = self.get_day_sperate_index(stock_5_min_data)

                    for jj in range(len(date_5_min_index) - 1):
                        file_path = data_path + "\\" + stock_5_min_data[0][date_5_min_index[jj]][0][0:8] + ".txt"

                        WriteToFile.write_list_to_file(
                            file_path, stock_5_min_data[0][date_5_min_index[jj] : date_5_min_index[jj + 1]]
                        )
示例#21
0
 def load_data(self):
     print('Loading Dataset...')
     self.x_right, self.x_left, self.y_train = LoadData().load()
示例#22
0
# -*- coding: utf-8 -*-
# File Name: main.py
# Author: Changsheng Zhang
# mail: [email protected]
# Created Time: Tue Jul  7 10:09:08 2015

#########################################################################

import os
import sys
import strategy.test as test
import data.LoadData as LoadData
if __name__ == '__main__':
	
	b = LoadData.get_daily_stock_data(["600000.SH"])
	print b[0][0]
	

示例#23
0
# Global variables
l_value = [4]
thresholds = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
split = [10, 20, 30, 40, 50, 60, 70, 80, 90]

m = 0
train1 = []
train0 = []
data_vector = []
test1 = []
test0 = []
weights = []
weights_history = []
dev_data = []
temp = []
data = LoadData()


def logistic_function(x, w):  # sigmoid function
    return expit(
        np.dot(w, x[:-1])
    )  # same as 1.0/(1 + np.exp(-np.dot(weights, x[:-1]))) without overflow warning


# last element of x[] = category (or y)


def train(train_total):  # train
    global train0, train1, m, data_vector, weights, dev_data, temp
    if len(temp) == 0:
        data.createDictionary()
示例#24
0
    def run(self, bench_mark_list, short_flag=1, range_day=1):
        realtime_price_list, realtime_volume_list = LoadData.get_realtime_price_and_volume(
            bench_mark_list)
        print bench_mark_list
        print realtime_price_list
        print realtime_volume_list

        reminder_info_flag_list = []
        is_send_email = False

        for ii in range(len(bench_mark_list)):

            if float(datetime.today().hour) >= 15:
                self.price_list[ii].pop()
                self.volume_list[ii].pop()
            print "volume", self.volume_list[ii][-1]

        old_action_len = []

        for regression_day in self.regression_day:

            old_action_len_per_rangeday = []
            self.offset = range_day + regression_day - 2
            self.slope_price_list = PriceVolume.PriceVolume(
                self.price_list, range_day, regression_day)
            self.slope_volume_list = PriceVolume.PriceVolume(
                self.volume_list, range_day, regression_day)
            action_index_list, action_type_list, revenue_list = self.backtest(
                self.offset, short_flag)

            for ii in range(len(action_type_list)):
                old_action_len_per_rangeday.append(len(action_index_list[ii]))
            old_action_len.append(old_action_len_per_rangeday)

        for ii in range(len(bench_mark_list)):
            self.price_list[ii].append(realtime_price_list[ii])
            self.volume_list[ii].append(realtime_volume_list[ii])
            print "volume new", self.volume_list[ii][-1]

        for ii in range(len(self.regression_day)):

            temp_reminder_info_flag = []
            regression_day = self.regression_day[ii]

            self.offset = range_day + regression_day - 2
            self.slope_price_list = PriceVolume.PriceVolume(
                self.price_list, range_day, regression_day)
            self.slope_volume_list = PriceVolume.PriceVolume(
                self.volume_list, range_day, regression_day)
            action_index_list, action_type_list, revenue_list = self.backtest(
                self.offset, short_flag)

            for jj in range(len(action_index_list)):
                print len(action_index_list[jj]), old_action_len[ii][jj]
                if len(action_index_list[jj]) - old_action_len[ii][jj] == 1:
                    temp_reminder_info_flag.append(action_type_list[jj][-1])
                    is_send_email = True
                else:
                    temp_reminder_info_flag.append("x")

            reminder_info_flag_list.append(temp_reminder_info_flag)

        print reminder_info_flag_list

        if is_send_email == True:
            msg = '''<html> <tr>Trade  reminder from Price & Volume Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">'''

            for ii in range(len(reminder_info_flag_list)):
                if ii == 0:
                    msg = msg + '''<tr><td> ''' + '''   </td>'''
                    for jj in range(len(reminder_info_flag_list[ii])):
                        msg = msg + ''' <td>  ''' + str(
                            bench_mark_list[jj]) + "</td>"
                    msg = msg + '''  </tr>\n'''
                msg = msg + '''<tr><td>''' + str(
                    self.regression_day[ii]) + ''' day </td>'''
                for jj in range(len(reminder_info_flag_list[ii])):
                    if reminder_info_flag_list[ii][jj] == "b":
                        msg = msg + '''<td> long </td>'''
                    elif reminder_info_flag_list[ii][jj] == "s":
                        if short_flag == 1:
                            msg = msg + '''<td> short </td> '''
                        else:
                            msg = msg + '''<td> close previous long postion </td>'''
                    else:
                        msg = msg + '''<td> </td> '''

                msg = msg + '''</tr> \n'''
            msg = msg + '''</table></html> '''

            send_email = SendEmail.Send_Email(
                "Trade  reminder from Price & Volume Model", msg)
            print send_email.isSend