Esempio n. 1
0
 def Draw(self, collectionName):
   self.dfW['_id'] = self.dfW.index
   util.SaveMongoDB_DF(self.dfW, 'stock_result', collectionName)
   self.dfW['profit'].fillna(method='ffill', inplace=True)
   self.dfW['total'].fillna(method='ffill', inplace=True)
   self.dfW[['total', 'capital', ]].plot()
   plt.show()
Esempio n. 2
0
    def Run(codes):
        out = []
        for one in codes:
            try:
                baseCounter = 0
                hitCounter = 0
                firstQuarter = None
                lastQuarter = None
                baseCounter2010 = 0
                hitCounter2010 = 0
                firstQuarter2010 = None
                lastQuarter2010 = None
                df = util.LoadData('stock',
                                   'yjbg2-' + one['_id'],
                                   condition={},
                                   sort=[('_id', 1)])
                for quarter, row in df.iterrows():
                    id = datetime.strptime(quarter, '%Y-%m-%d')
                    value = util.String2Number(row['sjltz'])
                    if not np.isnan(value):
                        if firstQuarter is None:
                            firstQuarter = id
                        lastQuarter = id
                        baseCounter += 1
                        if id.year >= 2010:
                            if firstQuarter2010 is None:
                                firstQuarter2010 = id
                            lastQuarter2010 = id
                            baseCounter2010 += 1
                        if value < -10:
                            hitCounter += 1
                            if id.year >= 2010:
                                hitCounter2010 += 1

                percent = 0
                percent2010 = 0
                if baseCounter > 0:
                    percent = hitCounter / baseCounter
                if baseCounter2010 > 0:
                    percent2010 = hitCounter2010 / baseCounter2010
                out.append({
                    '_id': one['_id'],
                    'begin': firstQuarter,
                    'end': lastQuarter,
                    'base': baseCounter,
                    'hit': hitCounter,
                    'percent': percent,
                    'begin2010': firstQuarter2010,
                    'end2010': lastQuarter2010,
                    'base2010': baseCounter2010,
                    'hit2010': hitCounter2010,
                    'percent2010': percent2010
                })
            except Exception as e:
                util.PrintException(e)
        dfOut = pd.DataFrame(out)
        util.SaveMongoDB_DF(dfOut, 'stock_statistics2',
                            'dangerousQuarterRatio')
Esempio n. 3
0
    def Run(codes):
        #计算全财报的,计算2010年作为开始年份的
        for one in codes:
            try:
                out = []
                # out2010 = []
                beforeSJLTZ = 0
                beforeContinuityTrend = 0
                # beforeSJLTZ2010 = 0
                beforeContinuityTrend2010 = 0
                df = util.LoadData('stock',
                                   'yjbg-' + one,
                                   condition={},
                                   sort=[('_id', 1)])
                for quarter, row in df.iterrows():
                    id = datetime.strptime(quarter, '%Y-%m-%d')
                    value = util.String2Number(row['sjltz'])
                    if not np.isnan(value):
                        nowTrend = None
                        #这个条件不过分,一个公司即使业务完全停止增长,考虑到通胀也该在数值上是增长的
                        if value < 0:
                            nowTrend = -1
                            # nowTrend2010 = -1
                        elif value - beforeSJLTZ < 0:
                            nowTrend = -0.5
                            # nowTrend2010 = -0.5
                        else:
                            nowTrend = 1
                            # nowTrend2010 = 1
                        beforeSJLTZ = value
                        nowContinuityTrend = beforeContinuityTrend + nowTrend
                        beforeContinuityTrend = nowContinuityTrend
                        out.append({
                            '_id': id,
                            'nowPMT': nowTrend,
                            'continuityPMT': nowContinuityTrend
                        })
                        if id.year >= 2010:
                            nowContinuityTrend2010 = beforeContinuityTrend2010 + nowTrend
                            beforeContinuityTrend2010 = nowContinuityTrend2010
                            out[-1].update({
                                'continuityPMTFrom2010':
                                nowContinuityTrend2010
                            })

                dfOut = pd.DataFrame(out)
                util.SaveMongoDB_DF(dfOut, 'stock_statistics', one)
            except Exception as e:
                print(e)