Skip to content

Commit 6b05ca8

Browse files
committed
fix issue #8: better test case, v0.1.20
1 parent 114c25c commit 6b05ca8

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

investments/trades_fifo.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,15 @@ def analyze_trades_fifo(trades: Iterable[Trade]) -> Tuple[List[Any], List[Finish
128128
quantity -= -1 * q
129129

130130
if total_profit is not None:
131+
q = trade.quantity - quantity
131132
finished_trades.append(FinishedTrade(
132133
finished_trade_id,
133134
trade.ticker,
134135
trade.datetime,
135136
trade.settle_date,
136-
trade.quantity - quantity,
137+
q,
137138
trade.price,
138-
abs(trade.quantity) * trade.price,
139+
abs(q) * trade.price,
139140
total_profit,
140141
))
141142
finished_trade_id += 1

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "investments"
3-
version = "0.1.19"
3+
version = "0.1.20"
44
description = "Analysis of Interactive Brokers reports for tax reporting in Russia"
55
license = "MIT"
66
authors = ["Maxim Andreev <[email protected]>"]

tests/trades_fifo_test.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ def test_tradesfifo_ticker_different_kinds():
6060
def test_analyze_trades_fifo():
6161
dt = datetime.datetime.now()
6262

63+
# trades: [(Date, Symbol, Quantity, Price)]
64+
# expect_portfolio: (Symbol, quantity)
65+
# expect_trades: (N, Symbol, Quantity, Total, Profit)
6366
testcases = [
6467
{
6568
'trades': [
@@ -68,7 +71,7 @@ def test_analyze_trades_fifo():
6871
('2018-01-07', 'TEST', -100, 50.3),
6972
],
7073
'expect_portfolio': [('TEST', 50)],
71-
'expect_trades': [(1, 'TEST', 100, 0), (1, 'TEST', -100, 4610)],
74+
'expect_trades': [(1, 'TEST', 100, 420, 0), (1, 'TEST', -100, 5030, 4610)],
7275
},
7376
{
7477
'trades': [
@@ -77,15 +80,15 @@ def test_analyze_trades_fifo():
7780
('2018-01-07', 'TEST', -130, 50.3),
7881
],
7982
'expect_portfolio': [('TEST', 20)],
80-
'expect_trades': [(1, 'TEST', 100, 0), (1, 'TEST', 30, 0), (1, 'TEST', -130, 5594)],
83+
'expect_trades': [(1, 'TEST', 100, 420, 0), (1, 'TEST', 30, 525, 0), (1, 'TEST', -130, 6539, 5594)],
8184
},
8285
{
8386
'trades': [
8487
('2018-01-01', 'TEST', -100, 4.2),
8588
('2018-01-04', 'TEST', 30, 17.5),
8689
],
8790
'expect_portfolio': [('TEST', -70)],
88-
'expect_trades': [(1, 'TEST', -30, 0), (1, 'TEST', 30, -399)],
91+
'expect_trades': [(1, 'TEST', -30, 126, 0), (1, 'TEST', 30, 525, -399)],
8992
},
9093

9194
# issue #8 - sell all & open short in one trade
@@ -96,15 +99,15 @@ def test_analyze_trades_fifo():
9699
('2018-01-05', 'TEST', -3, 17.5),
97100
],
98101
'expect_portfolio': [('TEST', -3)],
99-
'expect_trades': [(1, 'TEST', 10, 0), (1, 'TEST', -10, 133)],
102+
'expect_trades': [(1, 'TEST', 10, 42, 0), (1, 'TEST', -10, 175, 133)],
100103
},
101104
{
102105
'trades': [
103106
('2018-01-01', 'TEST', 10, 4.2),
104107
('2018-01-05', 'TEST', -13, 17.5),
105108
],
106109
'expect_portfolio': [('TEST', -3)],
107-
'expect_trades': [(1, 'TEST', 10, 0), (1, 'TEST', -10, 133)],
110+
'expect_trades': [(1, 'TEST', 10, 42, 0), (1, 'TEST', -10, 175, 133)],
108111
},
109112
]
110113

@@ -129,7 +132,8 @@ def test_analyze_trades_fifo():
129132
assert expected[0] == trade.N, f'expect trade N={expected[0]} but got {trade.N}'
130133
assert expected[1] == trade.ticker.symbol, f'expect trade ticker={expected[1]} but got {trade.ticker.symbol}'
131134
assert expected[2] == trade.quantity, f'expect trade quantity={expected[2]} but got {trade.quantity}'
132-
assert expected[3] == trade.profit.amount, f'expect trade profit={expected[3]} but got {trade.profit.amount}'
135+
assert expected[3] == trade.total.amount, f'expect trade total={expected[3]} but got {trade.total.amount}'
136+
assert expected[4] == trade.profit.amount, f'expect trade profit={expected[4]} but got {trade.profit.amount}'
133137

134138
assert len(portfolio) == len(tc['expect_portfolio'])
135139
assert len(portfolio) == 1 # FIXME

0 commit comments

Comments
 (0)