Tesis de Buyout — Abivax

Mencioné en el recuento de resultados anual que iba a tomar una gran posición de ABVX por Criterio de Kelly por la posibilidad de una adquisición por parte de alguna gigante farmacéutica. Hay varios argumentos para creer que habrá una compra:

vestings
La Lettre

Otro punto a comentar es las ventas de un fondo de inversiones que invirtió fuertemente en Abivax desde un inicio, Sofinnova Crossover. Estas ventas no son por perder confianza en el activo o haber manipulado el precio con filtraciones o influencers y tener una buena salida, sino que parece ser un reajuste de exposición dado a la explosión del precio el 2025. Ningún directivo de Abivax a vendida una acción, si Sofinnova vendió no es porque esté manipulando ni haya perdido confianza.

Si es tan segura una adquisición y el tratamiento es tan bueno, ¿se explica que es muy riesgoso para esas cías el invertir $17.5B o más, o simplemente esperan confirmación de resultados con los datos de mantenimiento de mediados de este año? Esta pregunta me hice y encontré por X que es posible hacer un análisis Bayesiano para tener una predicción de los resultados de mantenimiento con datos previos. Eso hice.

Metodología del Bayes

Usé datos de Ph2a, Ph2b responders y no-responders, y Ph3 inducción para predecir datos de Ph3 remisión en Ph3 mantenimiento.

Priors: toma el dato del resultado de ph2a, siendo 82/124 a logit(0.661)=0.668, usandolo como mu=0.668, de esta forma se empieza con un previo más cercano a la realidad y no por un mu=1 con alta std o mo=0 con incluso más alta std.

El modelo busca proyectar el resultado de de mantenimiento de la ph3 usando el peso del mantenimiento que en el array son los datos 2 y 3. Esto dado que la baja tasa de éxito de los estudios de inducción arrastrarían hacía abajo el desarrollo biológico a lo largo de las 8 semanas en adelante, con lo que se busca crear el clúster inducción y el mantenimiento para tener un predictivo más adecuado.

El modelo se encarga de aprender que tan difícil es tratar a un refractario con beta_refract de meta análisis de UC con rango de -2.0 y -1.2 (que usa para arrastrar más a la izquierda), mientras que tiene el dato de refractores de ~47% del estudio. Con este ajuste, el uso de la información de la ph2 mantenimiento funciona como techo y las dos distribuciones de refractarios lo lleva a realidad.

Otra diferencia entre estudios, es que ph2 era Open-Label, mientras que ph3 es Ciego, hacemos un ajuste de distribución negativa para la predicción, parecido al refractario. Un 10-20% en escalas subjetivas como Mayo Score, en casos de dolor, al rededor de dolor un 50-70%. Creo que un 30-40% de efecto placebo es conservador.

Agregaré variabilidad entre fases para tener ruido y poder tener una variabilidad por factores desconocido, aumentando el rango de confianza.

Por último, el modelo genera iteraciones en las que hay resultado binario de remisión o no-remisión, donde hay n=226 pacientes y el peso mu fue diseñado con todos los ajustes previos.

		if __name__ == '__main__':
			# Array
    			# 0: Ph2a (Inducción)
			# 1: Ph2b Respondedores
			# 2: Ph2b No-Respondedores
			# 3: Ph3 Inducción (Inducción)

			k_obs = np.array([11, 82, 37, 132])
			n_obs = np.array([19, 124, 93, 636])
			    
			refract_prop = np.array([0.35, 0.50, 0.57, 0.47]) 

			phase_type_idx = np.array([0, 1, 2, 0]) 

			n_futuro = 226
			refract_futuro = 0.47

			raw_p_ind = 11 / 19     # Resultado de ph2 inducción
			raw_p_maint = 82 / 124  # Mantenimiento respondedores

			prior_mu_ind = np.log(raw_p_ind / (1 - raw_p_ind))          
			# mu de prior de ph2 ind
			prior_mu_maint = np.log(raw_p_maint / (1 - raw_p_maint))    
			# mu de prior de ph2 mant respondedores

			is_open_label = np.array([1, 1, 1, 0])

			print(f"\nPrior de Mantenimiento fijado en: {raw_p_maint:.1%} (Logit: {prior_mu_maint:.2f})")
			print("-" * 60)

			with pm.Model() as model:
				mu_ind = pm.Normal('mu_ind', mu=prior_mu_ind, sigma=1.0)
				mu_resp = pm.Normal('mu_resp', mu=prior_mu_maint, sigma=1.0) 
				
				mu_noresp = pm.Normal('mu_noresp', mu=0, sigma=1.0)

				beta_refract = pm.Normal('beta_refract', mu=-1.6, sigma=0.3) 
				#Meta analisis de estudios clinicus de UC indican entre -2.0 y -1.2
				sigma_study = pm.HalfNormal('sigma_study', sigma=0.5)
				study_effect = pm.Normal('study_effect', mu=0, sigma=sigma_study, shape=4)
				
				bias_open_label = pm.HalfNormal('bias_open_label', sigma=0.5) 
				#Tamaño del efecto de ser OL en ph2, restado en ph3. sigma=0.5 para 
				#logit de 30-40%

				mus = pm.math.stack([mu_ind, mu_resp, mu_noresp])[phase_type_idx]
				#logit_p = mus + study_effect + beta_refract * refract_prop
				logit_p = mus + study_effect + beta_refract * refract_prop + bias_open_label * is_open_label
				y = pm.Binomial('y', n=n_obs, p=pm.math.sigmoid(logit_p), observed=k_obs)
				
				study_effect_new = pm.Normal('study_effect_new', mu=0, sigma=sigma_study)
				logit_pred = mu_resp + study_effect_new + beta_refract * refract_futuro
				p_pred_part1 = pm.Deterministic('p_pred_part1', pm.math.sigmoid(logit_pred))
				
				trace = pm.sample(2000, tune=2000, chains=6, target_accept=0.98, cores=3)

			posterior_p = trace.posterior['p_pred_part1'].values.flatten()
			
			k_simulado = np.random.binomial(n_futuro, posterior_p)
			tasa_simulada = k_simulado / n_futuro
			
			p_placebo = stats.beta.rvs(20, 80, size=len(tasa_simulada))
			tasa_placebo_sim = np.random.binomial(n_futuro, p_placebo) / n_futuro
			
			delta = tasa_simulada - tasa_placebo_sim
			
			prob_sup = np.mean(delta > 0) #Ganar al placebo
			prob_clin = np.mean(delta > 0.2) #Lograr significancia contundente, 16% por 
							 #resultados de placebos en sistemas inflamatorios de 14-20%
			hdi_95 = np.percentile(tasa_simulada, [2.5, 97.5])
			    
			print(f"Eficacia Predicha (Media):                              {np.mean(tasa_simulada):.2%}")
			print(f"Rango de Certeza (95%):                                 [{hdi_95[0]:.2%} ; {hdi_95[1]:.2%}]")
			print(f"Delta medio (remisión-placebo):                         {np.mean(delta):.1%}")
			print("-" * 80)
			print(f"Probabilidad de Éxito:                                  {prob_sup:.2%}")
			print(f"Probabilidad de Blockbuster - muy bajo valor-p (>20%):  {prob_clin:.2%}")
			print("="*80)
			    
			fig, ax = plt.subplots(1, 2, figsize=(15, 6))
			    
			ax[0].hist(tasa_simulada, bins=50, color='#2c7bb6', alpha=0.8, density=True)
			ax[0].axvline(np.mean(tasa_simulada), color='k', ls='--', label=f'Media: {np.mean(tasa_simulada):.1%}')
			ax[0].set_title('Predicción de Tasa de Remisión - Obefazimod', fontsize=12)
			ax[0].set_xlabel('Tasa de Remisión')
			ax[0].legend()
			ax[0].grid(alpha=0.3)
			    
			ax[1].hist(delta, bins=50, color='#7b3294', alpha=0.8, density=True)
			ax[1].axvline(0, color='red', lw=2, label='Fallo, 0%')
			ax[1].axvline(0.2, color='orange', ls='--', lw=2, label='Objetivo Comercial, 20%')
			ax[1].axvline(np.mean(delta), color='k', ls=':', lw=2, label=f'Delta Medio: +{np.mean(delta):.1%}')
			ax[1].set_title('Delta: Remisión - Placebo', fontsize=12)
			ax[1].set_xlabel('Diferencia Porcentual')
			    
			ymin, ymax = ax[1].get_ylim()
			ax[1].fill_betweenx([ymin, ymax], 0, 1, color='green', alpha=0.1, label='Zona Éxito')
			ax[1].fill_betweenx([ymin, ymax], -1, 0, color='red', alpha=0.1, label='Zona Fallo')
			ax[1].legend(loc='upper right')
			ax[1].grid(alpha=0.3)
			    
			plt.tight_layout()
			plt.show()		
		
	

Resultados

Eficacia Predicha (Media): Rango de Certeza (95%): Delta medio (remisión-placebo): Probabilidad de Éxito: Probabilidad de Blockbuster - muy bajo valor-p (>20%):
51.87% [20.35% ; 83.19%] 31.9% 97.11% 76.95%
cccc

Valoración

Ya que tenemos un rango de posibilidades de éxito de la ph3 del estudio toca ver la capacidad de mercado de la terapia. En este caso es uno muy simple, solo incluye al Obefazimod.

En el Corporate Outlook de este mes mostraron que el mercado de UC a nivel mundial puede llegar a $21.2bn al 2032 de $9.2bn el 2025 (https://ir.abivax.com/news-releases/news-release-details/abivax-provides-2026-corporate-outlook/). También, dieron datos más precisos de EEUU, donde estiman 500K pacientes en terapias convencionales con 60% de esos pacientes siendo moderado/severo, ~300K pacientes podrían usar obefazimod, con buena opinión de médicos.

Además, declararon que para el 18 de dic. más del 80% de los participantes completaron el estudio de 44 semanas, demostrando su capacidad pegajosa por resultados + pocos efectos secundarios.

NDA será propuesto a la FDA a finales de 2026, para empezar su comercialización en EEUU. Lo normal es que sea comercial en Europa un año después.

Así funciona el modelo:

Van a haber cuotas de mercado para China. Japón, Europa y EE.UU., lo importante para EE.UU. Es que se cumpla la penetración cuando fijo la cuota en 30% de moderados/severos a 2032, que es 60%*30%=18%, en el caso base es un poco menos de 18%.

En ex-US población adulta para EU y China es el 70% de la población, porcentaje con UC crece hasta 0.9%, en Japón casi el 1%. Los precios son ajustados con comparativos de la competencia en UC y CD, en el caso de EU se ve la creación de símiles generando presión en el precio al tercer año.

modelo NPV

Para el caso de sensibilidades del modelo usamos la ecuación de cuota de mercado con los resultados de la eficacia de la proyección del mantenimiento de la ph3, donde el extremo bajo es 21.24% y el alto 81.86%:

$$ \text{Cuota de Mercado} = \text{Cuota Base (30%)} * \frac{\text{Eficacia Simulada}}{\text{Eficacia Base (52%)}} $$

Ponderando con 20% pesimista, 5% optimista y 75% base: ~360.21/share

Es por estas razones que creo que va a haber buyout, inclusive antes de la presentación de los datos de mantenimiento – el Obefazimod es simplemente muy bueno, los resultados en combinación con Crohn harían que esto valga muchisimo más, es espectacular. También, existe la chance de que los resultados sean malos, pero en el sentido de que los resultados empeoren más de los aceptable por alguna razón (doble ciego u otra cosa desconocida), al fin y al cabo es biotech. Actualmente el precio es muy bajo por la razón de que no hay mucho capital retail en esta industria comparándolo con décadas pasadas y el poco retail que invierte espera resultados a muy corto plazo – incluso con opciones a unas semanas de ciertos anuncios, exagerado. La adquisición se hará y a lo que quiero llegar con esto es que no necesariamente después de la publicación del mantenimiento de ph3 y si hay demora es porque a MdG & co. están trabajando para términos de “Blockbuster” – como el Obefazimod se merece. Solo hay que esperar.

Cálculo de Mercado ex-US

modelo NPV