

During the past few weeks I have been experimenting with building a semi-automated Phase III trial prediction engine using a combination of AI for data gathering and extraction and Stan for inference and predictions using publicly available data. Phase III trials have large consequences for our healthcare system including costs and benefits to consumers, producers, and service providers, so understanding the likely treatment effects and consequently the probability of success is important.
After running a few analyses, I am convinced that at this point the process has to be at least semi-automated since the model for each trial needs to be bespoke as there are wild disparities among the background data available for each trial. In this blog post, I will briefly describe the process using the ACACIA-HCM trial that is scheduled to read out in Q2-2026. I am deliberately posting it before the readout so that we can check calibration later. A combination of OpenAI GPT-5.4 and Anthropic’s Claude Opus 4.6 was used for background data and cardiology expert consultation and was checked against several sources; all remaining mistakes are mine.
Hypertrophic cardiomyopathy (HCM) is a myocardial disease characterized by left ventricular hypertrophy, impaired relaxation, symptoms of exertional limitation, and risk of heart failure events and arrhythmias. In obstructive HCM (oHCM), dynamic left ventricular outflow tract obstruction is a dominant therapeutic target. In non-obstructive HCM (nHCM), symptoms and biomarker abnormalities may persist despite the absence of clinically meaningful obstruction, making the expected benefit of myosin inhibition more uncertain.
Cardiac myosin inhibitors have generated consistent positive randomized evidence in oHCM. Mavacamten was positive in EXPLORER-HCM and VALOR-HCM, while aficamten was positive in SEQUOIA-HCM and earlier phase studies. The central question for ACACIA-HCM is not whether cardiac myosin inhibition can improve oHCM physiology, but whether that treatment-effect distribution transfers to a symptomatic nHCM population.
ACACIA-HCM (NCT06081894) evaluates aficamten in symptomatic nHCM. The curated trial specification used for this report records total enrollment of 504 patients, 1:1 randomization, 36-week treatment duration, and a dual endpoint success rule in which either KCCQ CSS or peak VO2 significance is sufficient for trial success. Results were not available at the analysis cutoff.
The main public sources used to build the ACACIA-HCM evidence set are:
Endpoint-scale assumptions use the KCCQ interpretation paper by Spertus et al. (JACC 2020; doi: 10.1016/j.jacc.2020.09.542; https://doi.org/10.1016/j.jacc.2020.09.542).
The Phase 3 HCM myosin-inhibitor base-rate prior uses completed public program outcomes available at the analysis cutoff: EXPLORER-HCM, VALOR-HCM, and SEQUOIA-HCM positive; ODYSSEY-HCM negative; ACACIA-HCM excluded as the unknown prediction target.
The evidence synthesis uses randomized myosin-inhibitor studies mapped onto the KCCQ CSS scale. Because the historical randomized efficacy evidence is in obstructive HCM, I used information-discount weights before borrowing into the ACACIA-HCM non-obstructive target.
By "information-discount weights," I mean that I keep each historical trial's reported point estimate unchanged, but reduce how much precision it contributes to the model. Operationally, this is done by inflating the trial standard error:
$$\tilde{\sigma}_j = \frac{\sigma_j}{\sqrt{w_j}},$$
where $\tilde{\sigma}_j$ is the discounted standard error and $w_j$ is between 0 and 1. A weight of 1.0 means full borrowing, while a weight of 0.50 means the study contributes roughly half its original information. For example, EXPLORER-HCM has a raw standard error of 1.79 and a weight of 0.50, so its discounted standard error becomes $1.79 / \sqrt{0.50} = 2.53$. The 7.0-point KCCQ effect estimate is not changed; the model simply treats that estimate as less precise because EXPLORER-HCM was mavacamten in obstructive HCM rather than aficamten in non-obstructive HCM.
The weights are intentionally conservative. SEQUOIA-HCM receives the largest weight because it is aficamten Phase 3 evidence, but it is still oHCM rather than nHCM. EXPLORER-HCM is high-quality Phase 3 evidence with a robust patient-reported outcome signal, but it is mavacamten rather than aficamten. VALOR-HCM is randomized Phase 3 evidence, but the enrolled population was more severe and septal-reduction eligible. REDWOOD-HCM is aficamten evidence, but it is earlier-phase, smaller, and more hemodynamic in orientation.
The historical treatment effects are modeled hierarchically:
$$
y_j \mid \theta_j \sim \mathcal{N}(\theta_j,\tilde{\sigma}_j^2), \qquad \theta_j \mid \mu,\tau \sim \mathcal{N}(\mu,\tau^2).
$$
This hierarchy separates the mean myosin-inhibitor class effect, $\mu$, from between-trial heterogeneity, $\tau$. With only a few historical trials, $\tau$ should be read as a regularized uncertainty term rather than a precise empirical estimate of all possible HCM trial-to-trial variation.
The target-population prediction uses a mixture model. With probability $\pi_{\mathrm{active}}$, the oHCM signal transfers into nHCM but is attenuated; otherwise, the effect is drawn from a near-null component:
$$
\pi_{\mathrm{active}} \sim \mathrm{Beta}(3.5,1.5), \qquad Z \sim \mathrm{Bernoulli}(\pi_{\mathrm{active}}).
$$
The $\mathrm{Beta}(3.5,1.5)$ prior is an empirical base-rate prior: three positive completed Phase 3 HCM myosin-inhibitor programs and one negative nHCM program, with Jeffreys smoothing. I use it as a prior on active transfer, meaning whether ACACIA belongs to the branch where the oHCM signal carries over, not as a direct measurement of biology. If $Z=1$, the oHCM predictive effect transfers but loses an attenuation amount $\beta$; if $Z=0$, the nHCM effect is drawn from a near-null distribution:
$$
\theta_{\mathrm{oHCM}} \sim \mathcal{N}(\mu,\tau^2), \qquad
\beta \sim \mathrm{HalfNormal}(0,\beta_{\mathrm{sd}}),
$$
$$
\theta_{\mathrm{nHCM}} =
\begin{cases}
\theta_{\mathrm{oHCM}} - \beta, & Z=1,\\
\mathcal{N}(0,\sigma_{\mathrm{null}}^2), & Z=0.
\end{cases}
$$
This lets the prediction express both "works, but smaller" and "does not really transfer" scenarios.
The fitting and prediction steps are easier to read as two diagrams. First, the historical oHCM effects estimate the class mean and between-trial heterogeneity. Second, posterior draws from that hierarchy feed the ACACIA-HCM nHCM predictive mixture.


I include the Stan code to make the assumptions auditable. The historical evidence synthesis lives in the model block; the ACACIA-HCM predictive draw is produced in generated quantities, where the model samples the active-transfer indicator $Z$ and then draws $\theta_{\mathrm{nHCM}}$.
data {
int<lower=1> J; // number of historical trials
vector[J] y; // observed treatment effects
vector<lower=0>[J] sigma; // discounted SEs after information weighting
real mu0; // prior mean for mu
real<lower=0> sigma_mu; // prior SD for mu
real<lower=0> tau0; // half-normal scale for tau
// Population attenuation prior: beta ~ HalfNormal(0, beta_sd)
real<lower=0> beta_sd; // scale of attenuation prior
// Mixture prior for pi_active in the math: probability the target is
// in the active-transfer component.
real<lower=0> base_rate_alpha;
real<lower=0> base_rate_beta;
real<lower=0> sigma_null; // SD of no effect if mechanism does not transfer
}
parameters {
real mu; // class mean treatment effect, oHCM scale
real<lower=0> tau; // between-trial SD
real<lower=0, upper=1> pi_active; // pi_active in math
vector[J] eta; // non-centered parameterization offsets
}
transformed parameters {
vector[J] theta;
theta = mu + tau * eta;
}
model {
mu ~ normal(mu0, sigma_mu);
tau ~ normal(0, tau0);
pi_active ~ beta(base_rate_alpha, base_rate_beta);
eta ~ normal(0, 1);
y ~ normal(theta, sigma);
}
generated quantities {
// Predictive draw for a new trial in the source population, oHCM.
real theta_oHCM = normal_rng(mu, tau);
// Population attenuation beta in the math: effect lost going from oHCM to nHCM.
real<lower=0> beta_atten = abs(normal_rng(0, beta_sd));
// Transfer indicator Z in the math: does the mechanism transfer to nHCM?
int<lower=0, upper=1> Z = bernoulli_rng(pi_active);
// Predictive draw theta_nHCM in the math for the target population, nHCM.
real theta_nHCM;
if (Z == 1) {
theta_nHCM = theta_oHCM - beta_atten;
} else {
theta_nHCM = normal_rng(0, sigma_null);
}
vector[J] y_rep;
for (j in 1:J)
y_rep[j] = normal_rng(theta[j], sigma[j]);
}
The posterior prediction translates the latent nHCM treatment-effect distribution into the two endpoint scales used for ACACIA-HCM. I report both the expected treatment effect and the predictive probability of meeting statistical and clinically meaningful thresholds.

Key predictive quantities:
The result is directionally favorable but unsurprisingly uncertain. The model gives positive average effects on both endpoint scales.
I also pulled a fresh CYTK stock quote and listed options chain from Yahoo Finance on April 21, 2026 at 21:51 UTC. The stock was trading at $65.80.
I defined a "success" stock level as a 10% move above spot, or $72.38. This threshold is not a model estimate of clinical success; it is just a stock-price cutoff used to ask what probability the options market assigns to CYTK finishing above that level.
Using the Breeden-Litzenberger approach, the options-implied estimates were:
The July expiry is arguably the more relevant market check if one wants coverage through the end of Q2, while the June expiry is the nearest listed expiry to the expected readout window. I do not combine it with the Bayesian clinical prediction (we may do that later); I report it as a separate risk-neutral market check.
This is the sensitivity that matters most. Changing the active-transfer prior mean is not cosmetic: it changes how much posterior predictive mass goes into the active branch versus the near-null branch.


Representative rows:
Across this range, the dual-endpoint probability moves from 36.2% to 64.9%. The reflects the core central scientific uncertainty: whether the oHCM myosin-inhibitor signal is transportable to symptomatic nHCM.
I also checked whether modestly scaling all borrowing weights changes the conclusion. It moves the KCCQ mean slightly, but the dual-endpoint probability remains close to the base case because the active/null transfer mixture dominates the uncertainty.
Several assumptions are doing real work here:
• The negative nHCM Phase 3 experience enters as a base-rate prior, not as an endpoint-harmonized continuous treatment-effect observation.
• Peak VO2 is mapped from KCCQ through a shared standardized effect, not fit as a fully independent endpoint model.
• The historical borrowing weights are curated judgments, not parameters estimated from patient-level transportability data.
• The between-trial heterogeneity parameter is regularized by the prior; four historical effects are not enough to learn it precisely.
• ACACIA-specific endpoint variance, missing data, estimand details, and baseline severity could differ from the assumptions used here.
1. Olivotto I, Oreziak A, Barriales-Villa R, et al. Mavacamten for treatment of symptomatic obstructive hypertrophic cardiomyopathy (EXPLORER-HCM). *The Lancet*. 2020;396:759-769. doi:10.1016/S0140-6736(20)31792-X.
2. Desai MY, Owens A, Geske JB, et al. Myosin inhibition in patients with obstructive hypertrophic cardiomyopathy referred for septal reduction therapy. *Journal of the American College of Cardiology*. 2022;80:95-108. doi:10.1016/j.jacc.2022.04.048.
3. Maron MS, Masri A, Choudhury L, et al. Phase 2 study of aficamten in patients with obstructive hypertrophic cardiomyopathy. *Journal of the American College of Cardiology*. 2023;81:34-45. doi:10.1016/j.jacc.2022.10.020.
4. Maron MS, Masri A, Choudhury L, et al. Aficamten for symptomatic obstructive hypertrophic cardiomyopathy (SEQUOIA-HCM). *New England Journal of Medicine*. 2024;390:1849-1861. doi:10.1056/NEJMoa2401424.
5. Spertus JA, Jones PG, Sandhu AT, Arnold SV. Interpreting the Kansas City Cardiomyopathy Questionnaire in clinical trials and clinical care: JACC State-of-the-Art Review. *Journal of the American College of Cardiology*. 2020;76:2379-2390. doi:10.1016/j.jacc.2020.09.542.
6. ClinicalTrials.gov. ACACIA-HCM, NCT06081894. https://clinicaltrials.gov/study/NCT06081894.
7. Breeden DT, Litzenberger RH. Prices of state-contingent claims implicit in option prices. *Journal of Business*. 1978;51:621-651.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
Weighing pros and cons of NCA vs. PK modeling.

This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.