You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.1 KiB

8 years ago
import pytest
import datetime
from naiback.broker.position import Position
@pytest.fixture
def position():
return Position('FOO')
def test_position_enter(position):
position.enter(3.50, 10)
assert position.entry_price == 3.50
assert position.size == 10
def test_position_enter_metadata(position):
position.enter(3.50, 10, commission=0.1, bar=42)
assert position.entry_metadata['commission'] == 0.1
assert position.entry_metadata['bar'] == 42
def test_position_metadata_helpers(position):
position.enter(3.50, 10, commission=0.1, bar=42)
assert position.entry_commission() == 0.1
assert position.entry_bar() == 42
def test_position_exit(position):
position.enter(3.50, 10)
position.exit(4.50)
assert position.exit_price == 4.50
assert position.size == 0
def test_position_enter_short(position):
position.enter(3.50, -10)
assert position.entry_price == 3.50
assert position.size == -10
def test_position_exit_pnl(position):
position.enter(3.50, 10)
position.exit(4.00)
assert position.pnl() == 5