Giter Club home page Giter Club logo

lecture-python-advanced.myst's Introduction

Advanced Quantitative Economics with Python

This website presents a set of advanced lectures on quantitative economic modeling.

Jupyter notebooks

Jupyter notebook versions of each lecture are available for download via the website.

Contributions

To comment on the lectures please add to or open an issue in the issue tracker (see above).

We welcome pull requests!

Please read the QuantEcon style guide first, so that you can match our style.

lecture-python-advanced.myst's People

Contributors

aakashgfude avatar drdrij avatar humphreyyang avatar jstac avatar kp992 avatar mmcky avatar sayaikegawa avatar shlff avatar smit-create avatar spspitze avatar taichisakaguchi avatar thomassargent30 avatar tom-fredricksondm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lecture-python-advanced.myst's Issues

Current build warnings for `sphinx-tomyst` migration tool

This is the current build warnings for the sphinx-tomyst migration tool

▶ make clean && make myst
Removing everything under '_build'...
Running Sphinx v3.1.2
making output directory... done
WARNING: html_static_path entry '_static' does not exist
building [mo]: targets for 0 po files that are out of date
building [myst]: targets for 59 source files that are out of date
updating environment: [new config] 59 added, 0 changed, 0 removed
checking for /Users/matthewmckay/repos-collab/lecture-python-advanced/source/rst/_static/quant-econ.bib in bibtex cache... not found                   
parsing bibtex file /Users/matthewmckay/repos-collab/lecture-python-advanced/source/rst/_static/quant-econ.bib... parsed 218 entries

/Users/matthewmckay/repos-collab/lecture-python-advanced/source/rst/index_time_series_models.rst:16: WARNING: toctree contains reference to nonexisting document 'knowing_forecasts_of_others'
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
CONFIG [definition_list] support for definition list in myst requires:                                                                                 
            myst_deflist_enable = True
        to be specified in the conf.py
writing output... [100%] zreferences                                                                                                                   
/Users/matthewmckay/repos-collab/lecture-python-advanced/source/rst/additive_functionals.rst:1367: WARNING: unknown document: likelihood_ratio_process
/Users/matthewmckay/repos-collab/lecture-python-advanced/source/rst/additive_functionals.rst:1371: WARNING: unknown document: likelihood_ratio_process
WARNING: SKIP amss [transition] objects are not supported by sphinx-tomyst
WARNING: SKIP amss [transition] objects are not supported by sphinx-tomyst
WARNING: SKIP amss2 [transition] objects are not supported by sphinx-tomyst
WARNING: SKIP amss2 [transition] objects are not supported by sphinx-tomyst
WARNING: SKIP amss3 [transition] objects are not supported by sphinx-tomyst
WARNING: SKIP amss3 [transition] objects are not supported by sphinx-tomyst

Files containing unused imports

/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/BCG_complete_mkts.py:870:1: F401 'pandas as pd' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/BCG_incomplete_mkts.py:707:1: F401 'pandas as pd' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/BCG_incomplete_mkts.py:709:1: F401 'scipy.stats.norm' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/BCG_incomplete_mkts.py:712:1: F401 'scipy.optimize.bisect' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/BCG_incomplete_mkts.py:1249:1: F401 'mpl_toolkits.mplot3d' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/additive_functionals.py:76:1: F401 'scipy as sp' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/amss.py:44:1: F401 'scipy.optimize.root' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/amss.py:45:1: F401 'interpolation.splines.eval_linear' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/amss.py:46:1: F401 'quantecon.optimize' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/amss.py:47:1: F401 'numba.njit' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/amss.py:47:1: F401 'numba.prange' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/amss.py:47:1: F401 'numba.float64' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/amss.py:48:1: F401 'numba.experimental.jitclass' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/arellano.py:83:1: F401 'random' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/arellano.py:85:1: F401 'numba.int64' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/arellano.py:85:1: F401 'numba.float64' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/arellano.py:86:1: F401 'numba.experimental.jitclass' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/asset_pricing_lph.py:584:1: F401 'scipy.stats.stats' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/asset_pricing_lph.py:586:1: F401 'statsmodels.sandbox.regression.gmm.GMM' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/black_litterman.py:90:1: F401 'scipy as sp' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/cattle_cycles.py:52:1: F401 'quantecon.LQ' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/chang_credible.py:88:1: F401 'quantecon as qe' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/chang_ramsey.py:77:1: F401 'quantecon as qe' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/five_preferences.py:61:1: F401 'matplotlib.cm' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/five_preferences.py:62:1: F401 'mpl_toolkits.mplot3d.Axes3D' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/five_preferences.py:66:1: F401 'matplotlib.colors.ListedColormap' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/five_preferences.py:66:1: F401 'matplotlib.colors.BoundaryNorm' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/growth_in_dles.py:55:1: F401 'quantecon.LQ' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/hs_invertibility_example.py:49:1: F401 'quantecon.LQ' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/irfs_in_hall_model.py:47:1: F401 'quantecon.LQ' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/knowing_forecasts_of_others.py:923:1: F401 'plotly.subplots.make_subplots' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/knowing_forecasts_of_others.py:925:1: F401 'plotly.express as px' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/lucas_asset_pricing_dles.py:57:1: F401 'quantecon.LQ' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/markov_jump_lq.py:255:1: F401 'mpl_toolkits.mplot3d.Axes3D' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/matsuyama.py:51:1: F401 'seaborn as sns' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/matsuyama.py:52:1: F401 'numba.vectorize' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/muth_kalman.py:45:1: F401 'scipy.linalg as la' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/muth_kalman.py:49:1: F401 'scipy.stats.norm' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:73:1: F401 'scipy.optimize.root' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:74:1: F401 'quantecon.MarkovChain' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:75:1: F401 'quantecon.optimize.nelder_mead.nelder_mead' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:76:1: F401 'interpolation.interp' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:77:1: F401 'numba.njit' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:77:1: F401 'numba.prange' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:77:1: F401 'numba.float64' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/opt_tax_recur.py:78:1: F401 'numba.experimental.jitclass' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/permanent_income_dles.py:57:1: F401 'quantecon as qe' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/permanent_income_dles.py:59:1: F401 'scipy.linalg as la' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/rosen_schooling_model.py:46:1: F401 'quantecon.LQ' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/rosen_schooling_model.py:49:1: F401 'math.sqrt' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/smoothing_tax.py:100:1: F401 'scipy.linalg as la' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/un_insure.py:500:1: F401 'scipy.optimize' imported but unused
/Users/thebigbool/repos/lecture-python-advanced.myst/__test_code_quality_tmp/un_insure.py:502:1: F401 'scipy.interpolate.interp1d' imported but unused

Execution Error in opt_tax_recur.md and amss Lectures

There is a reported execution error in opt_tax_recur.md

in this cell

nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
π = np.array([[0, 1, 0,   0,   0,  0],
              [0, 0, 1,   0,   0,  0],
              [0, 0, 0, 0.5, 0.5,  0],
              [0, 0, 0,   0,   0,  1],
              [0, 0, 0,   0,   0,  1],
              [0, 0, 0,   0,   0,  1]])

g = np.array([0.1, 0.1, 0.1, 0.2, 0.1, 0.1])
crra_pref = CRRAutility()

# Solve sequential problem
seq = SequentialLS(crra_pref, π=π, g=g)
sHist_h = np.array([0, 1, 2, 3, 5, 5, 5])
sHist_l = np.array([0, 1, 2, 4, 5, 5, 5])
sim_seq_h = seq.simulate(1, 0, 7, sHist_h)
sim_seq_l = seq.simulate(1, 0, 7, sHist_l)

fig, axes = plt.subplots(3, 2, figsize=(14, 10))
titles = ['Consumption', 'Labor Supply', 'Government Debt',
          'Tax Rate', 'Government Spending', 'Output']

for ax, title, sim_l, sim_h in zip(axes.flatten(),
                                   titles,
                                   sim_seq_l[:6],
                                   sim_seq_h[:6]):
    ax.set(title=title)
    ax.plot(sim_l, '-ok', sim_h, '-or', alpha=0.7)
    ax.grid()

plt.tight_layout()
plt.show()
------------------

results in

ValueError: setting an array element with a sequence. The requested array would exceed the maximum number of dimension of 1.

[lecture_comparison] Reference text for link names not well defined

This is an issue that some hyperlinks which refer to other lectures have different names from that current website shows in MyST.

For example, Left:RST Right:MyST

Screen Shot 2021-01-21 at 6 52 29 pm

This issue occurs when RST codes up the hyperlink as follows:
:doc:`file_name`

Then MyST convert this as follows:
{doc}`file_name <file_name>`

For example, in the above screenshot case,
RST : :doc:`smoothing_tax`

MyST: {doc}`smoothing_tax <smoothing_tax>`

I wonder whether there is any solution for this or the individual links should be manually changed via PR.

So far, this issue occurs in
6
7
31
34
35

cc: @mmcky

[lecture_comparison]\argmin_\col_issue

This is an issue that \argmin and \col does not work properly in MyST.

These screenshots show the examples. (in this lecture)
Left: RST Right: MyST

Screen Shot 2021-01-20 at 5 52 23 pm
Screen Shot 2021-01-20 at 5 52 49 pm

I checked all lectures to see whether any other cases needs to be fixed. But no other cases except \argmin& \col cause the issue. (I searched and checked the possible cases from \RR to \argmin in this list.)

cc: @mmcky

[additive_functionals] Execution Error

@Smit-create can you take a look at the additive_functionals lecture

AttributeError: module 'quantecon' has no attribute 'lss'

Must be due to a change in quantecon package?

coming from this block

------------------
ϕ_1, ϕ_2, ϕ_3, ϕ_4 = 0.5, -0.2, 0, 0.5
σ = 0.01
ν = 0.01   # Growth rate

# A matrix should be n x n
A = np.array([[ϕ_1, ϕ_2, ϕ_3, ϕ_4],
              [  1,   0,   0,   0],
              [  0,   1,   0,   0],
              [  0,   0,   1,   0]])

# B matrix should be n x k
B = np.array([[σ, 0, 0, 0]]).T

D = np.array([1, 0, 0, 0]) @ A
F = np.array([1, 0, 0, 0]) @ B

amf = AMF_LSS_VAR(A, B, D, F, ν=ν)

T = 150
x, y = amf.lss.simulate(T)

fig, ax = plt.subplots(2, 1, figsize=(10, 9))

ax[0].plot(np.arange(T), y[amf.nx, :], color='k')
ax[0].set_title('Path of $y_t$')
ax[1].plot(np.arange(T), y[0, :], color='g')
ax[1].axhline(0, color='k', linestyle='-.')
ax[1].set_title('Associated path of $x_t$')
plt.show()
------------------

Implement Bianchi overborrowing model

Implement the model in Overborrowing and Systemic Externalities in the Business Cycle

On http://www.javierbianchi.com/research.html there is Matlab code.

Can anyone reproduce Fig 1 of the paper in Python or Julia? I've had a go but couldn't get the same output. If you run main.m in the Matlab zip file you'll see that the code seems to roughly reproduce Fig 1.

It would be enough just to replicate the decentralized equilibrium, which is up to line 162 in main.m

CC @Smit-create @chien-y @Flintro @natashawatkins @cc7768 @shlff --- in case anyone feels like a small coding challenge :-)

[lecture_comparison] Review Figure Size Outputs for `figsize=` overrides

Some codes make too big figure outputs.

Unlike lecture-python-programming.myst, I think we cannot use the solution to use plt.rcParams["figure.figsize"] = (11, 5) #set default figure size.

This is because each code sets up own figure size in code, for example, byfig, (ax1, ax2, ax3, ax4) = plt.subplots(1, 4, figsize=(16, 4)).

Here is the example screenshot.
Screen Shot 2021-01-22 at 5 14 52 pm

Here is lectures that contain oversized figure outputs (to-be-updated):
11
12
16
22
28
38

Possibly in:
4
6
7
13
26
27
34
37

cc: @mmcky

[lecture enhancement] code cell collapse/fold

Hi @mmcky and @jstac , I find that we have a very good feature to collapse/fold a long-line code cell in our RST-version lectures.

Do you think it is a good idea to translate this feature to the new MYST lectures as well?

e.g., in lecture amss (left: RST; right: MYST):
Screen Shot 2021-06-03 at 3 50 38 pm

[lecture enhancement] some outputs occupy too many spaces

Hi @mmcky and @jstac , I find that there are some outputs of code cells that occupy too many lines and spaces in the following lectures:

Do you think it would be a good idea to find an elegant way to compress the output? I came up with three ideas that we can either

  • fold the output like what we did for long code cells in the RST-version lectures or like what we did for outputs of !pip install --upgrade in every lecture or
  • we can put those outputs just in one output cell or
  • we modify the code a bit to just print some of the results.

e.g., this output list is very long and I just show the very first part (left: RST; right: MYST):
Screen Shot 2021-06-03 at 4 01 23 pm

[lecture review] \argmin and \col not compiled

Hi @mmcky , \argmin is not compiled in the following lectures (updating):

\col is not compiled in the following lectures (updating):

E.g., please find the issue of \argmin from the screenshots (left: RST, right: MYST):
Screen Shot 2021-05-29 at 5 16 11 pm

Screen Shot 2021-05-29 at 6 24 20 pm

E.g., please find the issue of \argmin from the screenshots (left: RST, right: MYST):
Screen Shot 2021-05-29 at 6 21 06 pm
Screen Shot 2021-05-29 at 6 24 57 pm

[robustness] Execution Error

@Smit-create can you please review the robustness lecture

AttributeError: module 'quantecon' has no attribute 'lqcontrol'

due to this code block

------------------
# Model parameters

a_0 = 100
a_1 = 0.5
ρ = 0.9
σ_d = 0.05
β = 0.95
c = 2
γ = 50.0

θ = 0.002
ac = (a_0 - c) / 2.0

# Define LQ matrices

R = np.array([[0.,   ac,   0.],
            [ac, -a_1,  0.5],
            [0.,  0.5,  0.]])

R = -R  # For minimization
Q = γ / 2

A = np.array([[1., 0., 0.],
            [0., 1., 0.],
            [0., 0., ρ]])
B = np.array([[0.],
            [1.],
            [0.]])
C = np.array([[0.],
            [0.],
            [σ_d]])

# ----------------------------------------------------------------------- #
#                                 Functions
# ----------------------------------------------------------------------- #


def evaluate_policy(θ, F):

    """
    Given θ (scalar, dtype=float) and policy F (array_like), returns the
    value associated with that policy under the worst case path for {w_t},
    as well as the entropy level.
    """

    rlq = qe.robustlq.RBLQ(Q, R, A, B, C, β, θ)
    K_F, P_F, d_F, O_F, o_F = rlq.evaluate_F(F)
    x0 = np.array([[1.], [0.], [0.]])
    value = - x0.T @ P_F @ x0 - d_F
    entropy = x0.T @ O_F @ x0 + o_F
    return list(map(float, (value, entropy)))


def value_and_entropy(emax, F, bw, grid_size=1000):

    """
    Compute the value function and entropy levels for a θ path
    increasing until it reaches the specified target entropy value.

    Parameters
    ==========
    emax: scalar
        The target entropy value

    F: array_like
        The policy function to be evaluated

    bw: str
        A string specifying whether the implied shock path follows best
        or worst assumptions. The only acceptable values are 'best' and
        'worst'.

    Returns
    =======
    df: pd.DataFrame
        A pandas DataFrame containing the value function and entropy
        values up to the emax parameter. The columns are 'value' and
        'entropy'.
    """

    if bw == 'worst':
        θs = 1 / np.linspace(1e-8, 1000, grid_size)
    else:
        θs = -1 / np.linspace(1e-8, 1000, grid_size)

    df = pd.DataFrame(index=θs, columns=('value', 'entropy'))

    for θ in θs:
        df.loc[θ] = evaluate_policy(θ, F)
        if df.loc[θ, 'entropy'] >= emax:
            break

    df = df.dropna(how='any')
    return df


# ------------------------------------------------------------------------ #
#                                    Main
# ------------------------------------------------------------------------ #


# Compute the optimal rule
optimal_lq = qe.lqcontrol.LQ(Q, R, A, B, C, beta=β)
Po, Fo, do = optimal_lq.stationary_values()

# Compute a robust rule given θ
baseline_robust = qe.robustlq.RBLQ(Q, R, A, B, C, β, θ)
Fb, Kb, Pb = baseline_robust.robust_rule()

# Check the positive definiteness of worst-case covariance matrix to
# ensure that θ exceeds the breakdown point
test_matrix = np.identity(Pb.shape[0]) - (C.T @ Pb @ C) / θ
eigenvals, eigenvecs = eig(test_matrix)
assert (eigenvals >= 0).all(), 'θ below breakdown point.'


emax = 1.6e6

optimal_best_case = value_and_entropy(emax, Fo, 'best')
robust_best_case = value_and_entropy(emax, Fb, 'best')
optimal_worst_case = value_and_entropy(emax, Fo, 'worst')
robust_worst_case = value_and_entropy(emax, Fb, 'worst')

fig, ax = plt.subplots()

ax.set_xlim(0, emax)
ax.set_ylabel("Value")
ax.set_xlabel("Entropy")
ax.grid()

for axis in 'x', 'y':
    plt.ticklabel_format(style='sci', axis=axis, scilimits=(0, 0))

plot_args = {'lw': 2, 'alpha': 0.7}

colors = 'r', 'b'

df_pairs = ((optimal_best_case, optimal_worst_case),
            (robust_best_case, robust_worst_case))


class Curve:

    def __init__(self, x, y):
        self.x, self.y = x, y

    def __call__(self, z):
        return np.interp(z, self.x, self.y)


for c, df_pair in zip(colors, df_pairs):
    curves = []
    for df in df_pair:
        # Plot curves
        x, y = df['entropy'], df['value']
        x, y = (np.asarray(a, dtype='float') for a in (x, y))
        egrid = np.linspace(0, emax, 100)
        curve = Curve(x, y)
        print(ax.plot(egrid, curve(egrid), color=c, **plot_args))
        curves.append(curve)
    # Color fill between curves
    ax.fill_between(egrid,
                    curves[0](egrid),
                    curves[1](egrid),
                    color=c, alpha=0.1)

plt.show()
------------------

[lecture enhancement] oversized inserted figures

Hi @mmcky , I find that there are some oversized inserted figures.

Do you think it would be a good idea to adjust their size manually like what we did before? If so, then I would investigate all possibly-oversized inserted figures and create a PR to adjust their sizes.

e.g., (left: RST; right: MYST):
Screen Shot 2021-06-03 at 11 22 55 am

Screen Shot 2021-06-03 at 11 22 41 am

[lecture review] footnote in-text citation styles

Hi @jstac and @mmcky , I also find that the in-text citation styles of footnotes in MYST lectures look different from those in RST lectures before.

e.g., please see knowing_forecasts_of_others's footnote 1 (left: RST; right: MYST):
Screen Shot 2021-06-08 at 11 32 31 am

As discussed with @AakashGfude , we think it would be better to follow the styles in RST lectures--to put the in-text footnote citations in the superscript (as what we did in the picture on the left-hand side above).

Do you think it is a good idea? Looking forward to your comments.

Broken Link in `intro.md`

Hi @mmcky,

I found the link in the intro page is not working for this series. I will remove that line as we have done in other series.

Math breaking pdflatex build.

The following math:

$$
\begin{aligned}
 [\Pi &+ \beta^{1/2} L^{-1} \Lambda (I - \beta^{1/2} L^{-1}
\Delta_h)^{-1} \Theta_h]^\prime [\Pi + \beta^{1/2} L
\Lambda (I - \beta^{1/2} L \Delta_h)^{-1} \Theta_h]\\
&= [\hat\Pi + \beta^{1/2} L^{-1} \hat\Lambda
(I - \beta^{1/2} L^{-1} \Delta_h)^{-1} \Theta_h]^\prime
[\hat\Pi + \beta^{1/2} L \hat\Lambda
(I - \beta^{1/2} L \Delta_h)^{-1} \Theta_h]\end{aligned}
$$

Is breaking pdf build with jupyterbook-latex with the following error:

! Argument of \\aligned@a has an extra }.

in https://github.com/QuantEcon/lecture-python-advanced.myst/blob/main/lectures/hs_recursive_models.md

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.