コード例 #1
0
ファイル: predictorModel.py プロジェクト: psrok1/KerasWIG
    def predictNextValue(self):
        if self.last_day is None:
            print "No data in model!"
            return

        stockData, x_data, y_data = self.__getStockData(to_date = csvmgr.stockDayToDatetime(self.last_day))
        print "Prediction: Value for "+self.csv_id+" will "\
              +("increase" if self.model.predict_classes(x_data, batch_size=self.batch_size)[-1][0] else "decrease")
コード例 #2
0
ファイル: predictorRegular.py プロジェクト: psrok1/KerasWIG
    def feedWithStockData(self, limit_date = None, fresh = False):
        if self.last_day is None:
            stockData, x_data, y_data = self.__getStockData(to_date = limit_date, fresh=fresh)
        else:
            last_date = csvmgr.stockDayToDatetime(self.last_day)
            last_date += timedelta(1)
            stockData, x_data, y_data = self.__getStockData(from_date = last_date, to_date = limit_date, fresh=fresh)

        print "Fitting..."
        self.last_day = csvmgr.getLastDayFromStock(stockData)
コード例 #3
0
ファイル: predictorModel.py プロジェクト: psrok1/KerasWIG
    def feedWithStockData(self, limit_date = None, fresh = False):
        if self.last_day is None:
            stockData, x_data, y_data = self.__getStockData(to_date = limit_date, fresh=fresh)
        else:
            last_date = csvmgr.stockDayToDatetime(self.last_day)
            last_date += timedelta(1)
            stockData, x_data, y_data = self.__getStockData(from_date = last_date, to_date = limit_date, fresh=fresh)

        print "Fitting..."
        self.model.fit(x_data, y_data, batch_size=self.batch_size, nb_epoch=self.nb_epoch,
                        show_accuracy=True)

        self.last_day = csvmgr.getLastDayFromStock(stockData)
コード例 #4
0
ファイル: predictorModel.py プロジェクト: psrok1/KerasWIG
    def __getStockData(self, from_date=None, to_date=None, fresh=False):
        maxlen = self.days_seq
        stockData = csvmgr.getStockData(self.csv_id, force_update=fresh)

        if from_date is None:
            from_date = csvmgr.stockDayToDatetime(csvmgr.getFirstDayFromStock(stockData))
        if to_date is None:
            to_date = csvmgr.stockDayToDatetime(csvmgr.getLastDayFromStock(stockData))

        if (to_date-from_date) <= timedelta(maxlen):
            from_date -= timedelta(maxlen+20)

        stockData = csvmgr.filterStockData(stockData, from_date, to_date)

        print "Getting stock data from "+csvmgr.getFirstDayFromStock(stockData) + " to " + csvmgr.getLastDayFromStock(stockData)

        stockValues = csvmgr.getPricesFromStock(stockData)

        x_data = numpy.array([stockValues[i:i+maxlen] for i in xrange(len(stockValues)-maxlen)])
        y_data = numpy.array([floor(stockValues[i]/stockValues[i-1]) for i in xrange(maxlen,len(stockValues))])

        return stockData, x_data, y_data
コード例 #5
0
ファイル: keraswig.py プロジェクト: psrok1/KerasWIG
parser_predict = subparsers.add_parser("predict", help="Predict growth of stock prices")
parser_predict.add_argument("name", nargs=1, help="Name of used prediction model")


print("")

args = parser.parse_args()

if args.command == "create":
    model = predictors[args.type[0]](args.name[0])
    if args.description == "":
        args.description = [args.name[0] + " model"]
    model.createModel(args.stock_id[0], args.description[0])
    if args.limitdate != "":
        model.feedWithStockData(limit_date=stockDayToDatetime(args.limitdate))
    else:
        model.feedWithStockData(fresh=True)
    model.saveModel()
elif args.command == "update":
    model = modelLoader(args.name[0])
    if model is None:
        print "Model "+args.name[0]+" doesn't exist!"
    else:
        model.feedWithStockData(fresh=True)
        model.saveModel()
elif args.command == "print":
    model = modelLoader(args.name[0], load_model=False)
    if model is None:
        print "Model "+args.name[0]+" doesn't exist!"
elif args.command == "test":