Domanda

Sto per entrare nelle prime fasi della progettazione di un'applicazione di trading di materie prime. Una delle principali funzioni di questa applicazione è l'acquisizione e la valutazione delle informazioni sui prezzi. I prezzi in questo mercato non sono fissi. Di solito è un benchmark di mercato +/- un premio. Ad esempio: (A e B sono parametri di riferimento di mercato)

  • Prezzo = A + $ 1
  • Prezzo = A + .5 (A-B)

Il prezzo finale dell'operazione viene calcolato utilizzando la formula dei prezzi applicata in un periodo concordato. Per esempio; Il prezzo finale potrebbe essere la media di A + $ 1 rispetto alla settimana precedente e alla settimana successiva al caricamento della merce.

Attualmente gli operatori stanno acquisendo questo dettaglio in Excel, il che consente loro la flessibilità di impostare le formule richieste, ma queste informazioni non arrivano mai ai nostri sistemi contabili e i fogli di calcolo non sono collegati a previsioni in tempo reale dei parametri di mercato che fanno previsioni sui prezzi un compito manuale e lento.

Sto cercando input su quali strumenti / tecniche posso usare per inserire, archiviare e valutare le formule in un'applicazione.

Useremo SQL Server o Oracle come database e la piattaforma client non è stata ancora risolta, ma puoi assumere WinForms / WPF, ASP.NET o una webapp Java.

So che questa è una domanda piuttosto ampia, ma non siamo abbastanza avanti per essere più specifici su quali tecnologie verranno utilizzate.

Grazie

È stato utile?

Soluzione

Scommetto che ai tuoi utenti piace la flessibilità di inserire le formule in Excel, quindi suggerirei un approccio come questo: -

  1. Scrivi qualcosa per consentire loro di inserire formule nella tua applicazione utilizzando il tipo di operatori che utilizzeranno effettivamente con le parole chiave per i diversi prezzi base. Questo può essere semplicemente archiviato come stringa.
  2. Convalida questo usando un approccio in white list (potrebbe essere abbastanza complicato, forse dovrai cercare alcuni algoritmi di analisi basati su stack). Potresti consentire: + - / * () {costanti numeriche} {parole chiave per prezzi base}.
  3. Traduci queste formule in qualcosa che il tuo database possa comprendere nell'elenco SELEZIONA. Se le formule che inseriscono sono simili a quelle che puoi fare in SQL, questo potrebbe non essere troppo difficile. Le parole chiave vengono trasformate in nomi di colonne e tutto il resto può essere lasciato solo.

Quindi, sarai in grado di SELEZIONARE i dati, fare la media nei periodi di tempo, ecc. inserendo il modulo speciale ed eseguendolo sui tuoi dati storici e / o previsioni.

Il passaggio 2 ha alcuni trucchi per farlo, ma renderebbe tutto il resto facile (ed efficiente).

Altri suggerimenti

Hai considerato l'integrazione con Excel? In questo modo non devi cercare di estrarre Excel dalle loro grinfie (utenti aziendali ADORE Excel) e possono usare tutti i trucchi che hanno imparato negli anni. Pompi semplicemente i dati avanti e indietro tra la tua app ed Excel usando VBA (o comunque dicono alle persone di integrarsi con Excel in questi giorni) e sei praticamente bravo a andare.

Ho una soluzione ridicolmente semplice relativa alla proposta di Hank. Crea un database e modellalo dopo le tue tabelle Excel. Esporta i dati di Excel e importali nel tuo database. Creare connettori ODBC sui computer client per puntare al database. In Excel, è possibile connettersi alle origini dati. In questo modo, i tuoi clienti non avranno problemi con le modifiche all'interfaccia utente.

Scenario interessante. ATTENZIONE: questa risposta si basa su alcune idee che ho avuto per affrontare il problema e potrebbe non riflettere le migliori pratiche.

Proverei a vedere se riesci a ridurre le tue potenziali regole di formula in costrutti più semplici. Ciò consentirebbe quindi di comporre le regole insieme per creare formule complesse. Dovresti quindi essere in grado di memorizzare le regole all'interno del database, cosa che potrebbe essere fatta usando un DSL o un file di regole XML.

Sembra che il tuo scenario attuale, la formula sia in Excel, stia funzionando abbastanza bene ma ha qualche singhiozzo. Hai mai pensato di utilizzare alcune macro avanzate o l'automazione di Excel? Probabilmente potresti raggiungere la maggior parte dei tuoi obiettivi senza che i tuoi clienti non debbano mai lasciare Excel.

Buona fortuna.

Se i dati provengono da una fonte attendibile (grande se) è possibile archiviare espressioni di database in una colonna e quindi creare un'istruzione SELECT al volo per eseguirla.

Puoi usare un pacchetto matematico simbolico come GiNaC per interpretare le formule che inserisci tabelle.

Grazie per le risposte.

Gli stessi utenti vogliono allontanarsi da Excel. Stanno combattendo con più utenti che cercano di inserire e aggiornare i dati. Potrei studiare quali opzioni offre VSTO per incorporare piccoli fogli Excel nelle applicazioni.

Mi sto orientando verso l'uso di un "linguaggio" incorporato per archiviare e valutare le formule.

L'uso di un semplice parser per trasformare le formule immesse in SQL è probabilmente un'idea ragionevole in quanto le variabili nelle equazioni sono vettori di serie temporali non punti di dati scalari e l'approccio SQL dovrebbe semplificare il calcolo dei risultati nei periodi di tempo richiesti.

Grazie

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top