Exemple #1
0
def test_write_trade_data_ms_sql_server():
    """Tests that trade data can be read from CSV and dumped to MS SQL server
    """

    if not (run_ms_sql_server_tests): return

    database_source = DatabaseSourceMSSQLServer()

    for t in trade_order_list:
        # dump trade_df to SQL test harness database and overwrite
        database_source.convert_csv_to_table(csv_trade_order_mapping[t], None, sql_trade_order_mapping[t],
                                             database_name=test_harness_sql_server_trade_data_database_name,
                                             if_exists_table='replace', market_trade_data='trade')

        trade_order_df_sql = database_source.fetch_trade_order_data(
            start_date=start_date, finish_date=finish_date, ticker=ticker, table_name=sql_trade_order_mapping[t],
            database_name=test_harness_sql_server_trade_data_database_name)

        database_source_csv = DatabaseSourceCSV()

        trade_order_df_csv = database_source_csv.fetch_trade_order_data(
            start_date=start_date, finish_date=finish_date, ticker=ticker, table_name=csv_trade_order_mapping[t])

        comp_fields = ['executed_price', 'notional', 'side']

        # check that the data read back from MS SQL Server matches that from the original CSV
        for c in comp_fields:
            if c in trade_order_df_sql.columns and c in trade_order_df_csv.columns:
                exec_sql = trade_order_df_sql[c]#.dropna()
                exec_csv = trade_order_df_csv[c]#.dropna()

                exec_diff = exec_sql - exec_csv

                assert all(exec_diff < eps)
Exemple #2
0
def test_write_trade_data_sql():
    """Tests that trade data can be read from CSV and dumped to various SQL dialect
    """

    database_source_list, test_harness_trade_database_list, test_harness_data_store_list = _get_db_trade_database_source(
    )

    for i in range(0, len(database_source_list)):

        database_source = database_source_list[i]

        test_harness_trade_database = test_harness_trade_database_list[i]
        test_harness_data_store = test_harness_data_store_list[i]

        for t in trade_order_list:
            # Dump trade_df to SQL test harness database and overwrite
            database_source.convert_csv_to_table(
                csv_trade_order_mapping[t],
                None, (sql_trade_order_mapping[test_harness_data_store])[t],
                test_harness_trade_database,
                if_exists_table='replace',
                market_trade_data='trade')

            trade_order_df_sql = database_source.fetch_trade_order_data(
                start_date=start_date,
                finish_date=finish_date,
                ticker=ticker,
                table_name=sql_trade_order_mapping[test_harness_data_store][t],
                database_name=test_harness_trade_database)

            database_source_csv = DatabaseSourceCSV()

            trade_order_df_csv = database_source_csv.fetch_trade_order_data(
                start_date=start_date,
                finish_date=finish_date,
                ticker=ticker,
                table_name=csv_trade_order_mapping[t])

            comp_fields = ['executed_price', 'notional', 'side']

            # Check that the data read back from SQL database matches that from the original CSV
            for c in comp_fields:
                if c in trade_order_df_sql.columns and c in trade_order_df_csv.columns:
                    exec_sql = trade_order_df_sql[c]  #.dropna()
                    exec_csv = trade_order_df_csv[c]  #.dropna()

                    exec_diff = exec_sql - exec_csv

                    assert all(exec_diff < eps)
def test_fetch_market_trade_data_csv():
    """Tests downloading of market and trade/order data from CSV files
    """

    ### Get market data
    market_loader = Mediator.get_tca_market_trade_loader()

    market_request = MarketRequest(start_date=start_date,
                                   finish_date=finish_date,
                                   ticker=ticker,
                                   data_store=csv_market_data_store)

    market_df = market_loader.get_market_data(market_request)

    assert not(market_df.empty) \
           and market_df.index[0] >= pd.Timestamp(start_date).tz_localize('utc') \
           and market_df.index[-1] <= pd.Timestamp(finish_date).tz_localize('utc')

    # For a high level trade data request, we need to use TCA request, because it usually involves some
    # market data download (we are assuming that the market data is being downloaded from our arctic database)
    # eg. for converting notionals to reporting currency)
    tca_request = TCARequest(
        start_date=start_date,
        finish_date=finish_date,
        ticker=ticker,
        trade_data_store='csv',
        market_data_store=test_harness_arctic_market_data_store,
        trade_order_mapping=csv_trade_order_mapping,
        market_data_database_table=test_harness_arctic_market_data_table)

    for t in trade_order_list:
        trade_order_df = market_loader.get_trade_order_data(tca_request, t)

        try:
            trade_order_df = Mediator.get_volatile_cache(
            ).get_dataframe_handle(trade_order_df)
        except:
            pass

        assert not trade_order_df.empty \
               and trade_order_df.index[0] >= pd.Timestamp(start_date).tz_localize('utc') \
               and trade_order_df.index[-1] <= pd.Timestamp(finish_date).tz_localize('utc')

    ### Test using DataFactory and DatabaseSource
    from tcapy.data.datafactory import DataFactory

    data_factory = DataFactory()

    for t in trade_order_list:
        ### Test using DataFactory
        trade_request = TradeRequest(
            start_date=start_date,
            finish_date=finish_date,
            ticker=ticker,
            data_store='csv',
            trade_order_mapping=csv_trade_order_mapping,
            trade_order_type=t)

        trade_order_df = data_factory.fetch_table(trade_request)

        assert not trade_order_df.empty \
                          and trade_order_df.index[0] >= pd.Timestamp(start_date).tz_localize('utc') \
                          and trade_order_df.index[-1] <= pd.Timestamp(finish_date).tz_localize('utc')

        ### Test using DatabaseSourceCSV
        database_source = DatabaseSourceCSV()

        trade_order_df = database_source.fetch_trade_order_data(
            start_date,
            finish_date,
            ticker,
            table_name=csv_trade_order_mapping[t])

        assert not trade_order_df.empty \
                             and trade_order_df.index[0] >= pd.Timestamp(start_date).tz_localize('utc') \
                             and trade_order_df.index[-1] <= pd.Timestamp(finish_date).tz_localize('utc')