MCPcopy Create free account
hub / github.com/kernc/backtesting.py / test_commissions

Method test_commissions

backtesting/test/_test.py:263–282  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

261 [9781.28, 9846.04])
262
263 def test_commissions(self):
264 class S(_S):
265 def next(self):
266 if len(self.data) == 2:
267 self.buy(size=SIZE, tp=3)
268
269 FIXED_COMMISSION, COMMISSION = 10, .01
270 CASH, SIZE, PRICE_ENTRY, PRICE_EXIT = 5000, 100, 1, 4
271 arr = np.r_[1, PRICE_ENTRY, 1, 2, PRICE_EXIT, 1, 2]
272 df = pd.DataFrame({'Open': arr, 'High': arr, 'Low': arr, 'Close': arr})
273 with self.assertWarnsRegex(UserWarning, 'index is not datetime'):
274 stats = Backtest(df, S, cash=CASH, commission=(FIXED_COMMISSION, COMMISSION)).run()
275 EXPECTED_PAID_COMMISSION = (
276 FIXED_COMMISSION + COMMISSION * SIZE * PRICE_ENTRY +
277 FIXED_COMMISSION + COMMISSION * SIZE * PRICE_EXIT)
278 self.assertEqual(stats['Commissions [$]'], EXPECTED_PAID_COMMISSION)
279 self.assertEqual(stats._trades['Commission'][0], EXPECTED_PAID_COMMISSION)
280 self.assertEqual(
281 stats['Equity Final [$]'],
282 CASH + (PRICE_EXIT - PRICE_ENTRY) * SIZE - EXPECTED_PAID_COMMISSION)
283
284 def test_dont_overwrite_data(self):
285 df = EURUSD.copy()

Callers

nothing calls this directly

Calls 2

BacktestClass · 0.90
runMethod · 0.45

Tested by

no test coverage detected