80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
import pytest
|
|
from kalshi_csv import KalshiCSV
|
|
|
|
|
|
def test_parse_returns_self(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
result = kalshi.parse()
|
|
assert result is kalshi
|
|
|
|
|
|
def test_trade_count(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
assert kalshi.summary["trade_count"] == 3
|
|
|
|
|
|
def test_total_fees(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
assert abs(kalshi.summary["total_fees"] - 0.07) < 1e-6
|
|
|
|
|
|
def test_total_pnl_without_fees(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
assert abs(kalshi.summary["total_pnl_without_fees"] - (-0.20)) < 1e-6
|
|
|
|
|
|
def test_total_pnl_with_fees(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
assert abs(kalshi.summary["total_pnl_with_fees"] - (-0.27)) < 1e-6
|
|
|
|
|
|
def test_total_tax_basis(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
assert abs(kalshi.summary["total_tax_basis"] - 1.64) < 1e-6
|
|
|
|
|
|
def test_total_tax_proceeds(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
assert abs(kalshi.summary["total_tax_proceeds"] - 1.37) < 1e-6
|
|
|
|
|
|
def test_trades_list_length(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
assert len(kalshi.trades) == 3
|
|
|
|
|
|
def test_first_trade_data(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
trade = kalshi.trades[0]
|
|
assert trade["ticker"] == "TESTMARKET-WIN"
|
|
assert trade["side"] == "YES"
|
|
assert trade["qty"] == 1.0
|
|
assert trade["entry"] == 0.50
|
|
assert trade["exit"] == 1.00
|
|
assert abs(trade["pnl_no_fees"] - 0.50) < 1e-6
|
|
assert abs(trade["pnl_with_fees"] - 0.47) < 1e-6
|
|
|
|
|
|
def test_irs_summary(sample_csv):
|
|
kalshi = KalshiCSV(sample_csv)
|
|
kalshi.parse()
|
|
irs = kalshi.irs_summary()
|
|
assert irs["box"] == "C"
|
|
assert irs["description"] == "Kalshi Event Contracts (Aggregate Summary)"
|
|
assert abs(irs["gross_proceeds"] - 1.37) < 1e-6
|
|
assert abs(irs["cost_basis"] - 1.64) < 1e-6
|
|
assert abs(irs["gain_or_loss"] - (-0.27)) < 1e-6
|
|
|
|
|
|
def test_file_not_found():
|
|
kalshi = KalshiCSV("/nonexistent/path.csv")
|
|
with pytest.raises(FileNotFoundError):
|
|
kalshi.parse()
|