This is a utility method that asserts expected results for conversion of orders to transactions given a trade history
(self, **params)
| 161 | self.transaction_sim(**params1) |
| 162 | |
| 163 | def transaction_sim(self, **params): |
| 164 | """This is a utility method that asserts expected |
| 165 | results for conversion of orders to transactions given a |
| 166 | trade history |
| 167 | """ |
| 168 | trade_count = params['trade_count'] |
| 169 | trade_interval = params['trade_interval'] |
| 170 | order_count = params['order_count'] |
| 171 | order_amount = params['order_amount'] |
| 172 | order_interval = params['order_interval'] |
| 173 | expected_txn_count = params['expected_txn_count'] |
| 174 | expected_txn_volume = params['expected_txn_volume'] |
| 175 | |
| 176 | # optional parameters |
| 177 | # --------------------- |
| 178 | # if present, alternate between long and short sales |
| 179 | alternate = params.get('alternate') |
| 180 | |
| 181 | # if present, expect transaction amounts to match orders exactly. |
| 182 | complete_fill = params.get('complete_fill') |
| 183 | |
| 184 | asset1 = self.asset_finder.retrieve_asset(1) |
| 185 | with TempDirectory() as tempdir: |
| 186 | |
| 187 | if trade_interval < timedelta(days=1): |
| 188 | sim_params = factory.create_simulation_parameters( |
| 189 | start=self.start, |
| 190 | end=self.end, |
| 191 | data_frequency="minute" |
| 192 | ) |
| 193 | |
| 194 | minutes = self.trading_calendar.minutes_window( |
| 195 | sim_params.first_open, |
| 196 | int((trade_interval.total_seconds() / 60) * trade_count) |
| 197 | + 100) |
| 198 | |
| 199 | price_data = np.array([10.1] * len(minutes)) |
| 200 | assets = { |
| 201 | asset1.sid: pd.DataFrame({ |
| 202 | "open": price_data, |
| 203 | "high": price_data, |
| 204 | "low": price_data, |
| 205 | "close": price_data, |
| 206 | "volume": np.array([100] * len(minutes)), |
| 207 | "dt": minutes |
| 208 | }).set_index("dt") |
| 209 | } |
| 210 | |
| 211 | write_bcolz_minute_data( |
| 212 | self.trading_calendar, |
| 213 | self.trading_calendar.sessions_in_range( |
| 214 | self.trading_calendar.minute_to_session_label( |
| 215 | minutes[0] |
| 216 | ), |
| 217 | self.trading_calendar.minute_to_session_label( |
| 218 | minutes[-1] |
| 219 | ) |
| 220 | ), |
no test coverage detected