示例#1
0
    def _getBenchmarkData(self, indexID, startTimeStamp, endTimeStamp):

        self.logger.info(
            "Starting load benchmark {0:s} daily bar data from DX data center..."
            .format(indexID))
        indexIDComp = indexID.split('.')

        if indexIDComp[1] == 'zicn':
            indexData = api.GetIndexBarEOD(indexIDComp[0],
                                           startDate=startTimeStamp,
                                           endDate=endTimeStamp,
                                           forceUpdate=self.forceUpdate)
        elif indexIDComp[1] == 'ccfx' or indexIDComp[
                1] == 'xzce' or indexIDComp[1] == 'xdce' or indexIDComp[
                    1] == 'xsge':
            indexData = api.GetFutureBarEODContinuing(
                indexIDComp[0],
                startDate=startTimeStamp,
                endDate=endTimeStamp,
                forceUpdate=self.forceUpdate)
        elif indexIDComp[1] == 'xshg' or indexIDComp[1] == 'xshe':
            indexData = api.GetEquityBarEOD(indexIDComp[0],
                                            startDate=startTimeStamp,
                                            endDate=endTimeStamp,
                                            forceUpdate=self.forceUpdate,
                                            baseDate='end')
        indexData = indexData[['closePrice']]
        indexData.columns = ['close']
        indexData.index = pd.to_datetime(indexData.index.date)
        indexData['return'] = np.log(indexData['close'] /
                                     indexData['close'].shift(1))
        indexData = indexData.dropna()
        self.benchmarkData = indexData

        self.logger.info("Benchmark data loading finished!")
示例#2
0
def get_equity_eod(instruments, start_date, end_date):
    if Settings.data_source == DataSource.DXDataCenter:
        data = api.GetEquityBarEOD(instrumentIDList=instruments,
                                   startDate=start_date,
                                   endDate=end_date,
                                   field='closePrice',
                                   instrumentIDasCol=True,
                                   baseDate='end')
    elif Settings.data_source == DataSource.DataYes:
        import os
        import tushare as ts

        try:
            ts.set_token(os.environ['DATAYES_TOKEN'])
        except KeyError:
            raise

        mt = ts.Market()
        res = []
        for ins in instruments:
            data = mt.MktEqud(ticker=ins,
                              beginDate=start_date.replace('-', ''),
                              endDate=end_date.replace('-', ''),
                              field='tradeDate,ticker,closePrice')
            res.append(data)

        data = pd.concat(res)
        data['tradeDate'] = pd.to_datetime(data['tradeDate'], format='%Y-%m-%d')
        data['ticker'] = data['ticker'].apply(lambda x: '{0:06d}'.format(x))
        data.set_index(['tradeDate', 'ticker'], inplace=True, verify_integrity=True)
        data = data.unstack(level=-1)

    return data
示例#3
0
    turnOverRate.name = 'turnover_rate'
    turnOverRate.index.name = 'date'

    return pd.DataFrame(turnOverRate)


@plotting_context
def createAllTearSheet(positions, transcations=None, prices=None, returns=None, benchmark=None, turn_over=None, tc_cost=0., freq='M',  plot=True):
    perf_metric, perf_df, rollingRisk = createPerformanceTearSheet(prices=prices,
                                                                   returns=returns,
                                                                   benchmark=benchmark,
                                                                   turn_over=turn_over,
                                                                   tc_cost=tc_cost,
                                                                   plot=plot)
    createPostionTearSheet(positions=positions, plot=plot, freq=freq, convert='raw')
    if transcations is not None or turn_over is not None:
        createTranscationTearSheet(positions=positions, transactions=transcations, turn_over=turn_over, freq=freq, plot=plot)
    return perf_metric, perf_df, rollingRisk


if __name__ == "__main__":
    from DataAPI import api
    from VisualPortfolio import Settings
    from VisualPortfolio import DataSource

    Settings.set_source(DataSource.DXDataCenter)

    data = api.GetEquityBarEOD('600000', '2012-01-01', '2015-10-01')

    createPerformanceTearSheet(data['closePrice'], benchmark='000300.zicn')
    plt.show()