Jag har läst den diskussion du nämnde. Den är tillämplig på PostgreSQL eftersom det är tillåtet att skapa användardefinierad aggregatfunktion med SQL i PostgreSQL, men inte tillåtet i SQL Server. Att använda rekursiv CTE är ett genomförbart sätt i SQL Server, men jag märker att CTE-vägen kan leda till mer tabellskanning än fönstervalster. Så jag gör det här inlägget för att fråga om det är möjligt att beräkna exponentiell glidande medelvärde genom att använda SQL Server 2012 fönsterfunktion precis som att beräkna enkelt glidande medelvärde. Ndash xiagao1982 14 april kl 13:53 Först beräknar du EMA (SMA (x)) istället för EMA (x). För det andra är din quotsmoothing constantquot faktiskt beta-värdet i min formel, inte alfa. Med dessa två förändringar ser SQLFiddle ut så här: sqlfiddle6191921 Det finns emellertid fortfarande en liten skillnad mellan det faktiska resultatet och det förväntade resultatet. Jag skulle gå tillbaka och se om deras EMA-definition matchar den jag känner. Ndash Sebastian Meine 7 maj 13 kl 13:46 Jag tittade bara på formuläret i kalkylbladet du bifogade och det är långt ifrån standard EMA-definitionen. Min formel beräknar exponentiell glidande medelvärde av de senaste tio raderna. Kalkylbladet beräknar först standardvärdet för de senaste tio raderna och sedan det obegränsade exponentiellt vägda glidande genomsnittet över alla medelvärden. Detta följer formuläret här: en. wikipedia. orgwikiEWMAchart ndash Sebastian Meine 7 maj 13:52 Den huvudsakliga defekten i ditt program är att rekursiv beräkning är felaktig. För att beräkna medelvärdet måste du få summan av det aktuella värdet och de återstående värdena. Dividera sedan summan med antalet värden. Antalet värden är num. Det nuvarande värdet är vilket beräkningsnummer () returnerar. Summan av de återstående värdena är num-1 multiplicerad med genomsnittet av de återstående värdena. Medelvärdet av de återstående värdena beräknas genom att göra ett rekursivt samtal till medelvärdet (). Således skriver vi följande: Ett komplett program med den funktionen kan se ut så här: Observera att det här inte är ett mycket bra sätt att beräkna medelvärdet eftersom du förlorar precision varje gång du delar nuvarande summan med num. När detta medel multipliceras igen när det rekursiva samtalet återvänder, återställs inte de signifikanta siffrorna som du förlorade i divisionen. Du förstör information genom att dela och multiplicera summan. För större precision, vill du hålla koll på summan när du går igenom elementen, dividerar sedan i slutet. En annan punkt att tänka på är vad som menas med ett glidande medelvärde. Vad vi har genomfört ovan är inte ett glidande medelvärde men ett fast medelvärde. Det är medelvärdet av ett fast elementfönster. Om du flyttar fönstret med ett läge måste du börja om och beräkna summan igen. Det rätta sättet att genomföra ett rörligt fönster är att hålla koll på alla element i fönstret. När du flyttar fönstret en position till höger tar du bort det vänstra elementet från fönstret och subtraherar dess värde från summan och lägger sedan till det nya högsta elementet i fönstret och lägger till dess värde till summan. Det är det som gör det en rörlig summa. Att dela den rörliga summan med antalet element ger dig det rörliga genomsnittet. Det naturliga sättet att genomföra ett rörligt fönster är med en kö eftersom du kan lägga till nya element i huvudet och popa gamla element från svansen. Svarat 22 november 14 kl 17: 44Förvisning av exponentiellt viktad rörlig genomsnittsvolatilitet är den vanligaste riskmåtten, men den kommer i flera smaker. I en tidigare artikel visade vi hur man beräkna enkel historisk volatilitet. (För att läsa den här artikeln, se Använd volatilitet för att mäta framtida risk.) Vi använde Googles faktiska aktiekursdata för att beräkna den dagliga volatiliteten baserat på 30 dygns lagerdata. I den här artikeln kommer vi att förbättra den enkla volatiliteten och diskutera exponentialvägt rörligt medelvärde (EWMA). Historisk Vs. Implicit Volatilitet Först, låt oss sätta den här metriska in i lite perspektiv. Det finns två breda tillvägagångssätt: historisk och underförstådd (eller implicit) volatilitet. Det historiska tillvägagångssättet förutsätter att förflutet är en prolog som vi mäter historia i hopp om att det är förutsägbart. Implicit volatilitet, å andra sidan, ignorerar historien som den löser för volatiliteten implicerad av marknadspriser. Det hoppas att marknaden vet bäst och att marknadspriset innehåller, även om det implicit är, en konsensusuppskattning av volatiliteten. (För relaterad läsning, se volatilitetens användningar och gränser.) Om vi fokuserar på bara de tre historiska tillvägagångssätten (till vänster ovan), har de två steg gemensamt: Beräkna serien av periodisk avkastning Använd ett viktningsschema För det första Beräkna den periodiska avkastningen. Det är typiskt en serie av dagliga avkastningar där varje avkastning uttrycks i fortlöpande sammansatta termer. För varje dag tar vi den naturliga loggen av förhållandet mellan aktiekurserna (dvs. pris idag dividerat med pris igår, och så vidare). Detta ger en serie dagliga avkastningar, från dig till jag i-m. Beroende på hur många dagar (m dagar) vi mäter. Det får oss till det andra steget: Det är här de tre metoderna skiljer sig åt. I den föregående artikeln (Använd volatilitet för att mäta framtida risker) visade vi att enligt enkla acceptabla förenklingar är den enkla variansen genomsnittet av de kvadrerade avkastningarna: Observera att summan av varje periodisk avkastning delar upp den totala av Antal dagar eller observationer (m). Så det är verkligen bara ett genomsnitt av den kvadrerade periodiska avkastningen. Sätt på ett annat sätt, varje kvadrerad retur får lika stor vikt. Så om alfa (a) är en viktningsfaktor (specifikt en 1m) ser en enkel varians något ut så här: EWMA förbättras på enkel varians Svagheten i denna metod är att alla avkastningar tjänar samma vikt. Yesterdays (väldigt nyligen) avkastning har inget mer inflytande på variansen än i föregående månad tillbaka. Detta problem fastställs med hjälp av exponentiellt viktat glidande medelvärde (EWMA), i vilken nyare avkastning har större vikt på variansen. Det exponentiellt viktade glidande medlet (EWMA) introducerar lambda. Som kallas utjämningsparametern. Lambda måste vara mindre än en. Under det förhållandet, i stället för lika vikter, vägs varje kvadrerad avkastning med en multiplikator enligt följande: RiskMetrics TM, ett finansiellt riskhanteringsföretag, tenderar till exempel att använda en lambda på 0,94 eller 94. I det här fallet är den första ( Senaste) kvadratiska periodiska avkastningen vägs av (1-0,94) (.94) 0 6. Nästa kvadrerade retur är helt enkelt en lambda-multipel av den tidigare vikten i detta fall 6 multiplicerat med 94 5,64. Och den tredje föregående dagens vikt är lika med (1-0,94) (0,94) 2 5,30. Det är betydelsen av exponentiell i EWMA: varje vikt är en konstant multiplikator (dvs lambda, som måste vara mindre än en) av den tidigare dagens vikt. Detta säkerställer en varians som är viktad eller partisk mot senare data. (Mer information finns i Excel-kalkylbladet för Googles volatilitet.) Skillnaden mellan helt enkelt volatilitet och EWMA för Google visas nedan. Enkel volatilitet väger effektivt varje periodisk avkastning med 0,196 som visas i kolumn O (vi hade två års daglig aktiekursdata, det vill säga 509 dagliga avkastningar och 1509 0,196). Men märk att kolumn P tilldelar en vikt av 6, sedan 5,64, sedan 5,3 och så vidare. Det är den enda skillnaden mellan enkel varians och EWMA. Kom ihåg: När vi summerar hela serien (i kolumn Q) har vi variansen, vilket är kvadraten av standardavvikelsen. Om vi vill ha volatilitet, måste vi komma ihåg att ta kvadratroten av den variansen. Vad är skillnaden i den dagliga volatiliteten mellan variansen och EWMA i Googles fall. Det är viktigt: Den enkla variansen gav oss en daglig volatilitet på 2,4 men EWMA gav en daglig volatilitet på endast 1,4 (se kalkylbladet för detaljer). Uppenbarligen avtog Googles volatilitet mer nyligen, därför kan en enkel varians vara artificiellt hög. Dagens Varians är en funktion av Pior Days Variance Du märker att vi behövde beräkna en lång serie av exponentiellt sjunkande vikter. Vi brukar inte göra matematiken här, men en av EWMA: s bästa egenskaper är att hela serien reduceras bekvämt till en rekursiv formel: Rekursiv betyder att dagens variansreferenser (det vill säga är en funktion av den tidigare dagens varians). Du kan även hitta denna formel i kalkylbladet, och det ger exakt samma resultat som longhandberäkningen. Det står: Dagens varians (under EWMA) motsvarar ysterdays variance (viktad med lambda) plus ysterdays squared return (vägd av en minus lambda). Lägg märke till hur vi bara lägger till två termer tillsammans: Vardagens viktiga varians och gårdagens viktiga, kvadrerade avkastning. Ändå är lambda vår utjämningsparameter. En högre lambda (t ex som RiskMetrics 94) indikerar långsammare sönderfall i serien - relativt sett kommer vi att ha fler datapunkter i serien och de kommer att falla av långsammare. Å andra sidan, om vi reducerar lambda, indikerar vi högre sönderfall: vikterna faller av snabbare och som ett direkt resultat av det snabba förfallet används färre datapunkter. (I kalkylbladet är lambda en ingång, så du kan experimentera med sin känslighet). Sammanfattning Volatilitet är den aktuella standardavvikelsen för ett lager och den vanligaste riskvärdet. Det är också kvadratrot av varians. Vi kan mäta varians historiskt eller implicit (implicit volatilitet). När man mäter historiskt är den enklaste metoden enkel varians. Men svagheten med enkel varians är alla avkastningar får samma vikt. Så vi står inför en klassisk avvägning: vi vill alltid ha mer data, men ju mer data vi har desto mer är vår beräkning utspädd med avlägsna (mindre relevanta) data. Det exponentiellt vägda glidande genomsnittet (EWMA) förbättras på enkel varians genom att tilldela vikter till periodisk avkastning. Genom att göra detta kan vi båda använda en stor samplingsstorlek men ge också större vikt till nyare avkastningar. (För att se en filmhandledning om detta ämne, besök Bionic Turtle.) Artikel 50 är en förhandlings - och avvecklingsklausul i EU-fördraget som beskriver de åtgärder som ska vidtas för vilket land som helst. Beta är ett mått på volatiliteten, eller systematisk risk, av en säkerhet eller en portfölj i jämförelse med marknaden som helhet. En typ av skatt som tas ut på kapitalvinster som uppkommit av individer och företag. Realisationsvinster är vinsten som en investerare. En beställning att köpa en säkerhet till eller under ett angivet pris. En köpgränsorder tillåter näringsidkare och investerare att specificera. En IRS-regel (Internal Revenue Service Rule) som tillåter utbetalningar från ett IRA-konto i samband med straff. Regeln kräver det. Den första försäljningen av lager av ett privat företag till allmänheten. IPOs utfärdas ofta av mindre, yngre företag som söker. Scientist och Engineers Guide till Digital Signal Processing av Steven W. Smith, Ph. D. En enorm fördel med det glidande medelfiltret är att det kan implementeras med en algoritm som är mycket snabb. För att förstå denna algoritm, föreställ dig att du skickar en insignal, x, genom ett sjupunkts glidande medelfilter för att bilda en utsignal, y. Se nu hur två närliggande utgångspunkter, y 50 och y 51, beräknas: Dessa är nästan samma beräkningspunkter x 48 till x 53 måste läggas till y 50 och igen för y 51. Om y 50 redan har beräknats , Det effektivaste sättet att beräkna y 51 är: När y 51 har hittats med y 50 kan y 52 beräknas från prov y 51, och så vidare. När den första punkten är beräknad i y, kan alla andra punkter hittas med endast ett enda tillägg och subtraktion per punkt. Detta kan uttryckas i ekvationen: Observera att denna ekvation använder två datakällor för att beräkna varje punkt i utgången: poäng från inmatningen och tidigare beräknade punkter från utgången. Detta kallas en rekursiv ekvation, vilket innebär att resultatet av en beräkning används i framtida beräkningar. (Termen rekursiv har också andra betydelser, särskilt i datavetenskap). Kapitel 19 diskuterar en rad olika rekursiva filter mer detaljerat. Var medveten om att det rörliga genomsnittliga rekursiva filtret är väldigt annorlunda än typiska rekursiva filter. I synnerhet har de mest rekursiva filtren ett oändligt långt impulsrespons (IIR), som består av sinusoider och exponentiella. Impulsresponsen för det rörliga genomsnittsvärdet är en rektangulär puls (finitivt impulsrespons eller FIR). Denna algoritm är snabbare än andra digitala filter av flera anledningar. För det första finns det bara två beräkningar per punkt, oberoende av längden på filterkärnan. För det andra är addition och subtraktion den enda matteoperationen som behövs, medan de flesta digitala filter kräver tidskrävande multiplikation. För det tredje är indexeringssystemet mycket enkelt. Varje index i ekv. 15-3 hittas genom tillsats eller subtraktion av heltalskonstanter som kan beräknas före filtreringsstart (dvs p och q). Framåt kan hela algoritmen utföras med heltalrepresentation. Beroende på vilken hårdvara som används kan heltal vara mer än en storleksordning snabbare än flytpunkten. Överraskande fungerar heltalsrepresentation bättre än flytpunkten med denna algoritm, förutom att vara snabbare. Avrundningsfelet från flytpunktsräkning kan ge oväntade resultat om du inte är försiktig. Tänk dig till exempel att en 10.000 provsignal filtreras med denna metod. Det sista provet i den filtrerade signalen innehåller det ackumulerade felet på 10 000 tillägg och 10 000 subtraheringar. Detta framträder i utsignalen som en drivförskjutning. Helheter har inte detta problem eftersom det inte finns något avrundningsfel i aritmetiken. Om du måste använda flytpunkten med denna algoritm, visar programmet i tabell 15-2 hur du använder en dubbel precisionsackumulator för att eliminera denna drift.
No comments:
Post a Comment