American put option. Exercise time is a random variable, calculation of expected payoff

M

Makina

I got an American put option, where the payoff is $V_\tau = \max(K - X_{\tau}, 0)$ and $X_{\tau}$ is the price of an underlying at the stopping time $\tau < T$. The underlying follows a standard GBM with $r = q = 0$; $X_0$ is given.

I need to calculate the expectation $E[V]$ under the assumption that $\tau$ has exponential distribution with intensity $\lambda = 0.025$.



I tried transforming this equation into: $$\int_0^\infty (K - X_0e^{-\frac{1}{2}\sigma^2 \tau + \sigma \sqrt{\tau}Z})^+\lambda e^{-\lambda \tau}d\tau$$ but then I'm just completely lost with how to proceed with the square root. I know that by definition $E[\tau] = \frac{1}{\lambda}$ but can I use this as an answer? As in, can I claim that: $$E[V] = V\left(X_{\frac{1}{\lambda}}, \frac{1}{\lambda}\right) \text{ ?}$$
 

Unreplied Threads

How long would it take us to notice Pluto disappearing?

  • Z.Schroeder
  • Social
  • Replies: 0
Self-explanatory. I have a planet-eating entity moving slowly across the solar system towards Earth and I wanna know how long it would take for us to notice its presence once it starts consuming Pluto (assuming we had no prior warning or knowledge of its existence).

¿Qué tamaño de muestra es adecuado si tengo dos clases desbalanceadas?

Tengo un problema de clasificación donde las dos clases de la variable objetivo tienen un desajuste. Mi dataset son pacientes hospitalizados y la variable objetivo es si requirieron entrar a la Unidad de Cuidados Intensivos.

ClaseCantidadPorcentaje
163944.715
212921495.285

Para balancearlas usaré un submuestreo de la clase 2 pero me surge la duda ¿qué número de datos sería adecuado para la clase 2? Considerando que en este contexto el número de observaciones de la clase 2 debe ser bastante mayor que el de la clase 1.

Como información adicional mi objetivo es comparar el rendimiento de SVM y Random Forest para resolver este problema.

recuperación de contraseña con envío de token por correo para la recuperación

Estoy desarrollando una plataforma en la que hay 3 tipos de usuarios. Los usuarios se registran cosa que funciona correctamente, y deberían de poder recuperar contraseña.

Cuando el usuario pincha en recuperar contraseña, se abre la página para que ingrese el email y pinchar en recuperar contraseña. Lo que debería de hacer la aplicación es enviar un email con un token y en la página en la que escribe la nueva clave también pone el token enviado por correo electrónico.

El problema es que no está enviando el email con el token. Espero que podáis ayudarme. Os dejo aquí la tabla y los archivos recupera_pass.php, que es el archivo que envía el email y recuperar_clave.php que donde el usuario debería de poner la nueva clave. Tengo la librería PHPMailer en la raíz del proyecto esta es la tabla usuario:

Estructura de tabla para la tabla usuarios

Code:
CREATE TABLE `usuarios` (
  `id` int(11) NOT NULL,
  `nombre` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `id_tipo_usuario` int(11) DEFAULT 1,
  `id_supervisor` int(11) DEFAULT NULL,
  `id_grupo_usuario` int(11) DEFAULT NULL,
  `company` enum('A','B','C','D') NOT NULL DEFAULT 'A'
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;

este es el archivo recupera_pass.php

Code:
      <?php
       // Incluir archivos de PHPMailer
       require 'PHPMailer/src/PHPMailer.php';
       require 'PHPMailer/src/Exception.php';
       require 'PHPMailer/src/SMTP.php';
       
       // Iniciar la sesión
       session_start();
       
       // Verificar si el usuario ya está autenticado, redirigirlo al dashboard si es así
       if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
           header('Location: dashboard.php');
           exit;
       }
       
       // Incluir el archivo de conexión a la base de datos
       include('includes/db.php');
       
       // Inicializar variables para almacenar mensajes de error y éxito
       $errors = array();
       $success = '';
       
       // Verificar si se ha enviado el formulario de recuperación de contraseña
       if ($_SERVER["REQUEST_METHOD"] == "POST") {
           // Recuperar y validar el correo electrónico ingresado
           $email = trim($_POST['email']);
       
           // Verificar si el correo electrónico existe en la base de datos
           $query = "SELECT nombre FROM usuarios WHERE email = ?";
           $stmt = mysqli_prepare($conn, $query);
           mysqli_stmt_bind_param($stmt, "s", $email);
           mysqli_stmt_execute($stmt);
           mysqli_stmt_store_result($stmt);
       
           if (mysqli_stmt_num_rows($stmt) == 1) {
               // El correo electrónico existe, generar un token y enviar un correo electrónico con un enlace de restablecimiento
               // Generar un token único
               $token = bin2hex(random_bytes(32));
                       
               // Calcular la hora de expiración del token (por ejemplo, 1 hora después de ahora)
               $token_expires = date('Y-m-d H:i:s', strtotime('+1 hour'));
                       
               // Actualizar la tabla de usuarios con el token y la hora de expiración
               $update_query = "UPDATE usuarios SET reset_token = ?, reset_token_expires = ? WHERE email = ?";
               $update_stmt = mysqli_prepare($conn, $update_query);
               mysqli_stmt_bind_param($update_stmt, "sss", $token, $token_expires, $email);
               mysqli_stmt_execute($update_stmt);
       
               // Obtener el nombre del usuario
               $result = mysqli_query($conn, "SELECT nombre FROM usuarios WHERE email = '$email'");
               $row = mysqli_fetch_assoc($result);
               $nombre = $row['nombre'];
       
               // Enviar correo electrónico con el enlace de restablecimiento
               try {
                   // Crear una nueva instancia de PHPMailer
                   $mail = new PHPMailer(true);
               
                   // Configurar el servidor de correo
                   $mail->isSMTP();
                   $mail->Host = 'mail.domain.es';
                   $mail->SMTPAuth = true;
                   $mail->Username = 'email';
                   $mail->Password = 'contraseña;
                   $mail->SMTPSecure = 'ssl'; // Puedes cambiar a 'ssl' si es necesario
                   $mail->Port = 465; // Puerto SMTP
       
                   // Configurar el correo electrónico
                   $mail->setFrom('correo', 'Plataforma xxxxxxx');
                   $mail->addAddress($email);
                   $mail->Subject = 'Restablecer Contraseña';
                   $mail->isHTML(true);
                   $mail->Body = 'Hola ' . $nombre . ', por favor haz clic en el siguiente enlace para restablecer tu contraseña: <a href="https://we4you.viessmannes.es/reset.php?token=' . $token . '">Restablecer contraseña</a>';
       
                   // Enviar el correo electrónico
                   $mail->send();
       
                   // Mostrar mensaje de éxito
                   $success = "Se ha enviado un correo electrónico con instrucciones para restablecer tu contraseña.";
               } catch (Exception $e) {
                   // Mostrar mensaje de error si falla el envío del correo electrónico
                   $errors[] = "Error al enviar el correo electrónico: {$mail->ErrorInfo}";
               }
           } else {
               // Mostrar mensaje de error si el correo electrónico no está registrado
               $errors[] = "No se encontró ningún usuario con el correo electrónico proporcionado.";
           }
       
           mysqli_stmt_close($stmt);
       }
       ?>
       
       <!DOCTYPE html>
       <html lang="es">
       <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <title>Recuperar Contraseña</title>
           <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
       </head>
       <body>
           <div class="container mt-5">
               <div class="row justify-content-center">
                   <div class="col-md-6">
                       <div class="card">
                           <div class="card-header">
                               Recuperar Contraseña
                           </div>
                           <div class="card-body">
                               <?php if (!empty($errors)) : ?>
                                   <div class="alert alert-danger" role="alert">
                                       <?php foreach ($errors as $error) : ?>
                                           <p><?php echo $error; ?></p>
                                       <?php endforeach; ?>
                                   </div>
                               <?php endif; ?>
                               <?php if (!empty($success)) : ?>
                                   <div class="alert alert-success" role="alert">
                                       <?php echo $success; ?>
                                   </div>
                               <?php else : ?>
                                   <form action="recuperar_clave.php" method="post">
                                       <div class="form-group">
                                           <label for="email">Correo Electrónico:</label>
                                           <input type="email" name="email" class="form-control" required>
                                       </div>
                                       <button type="submit" class="btn btn-primary ">Recuperar Contraseña</button>
                                       <a href="index.html" class="btn btn-danger">Volver</a>
                                   </form>
                               <?php endif; ?>
                           </div>
                       </div>
                   </div>
               </div>
           </div>
       
           <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
           <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
       </body>
       </html>

Y este es el archivo recuperar_clave.php donde el usuario pondría el token recibido y la nueva clave.

Code:
    <?php
    session_start();
    
    include('includes/db.php');
    
    $errors = array();
    $success = '';
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $token = trim($_POST['token']);
        $password = trim($_POST['password']);
    
        // Verificar si el token y la contraseña no están vacíos
        if (empty($token) || empty($password)) {
            $errors[] = "El token y la contraseña son obligatorios.";
        } else {
            // Verificar si el token es válido
            $query = "SELECT id FROM usuarios WHERE reset_token = ? AND reset_token_expires > NOW()";
            $stmt = mysqli_prepare($conn, $query);
            mysqli_stmt_bind_param($stmt, "s", $token);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
    
            if (mysqli_stmt_num_rows($stmt) == 1) {
                // El token es válido, actualizar la contraseña del usuario
                $hashed_password = password_hash($password, PASSWORD_DEFAULT);
                $update_query = "UPDATE usuarios SET password = ?, reset_token = NULL, reset_token_expires = NULL WHERE reset_token = ?";
                $update_stmt = mysqli_prepare($conn, $update_query);
                mysqli_stmt_bind_param($update_stmt, "ss", $hashed_password, $token);
                mysqli_stmt_execute($update_stmt);
    
                $success = "¡Contraseña restablecida con éxito!";
            } else {
                // El token no es válido
                $errors[] = "El token de restablecimiento de contraseña no es válido o ha caducado.";
            }
    
            mysqli_stmt_close($stmt);
        }
    }
    ?>
    
    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Restablecer Contraseña</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container mt-5">
            <div class="row justify-content-center">
                <div class="col-md-6">
                    <div class="card">
                        <div class="card-header">
                            Restablecer Contraseña
                        </div>
                        <div class="card-body">
                            <?php if (!empty($errors)) : ?>
                                <div class="alert alert-danger" role="alert">
                                    <?php foreach ($errors as $error) : ?>
                                        <p><?php echo $error; ?></p>
                                    <?php endforeach; ?>
                                </div>
                            <?php endif; ?>
                            <?php if (!empty($success)) : ?>
                                <div class="alert alert-success" role="alert">
                                    <?php echo $success; ?>
                                </div>
                            <?php else : ?>
                                <form action="recuperar_clave.php" method="post">
                                    <div class="form-group">
                                        <label for="token">Token de Restablecimiento:</label>
                                        <input type="text" name="reset_token" class="form-control" required>
                                    </div>
                                    <div class="form-group">
                                        <label for="password">Nueva Contraseña:</label>
                                        <input type="password" name="password" class="form-control" required>
                                    </div>
                                    <button type="submit" class="btn btn-primary">Restablecer Contraseña</button>
                                </form>
                            <?php endif; ?>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    </body>
    </html>

El email con el token no se envía y por lo tanto el usuario no puede ponerlo con la nueva clave. Me podéis ayudar?

¿Cómo pasar un array de PHP a Javascript? (Error)

Estoy trayendo un array de PHP y necesito manipularlo con Javascript. Lo que me parece extraño es que en el servidor no me arroja ningún error pero cuando lo pruebo en localhost me sale el siguiente error:

Code:
Uncaught SyntaxError: Unexpected token ';'

Esto es lo que me muestra en la consola de comandos:

Code:
let array_clientes = ;

En otras palabras no me está imprimiendo el array que traigo de PHP y no se le está asignando ningún valor al array_clientes de JS.

Este es el código en Javascript que aplico:

Code:
let array_clientes = <?php echo json_encode($clientes) ?>;

No entiendo por qué no me imprime el array con la función json_encode de PHP, por eso es que no se le está asignando ningún valor a la variable array_clientes de JS .

Repito, este problema sólo lo tengo en el localhost pero en el servidor sí me funciona sin problema alguno.

Error con la librería FFT para una analizador de audio

Estoy intentando compilar un código que encontré para un analizador de audio matriz 8x8x4 con el Arduino, las matrices de led irán mostrando el audio, agregue la librería para FFT pero me arroja errores en el código. Al inicio me lanzaba que no estaba agregada la librería pero como mencione, ya la agregue, al parecer la información que encontré sobre el código, si debería compilar, el error que me aparece es exit status 1

Compilation error: 'arduinoFFT' does not name a type; did you mean 'ArduinoFFT'?

Busque mas ejemplos de FFT pero todos lo definen de esa forma

Code:
#include <arduinoFFT.h>
#include <MD_MAX72xx.h>

// Number of samples for FFT. Should be a power of 2.
const uint16_t samples = 64;  
uint16_t k = 0;
double vReal[samples];
double vImag[samples];
double ganancia = 0.5;

#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES  4

// Define pins for SPI
#define CLK_PIN   13  // or SCK
#define DATA_PIN  11  // or MOSI
#define CS_PIN    10  // or SS

arduinoFFT FFT = ArduinoFFT();

// SPI hardware interface
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

// We always wait a bit between updates of the display
#define DELAYTIME  100  // in milliseconds

void setup() {
    Serial.begin(115200);
    mx.begin();
    mx.clear();
}

void loop() {
    for (int i = 0; i < samples; i++) {
       vReal[i] = analogRead(A0) * ganancia;
       vImag[i] = 0;
       Serial.println(vReal[i]);
    }

    // Perform FFT
    FFT.Windowing(vReal, samples, FFT_WIN_TYP_RECTANGLE, FFT_FORWARD);
    FFT.Compute(vReal, vImag, samples, FFT_FORWARD);
    FFT.ComplexToMagnitude(vReal, vImag, samples);

    // Display the FFT results
    LedColumn(1, 0);
    LedColumn(9, 1);
    LedColumn(17, 2);
    LedColumn(25, 3);

    delay(DELAYTIME);
}

// Function to display the FFT results on the LED matrix
void LedColumn(int Fi, int Ci) {
    for (int i = Fi; i < Fi + 8; i++) {
        if (vReal[i] > 100) {
            mx.setColumn(Ci, B11111111);
        } else if (vReal[i] > 90) {
            mx.setColumn(Ci, B01111111);
        } else if (vReal[i] > 80) {
            mx.setColumn(Ci, B11111100);
        } else if (vReal[i] > 60) {
            mx.setColumn(Ci, B11111000);
        } else if (vReal[i] > 50) {
            mx.setColumn(Ci, B11110000);
        } else if (vReal[i] > 40) {
            mx.setColumn(Ci, B11100000);
        } else if (vReal[i] > 30) {
            mx.setColumn(Ci, B11000000);
        } else if (vReal[i] > 15) {
            mx.setColumn(Ci, B10000000);
        } else {
            mx.setColumn(Ci, B00000000);
        }
        Ci++;
    }
}

Error en el IDLE

Problema para tomar valor vendedores en ERP de python

Vereis estoy de prácticas en una empresa que trabajan con un ERP de python 2.7 (la versión antigua) pero es la que tiene el cliente.

El caso es que me pidieron que sacase las comisiones por vendedor y no hubo problema.

Pero en el informe de comisiones, solo aparece el vendedor 002, de los 6 que hay.

Code:
elif accion=='a_inf01':     
    fecd=valor_preg(preguntas,'%FECD')
    fech=valor_preg(preguntas,'%FECH')
    vd=valor_preg(preguntas,'%VD')
    if vd<>'':
        ls_vendedores=vd.split('?')
    else:
        ls_vendedores=claves(gpx,'vendedores')

    if fecd in ['',None]:error(cl,'Indique fecha desde.')
    if fech in ['',None]:error(cl,'Indique fecha hasta.')

    pgs=[]
    pgs.append(['RM_FEC','>=',fecd])
    pgs.append(['RM_FEC','<=',fech])
    remesas=selec(gpx,'remesas','0 RM_COB',pgs)

    dc_comis_pves={}
    dc_total_comision={}

    for nrm,cobros in remesas:
        for ln in cobros:
            ncb=ln[0]

            cobro=lee(cl,gpx,'cobros',ncb)
            if cobro==1:continue

            for nfr,impocob in cobro<CB_FRAS>:
                dc_total_comision=Calcula_Comision_Factura(nfr,dc_total_comision,ls_vendedores)
    rs,dc_cab=[],{}
    for nfr,ven in dc_total_comision.keys():
        comision,ffr,ccl,deno_cl,fe_ttt=dc_total_comision[nfr,ven]
        if abs(comision)==0.0:continue
        fila=Busca_Fila(rs,[ven,nfr],8,('l','l','d','d','l','l','2','2'))
        factura=lee(cl,gpx,'facturas-e',nfr)
        if factura==1:continue
        bruto=factura<FE_BRU>
        dcob=factura<FE_DCOB>
        for ncob,impo in dcob:
            cobro=lee(cl,gpx,'cobros',ncob)
            if cobro==1:continue
            if cobro<CB_EST><>'R':continue
            fec_cob=cobro<CB_FREM>

        rs[fila][2]=ffr
        rs[fila][3]=fec_cob
        rs[fila][4]=ccl
        rs[fila][5]=deno_cl
        rs[fila][6]=bruto
        rs[fila][7]=comision


            if dc_cab.has_key((0,ven))==0:
            vendedor=lee(cl,gpx,'vendedores',ven)
            deno_vd='No existe vendedor'
            if vendedor<>1:deno_vd=vendedor<VD_DENO>
            dc_cab[0,ven]=ven+' - '+deno_vd
    rs=ordena(rs,[0,1])
    ##$>dc_cab, ven, res, rs
    self.envia(cl,(rs,dc_cab))

Por alguna razón, que no logro descubrir, por ejemplo, ls_vendedores al poner un punto de inspección me recoge los códigos de cada vendedor:

Code:
[ "000",  "001",  "002", "003",  "004", "005", "006"]

pero vendedor solo me recoge esto: (que es el vendedor asociado al código 002

Code:
["JAUME", "",  "",  "",  "",  "",  "",  "",  "",  "", [],  [],  [],  "",  0.0]

Mientras que ven coge el código solo del vendedor 1 (001) Si alguien pudiera ayudarme le estaría eternamente agradecido.

Overful \hbox en linea de \begin{document} en Beamer

Estoy preparando una presentación con Overleaf y, con solamente la primera diapositiva ya he obtenido este error

Overfull \hbox (108.58081pt too wide) in paragraph at lines 76--76 ‪main.tex, 76‬ Overfull \hbox (110.00397pt too wide) has occurred while \output is active

Me extraña que la línea 76 es la de \begin{document} Os dejo el código a ver si me pudierais echar un cable. He visto por ahí que el error se puede deber al paquete AtBeginSection, pero no he encontrado cómo solucionarlo. Un saludo y muchas gracias. A continuación el código:

Code:
\documentclass[10pt,xcolor={table,xcdraw,dvipsnames}]{beamer}
\usepackage{setspace} % Definir interlineado
\setstretch{1.1} % Interlineado
\usepackage[T1]{fontenc} % Imprescindible texto
\usepackage[utf8]{inputenc} % Idem
\usepackage[spanish]{babel} % Texto en castellano
\usepackage{array} % Opciones extras para tablas sobre dimensiones
\usepackage{multicol,multirow} % Unir filas y columnas en tablas
\usepackage{verbatim} % Meter codigo en entorno verbatim
\usepackage{amsthm,latexsym,mathtools,amssymb,amstext,amsfonts,fixmath} % Todo lo de mates
\usepackage{cancel} % Para tachar elementos en ecuaciones que se cancelan
\usepackage{enumitem} % Fancy enumerate (cambiar iteradores)
\usepackage{comment} % Para añadir comentarios multilinea
\usepackage[autostyle,italian=guillemets]{csquotes}
\usepackage{url} % Meter links
\usepackage{theoremref} % \thlabel{label entorno theorem} \thref{label} Tª # \thnameref{label} Nombre Tª 
\usepackage{booktabs} % Modificar estilo tablas para que queden guapas
\usepackage{graphicx} % Includegraphics avanzado
\setlength{\belowcaptionskip}{-10pt}
\setlength{\abovecaptionskip}{7pt}
\graphicspath{{images/}} % Carpeta donde estan las imagenes
\usepackage{anysize} % Modificar márgenes
\usepackage{float} % Para poder usar [H] en figuras y se pongan justo donde quieres
\usepackage{hyperref} % Para las referencias cruzadas
\usepackage{caption} % Meter caption
\usepackage{subcaption} % Contiene a subfig y sirve para meter mas de una figura en entorno figure
\usepackage{wrapfig}% Para incorporar figuras que se mezclan con texto
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{ragged2e}
\usepackage{hyperref}
\usepackage{float}
\newcommand{\R}{\mathbb{R}}
\newcommand{\util}{\widetilde{u}}
\renewcommand{\L}{\mathcal{L}}
\newcommand{\M}{\mathcal{M}}
\newcommand{\J}{\mathcal{J}}
\newcommand{\I}{\mathcal{I}}
\newcommand{\wI}{\widetilde{\mathcal{I}}}
\renewcommand{\H}{\mathcal{H}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\C}{\mathcal{C}}
\newcommand{\D}{\mathcal{D}}
\providecommand{\abs}[1]{\lvert#1\rvert}
\providecommand{\norm}[1]{\lVert#1\rVert}
\usepackage{url}
\usetheme{Madrid}
\setbeamersize{text margin left=0.5cm,text margin right=0.5cm} 
\newtheorem{teor}{Teorema}
%\textbackslash
\newcommand{\celda}[1]{
    \begin{minipage}{2.5cm}
        \vspace{5mm}
        #1
        \vspace{5mm}
    \end{minipage}
}
\title{Exposición ejercicios EDP}
\author{ Nuria Gallego Ariño }
\date{\today}
\institute{ Universidad de Valencia. Facultad de Ciencias Matemáticas. }
\logo{\includegraphics[scale=0.0775]{Logo uv.jpg}}
\institute{ Universidad de Valencia. Facultad de Ciencias Matemáticas. }
\AtBeginSection[]
{
    \begin{frame}<beamer>{Contenido}
        \tableofcontents[currentsection,currentsubsection]
    \end{frame}
}
\begin{document}
\maketitle
\section{Ejercicios sorteados}
\begin{frame}{Ejercicio 5 Práctica 5}
Claim: $\forall \Omega \subset \R^2$ $u\in C^2(\Omega) $
\end{frame}
\end{document}
Top