# Planets example

Let's consider a same-costs market and plot the *valuation curve,* which gives $v(\mathcal{X}_h)$ as a function of $h$, where $\mathcal{X}_h$ is the optimal portfolio for each $h$ between $0$ and $m$.

The market data is as follows:

\[\begin{align} f &= (0.39, 0.33, 0.24, 0.24, 0.05, 0.03, 0.1, 0.12) \\ t &= (200, 250, 300, 350, 400, 450, 500, 550) \end{align}\]

Let's import the `PrettyTables`

and `UnicodePlots`

libraries for visualizations and read in the market data.

```
using PrettyTables
using UnicodePlots
using OptimalApplication
f = [0.39, 0.33, 0.24, 0.24, 0.05, 0.03, 0.1, 0.12]
t = [200, 250, 300, 350, 400, 450, 500, 550]
mkt = Market(f, t, 8)
```

Notice how we set $h = m = 8$ because we know from the nestedness property that by calling `applicationorder_list(mkt)`

, we can get a permutation of the schools that encodes all the optimal portfolios. Let's do that now:

`X, V = applicationorder_list(mkt, verbose=true)`

$\mathcal{X}_h$ is given by the first $h$ entries of `X`

, and $v(\mathcal{X}_h)$ is `V[h]`

. Let's plot `V`

.

`lineplot(0:mkt.m, vcat(0, V), xlabel="h", ylabel="v")`

This graph is called a *valuation curve.* It gives the applicant's utility as a function of her budget $h$. The curve's concave shape is guaranteed by the nestedness property.

An alternative way of looking at the optimal portfolios is to take the *inverse-permutation* of `X`

. The value of `invperm(X)[j]`

gives the *smallest* value of $h$ for which school $j$ is in $\mathcal{X}_h$. This is called the schools *priority* number; if a school has priority number 1, it is the first school you should apply to, and so on.

This format lets us create the following table:

```
priority = invperm(X)
pretty_table(
Any[f t priority V[priority]],
header = ["f", "t", "priority", "valuation"],
header_crayon = crayon"bold yellow",
)
```