Skip to content

Commit 0889cb9

Browse files
committed
test: update single period EF tests
1 parent 4cf541c commit 0889cb9

File tree

4 files changed

+19
-11
lines changed

4 files changed

+19
-11
lines changed

okama/frontier/single_period.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,16 +1055,16 @@ def plot_cml(self, rf_return: float = 0, figsize: Optional[tuple] = None):
10551055
tg = self.get_tangency_portfolio(rf_return)
10561056
fig, ax = plt.subplots(figsize=figsize)
10571057
ax.plot(ef.Risk, ef["Mean return"], color="black")
1058-
ax.scatter(tg["Risk"], tg["Mean_return"], linewidth=0, color="green", zorder=10)
1058+
ax.scatter(tg["Risk"], tg["Rate_of_return"], linewidth=0, color="green", zorder=10)
10591059
ax.annotate(
10601060
"MSR",
1061-
(tg["Risk"], tg["Mean_return"]),
1061+
(tg["Risk"], tg["Rate_of_return"]),
10621062
textcoords="offset points", # how to position the text
10631063
xytext=(-10, 10), # distance from text to points (x,y)
10641064
ha="center", # horizontal alignment can be left, right or center
10651065
)
10661066
# plot the line
1067-
x, y = [0, tg["Risk"]], [rf_return, tg["Mean_return"]]
1067+
x, y = [0, tg["Risk"]], [rf_return, tg["Rate_of_return"]]
10681068
ax.plot(x, y, linewidth=1)
10691069
# set the axis size
10701070
risk_monthly = self.assets_ror.std()

tests/test_asset.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ def test_close_monthly(init_asset_spy):
4040
assert init_asset_spy.close_monthly.loc["2000-01"] == 139.625 # changed in 2022 MAY from 139.5625
4141

4242

43-
def test_adj_close(init_asset_spy):
44-
assert init_asset_spy.adj_close.loc["2000-01-20"] == approx(97.0629, rel=1e-2)
43+
def test_adj_close(init_asset_pif):
44+
assert init_asset_pif.adj_close.loc["2015-01-20"] == approx(3172.88, rel=1e-2)
4545

4646

4747
def test_price(init_asset_spy):

tests/test_asset_list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def test_make_asset_list(self):
8080
assert self.asset_list.assets_first_dates["MCFTR.INDX"].strftime("%Y-%m-%d") == "2003-03-01"
8181
last_year = int(self.asset_list.last_date.year)
8282
assert int(self.asset_list.assets_last_dates["MCFTR.INDX"].year) > last_year
83-
assert self.asset_list.newest_asset == "RUB"
83+
assert self.asset_list.newest_asset == "MCFTR.INDX"
8484
assert self.asset_list.eldest_asset == "RUB.FX"
8585
assert list(self.asset_list.assets_ror) == ["RUB.FX", "MCFTR.INDX"]
8686
assert self.asset_list.assets_ror.columns.name == "Symbols"

tests/test_frontier.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,21 @@ def test_ef_points(init_efficient_frontier):
111111
assert init_efficient_frontier.ef_points["Mean return"].iloc[-1] == approx(0.20007879286573038, rel=1e-2)
112112

113113

114+
test_tangency_data = [
115+
(False, [0.409596, 0.590404], 0.1627), # cagr = False
116+
(True, [0.424916, 0.575084], 0.15617) # cagr = True
117+
]
118+
119+
120+
@pytest.mark.parametrize("cagr, expected_weights, expected_return",
121+
test_tangency_data,
122+
ids=["MSR Arithmetic mean", "MSR geometric mean"])
114123
@mark.frontier
115-
def test_get_tangency_portfolio(init_efficient_frontier):
124+
def test_get_tangency_portfolio(init_efficient_frontier, cagr, expected_weights, expected_return):
116125
rf_rate = 0.05
117-
dic = init_efficient_frontier.get_tangency_portfolio(rf_return=rf_rate)
118-
expected = [0.409596, 0.590404]
119-
assert_allclose(dic["Weights"], expected, atol=1e-2)
120-
assert dic["Mean_return"] == approx(0.1627, rel=1e-2)
126+
dic = init_efficient_frontier.get_tangency_portfolio(cagr=cagr, rf_return=rf_rate)
127+
assert_allclose(dic["Weights"], expected_weights, atol=1e-2)
128+
assert dic["Rate_of_return"] == approx(expected_return, rel=1e-2)
121129

122130

123131
@mark.frontier

0 commit comments

Comments
 (0)