Blog Formatting Guide
This post demonstrates every formatting feature available when writing blog posts. Use it as a reference when authoring new content. Posts are written in standard Markdown with support for inline HTML where needed.
Heading Levels
Headings are available from ## (H2) through ###### (H6). The post title is the H1, so body content should start at H2.
H2 — Section Heading
H3 — Subsection Heading
H4 — Topic Heading
H5 — Minor Heading
H6 — Smallest Heading
The raw markdown:
## H2 — Section Heading
### H3 — Subsection Heading
#### H4 — Topic Heading
##### H5 — Minor Heading
###### H6 — Smallest Heading
Inline Text Formatting
Standard inline styles:
- Bold text —
**Bold text** - Italic text —
*Italic text* - Bold and italic —
***Bold and italic*** Strikethrough—~~Strikethrough~~Inline code—`Inline code`- Highlighted text —
<mark>Highlighted text</mark> - Superscript —
<sup>Superscript</sup>(e.g. E = mc2) - Subscript —
<sub>Subscript</sub>(e.g. H2O) - Ctrl + Shift + P — for keyboard shortcuts using
<kbd> - SDE — abbreviation with tooltip using
<abbr title="...">
Links
Inline link: Visit Simudyne for more information.
[Simudyne](https://simudyne.com)
Link with title attribute (hover tooltip): Read the Astro documentation to learn more.
[Astro documentation](https://docs.astro.build "Astro Docs")
Autolinked URL: https://simudyne.com
Email link: Contact us at hello@simudyne.com.
Lists
Unordered List
- First item
- Second item
- Third item with more detail explaining the point across a longer line of text to show wrapping behaviour
Ordered List
- Initialise the model parameters
- Calibrate against historical data
- Run Monte Carlo simulations
- Extract risk and trend metrics
Nested Lists
- Model Discovery
- Agent proposes an SDE
- Calibration via JAX + Diffrax
- Critique agent reviews fit
- Statistical metrics evaluated
- Feedback loop to builder
- Signal Extraction
- Monte Carlo sampling
- Risk metric computation
Task / Checkbox List
- Define model architecture
- Implement calibration pipeline
- Run full backtest suite
- Write up results
Blockquotes
Simple blockquote:
A forecast tells you where the centre of the distribution is. A simulation tells you how wide it is, where the tails are, and what happens when things go wrong.
Blockquote with attribution:
The best way to predict the future is to simulate it.
— SIMUDYNE RESEARCH
Nested blockquote:
Agent-based models capture emergent behaviour that top-down models miss.
This is particularly important in systemic risk analysis where feedback loops between institutions drive outcomes.
Multi-paragraph blockquote:
Monte Carlo methods rely on repeated random sampling to obtain numerical results. The underlying concept is to use randomness to solve problems that might be deterministic in principle.
They are especially useful in cases where a closed-form solution is not available or is too complex to derive analytically.
Code Blocks
Inline Code
Use model.fit(data) to calibrate the model. The parameter n_simulations controls the number of Monte Carlo paths.
Python
import jax.numpy as jnp
from diffrax import diffeqsolve, ODETerm, Tsit5
def geometric_brownian_motion(mu: float, sigma: float, S0: float, T: float, n_steps: int):
"""Simulate GBM using Euler-Maruyama discretisation."""
dt = T / n_steps
prices = [S0]
for _ in range(n_steps):
dW = jnp.sqrt(dt) * jax.random.normal(key, shape=())
S_new = prices[-1] * jnp.exp((mu - 0.5 * sigma**2) * dt + sigma * dW)
prices.append(S_new)
return jnp.array(prices)
JavaScript / TypeScript
interface SimulationConfig {
nPaths: number;
nSteps: number;
timeHorizon: number;
}
function runSimulation(config: SimulationConfig): number[][] {
const { nPaths, nSteps, timeHorizon } = config;
const dt = timeHorizon / nSteps;
return Array.from({ length: nPaths }, () =>
generatePath(nSteps, dt)
);
}
Shell Commands
# Clone and run the blog locally
git clone https://github.com/simudyne/simudyne-blog.git
cd simudyne-blog
npm install
npm run dev
JSON
{
"model": "geometric_brownian_motion",
"parameters": {
"mu": 0.05,
"sigma": 0.2,
"S0": 100.0,
"T": 1.0
},
"simulations": 10000
}
YAML (e.g. frontmatter reference)
---
title: "Your Post Title"
description: "A short summary for the listing page and SEO."
date: 2026-03-01
author: "Author Name"
tags: ["topic-a", "topic-b"]
---
Diff
- model = BlackScholes(sigma=0.2)
+ model = HestonModel(v0=0.04, kappa=2.0, theta=0.04, sigma_v=0.3, rho=-0.7)
Tables
Simple Table
| Model | Parameters | Fit (R²) | Profit |
|---|---|---|---|
| GBM | 2 | 0.72 | +3.1% |
| Heston | 5 | 0.89 | +7.4% |
| SABR | 4 | 0.85 | +5.8% |
| Jump Diffusion | 4 | 0.91 | +8.2% |
Aligned Columns
| Metric | Description | Formula |
|---|---|---|
| VaR | Value at Risk | P(L > VaR) = α |
| CVaR | Conditional VaR | E[L | L > VaR] |
| Sharpe | Risk-adjusted return | (R − Rf) / σ |
| MDD | Maximum Drawdown | max peak-to-trough |
Images
Standard Image
Images are placed in public/images/ and referenced with an absolute path:

Image with Caption (HTML)
For proper figure + caption treatment, use HTML:
<figure>
<img src="/images/placeholder-chart.svg" alt="Description" />
<figcaption>Figure 1: Your caption here.</figcaption>
</figure>
Callout Boxes
Callout boxes use HTML with specific classes. Four variants are available: info, warning, success, and danger.
This is an informational callout. Use it for supplementary context, tips, or cross-references that support the main text.
This is a warning callout. Use it to flag caveats, assumptions, or areas where the reader should exercise caution.
This is a success callout. Use it to highlight positive outcomes, key findings, or confirmed results.
This is a danger callout. Use it for critical information, breaking changes, or security considerations.
<div class="callout info">
<div class="callout-title">Note</div>
<p>Your callout content here.</p>
</div>
Available variants: info, warning, success, danger.
Definition Lists
Use HTML <dl> for term/definition pairs:
- Agent-Based Model (ABM)
- A computational model that simulates the actions and interactions of autonomous agents to assess their effects on the system as a whole.
- Stochastic Differential Equation (SDE)
- A differential equation in which one or more of the terms is a stochastic process, resulting in a solution that is itself a random process.
- Monte Carlo Simulation
- A method that uses repeated random sampling to obtain the distribution of an unknown probabilistic entity.
<dl>
<dt>Term</dt>
<dd>Definition of the term.</dd>
</dl>
Horizontal Rules
Use --- on its own line to insert a thematic break:
The content continues after the rule.
Mathematical Notation
For inline mathematical expressions, use HTML entities and Unicode:
- The drift-diffusion equation: dS = μS dt + σS dW
- Expected value: E[X] = Σ x·P(x)
- Normal distribution: X ~ N(μ, σ²)
- Greek letters: α, β, γ, δ, ε, θ, λ, σ, τ, φ, ω
For more complex expressions, write them as code:
dS(t) = μ · S(t) · dt + σ · S(t) · dW(t)
where:
S(t) = asset price at time t
μ = drift coefficient (expected return)
σ = volatility coefficient
W(t) = standard Wiener process
If full LaTeX rendering is needed, consider adding the remark-math + rehype-katex plugins to the Astro config.
Embedding Rich Content
Collapsible Section
Click to expand: full model specification
The Heston stochastic volatility model is defined by the coupled SDEs:
dS(t) = μ · S(t) · dt + √v(t) · S(t) · dW₁(t)
dv(t) = κ(θ − v(t)) · dt + σᵥ · √v(t) · dW₂(t)
Where the Wiener processes are correlated: E[dW₁ · dW₂] = ρ · dt.
Parameters:
- κ = 2.0 (mean-reversion speed)
- θ = 0.04 (long-run variance)
- σᵥ = 0.3 (vol of vol)
- ρ = −0.7 (correlation)
- v₀ = 0.04 (initial variance)
<details>
<summary>Click to expand: section title</summary>
Your hidden content here (supports full markdown).
</details>
Embedded Video Placeholder
To embed a video, use a standard iframe:
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/VIDEO_ID"
frameborder="0"
allowfullscreen
style="border-radius: 6px; margin: 1.5em 0;">
</iframe>
Combined Example
Below is a realistic excerpt combining several formatting features as they would appear in an actual post:
Task 2 — Calibration and Iterative Critique
The agent implements each proposed SDE in JAX using the Diffrax library, enabling rapid GPU-accelerated calibration.
from diffrax import diffeqsolve, Euler
solution = diffeqsolve(
terms=sde_term,
solver=Euler(),
t0=0.0,
t1=1.0,
dt0=0.001,
y0=initial_state,
)
After calibration, we evaluate model fit using the following metrics:
| Metric | Target | Sonnet 3.7 | Llama 3.3 |
|---|---|---|---|
| R² | > 0.85 | 0.91 | 0.78 |
| RMSE | < 2.5 | 1.8 | 3.2 |
| AIC | lowest | -142 | -98 |
Sonnet 3.7 consistently achieved the best goodness-of-fit across all metrics, while also producing code that ran without manual intervention.
Models that fit the data poorly will produce poor trading decisions downstream. There is no shortcut — the quality of the underlying model matters.
— SIMUDYNE RESEARCH
Quick Reference
| Feature | Syntax | Notes |
|---|---|---|
| Bold | **text** | |
| Italic | *text* | |
| Code | `code` | |
| Link | [text](url) | |
| Image |  | Store in public/images/ |
| Heading | ## Title | H2 through H6 |
| Blockquote | > text | Supports nesting |
| Ordered list | 1. item | |
| Unordered list | - item | |
| Table | Pipe syntax | See examples above |
| Rule | --- | |
| Callout | HTML <div class="callout info"> | info warning success danger |
| Figure | HTML <figure> | For image + caption |
| Collapse | HTML <details> | Expandable sections |
| Keyboard | <kbd>key</kbd> | |
| Highlight | <mark>text</mark> |