|
SideCar
|
Files | |
| file | App.h [code] |
| file | ChannelConnection.h [code] |
| file | ChannelConnectionModel.h [code] |
| file | ChannelConnectionView.h [code] |
| file | ChannelConnectionWindow.h [code] |
| file | ConfigurationWindow.h [code] |
| file | CursorWidget.h [code] |
| file | DisplayView.h [code] |
| file | History.h [code] |
| file | HistoryBuffer.h [code] |
| file | HistoryControlWidget.h [code] |
| file | HistoryControlWindow.h [code] |
| file | HistoryFrame.h [code] |
| file | HistoryPosition.h [code] |
| file | HistorySettings.h [code] |
| file | HistorySlotManager.h [code] |
| file | MainWindow.h [code] |
| file | PeakBarSettings.h [code] |
| file | RadarInfoWidget.h [code] |
| file | RenderInfo.h [code] |
| file | ScaleWidget.h [code] |
| file | VideoChannel.h [code] |
| file | ViewChanger.h [code] |
| file | Visualizer.h [code] |


{% extends "layout.html" %} {%block content%}
If any image files have been changed since they were last encoded the filename will be listed below.
This is done by computing an image hash and comparing it to the hash saved when the face encoding file was saved.
It is useful for checking if any image was changed or different images of the same filename have been mixed up.
Number of encoding files scanned: {{fc}}
{%if shashcheck | length >0%}
Issues have been found!
You should delete the face encoding files listed and regenerate the face encodings.
The encoding files will be located in the mapped SEARCH folder.
Files with differences:
{{shashcheck}}
No issues found - each face encoding file matches the corresponding image file.
{% endif %} {%endblock content%}


Qi Sample - Javascript and Angular Sample
When you run the example, you will create and insert a Qi namespace, update the data, retrieve data, add a behavior, and then delete the namespace.
This application requires cookies. Please ensure your browser supports 3rd party cookies.


--- layout: default tab-title: Bio title: My Bio ---
My name is Jamie E. Young. This is not my real name. This is my story.
I never got accustomed to staying in one place too long. I was raised in a family where my parents (an academic and an engineer) moved us (me and siblings) periodically across our childhoods. Amid this, one fortunate constant in my life was the beauty of technical academic subjects which I fell in love with in school since age 5. The mathematics, the sciences, and other technical subjects never ceased to keep me excited, in a time when other things seemed less permanent.
Fast forward a few decades. I had embarked on an academic journey - the life of the mind. I shared in the joy of discussing intellectual ideas with my academic peers - college mathematics classmates, which became PhD friends, and as of late fellow professors and researchers. I've built what my peers may consider a promising start to a stable academic career, which has led to where I am now as a professor in a STEM field at a small college in the US. (No, it is not a fancy top 20 US research university).
This year, 2020, the Coronavirus pandemic struck parts of the USA hard - inculding my university community, disrupting my academic routine I had built up. With my sabbatical upcoming soon, I had planned on using my saved-up time to dive head-first into a backlog of project ideas. Instead, I streamed Netflix shows, gorged on snacks, and procrastinated by wandering the side streets of the internet when I could no longer do real analysis over a cup of joe at my favorite cafe. One day, in my procrastination stupor and apocalypse mindset, I stumbled upon an online wormhole to another universe. A universe, where I found my intellectual ideas could collide with a furious flurry of invention, experimentation and urgency.
This universe is Crypto, which I began following in 2015 (buying my first bitcoin, ethereum, and altcoins). In 2020 I've become reacquainted with crypto as I learned more about its latest evolving subspace DeFi (Decentralized Finance). Here, gathering online, in the middle of the global pandemic, is an internet party of distributed individuals all across the globe, spanning creed and training, exploring open challenges about how decentralized markets of the next generation should work: AMMs, synthetic assets, bonding curves, flash loans, auction theory, composability, token economics, DAO governance, mechanism design. I was curious and energized by what I first saw - prompting me to dive head-first in, following online discussions on Twitter, hearing about users reacting to the new inventions they saw in DeFi. After perusing my first few whitepapers in this space, I recognized the rife potential for leveraging my open problem solving mind in mathematics and technical subjects. Here is a place, where even a professor can join in on the fun, and try their hand at making something useful, without the red tape dictated by the ivory tower.
During this time of upheaval in my personal life, I realized that Crypto and DeFi match my three criteria for areas of meaningful study to me. It must be above all:Just perhaps, my lifelong interest in mathematics and other technical subjects, has finally met a match. Just one constant could change the flow of a billion dollars, just one line of errant code could wipe out the entire bankroll of a participant. Never could I have imagined that my intellectual ideas could find a space where they exert this kind of leverage and usefulness. I am embarking down this path in earnest, with the kind help of others, keeping this pursuit separate from my day job as a US college professor.
There they still are, making things up as they go along, building, and sometimes stumbling hard in the process.
It's a beautiful thing.
See you there soon.


CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionality.
A rich programming API and a CSS theming system are available for customizing CodeMirror to fit your application, and extending it with new functionality.
This is CodeMirror
Country: Netherlands
SWIFT: RABONL2U
Account: 147850770
Name: Marijn Haverbeke
IBAN: NL26 RABO 0147 8507 70
Features
- Support for over 60 languages out of the box
- A powerful, composable language mode system
- Autocompletion (XML)
- Code folding
- Configurable keybindings
- Vim, Emacs, and Sublime Text bindings
- Search and replace interface
- Bracket and tag matching
- Support for split views
- Linter integration
- Mixing font sizes and styles
- Various themes
- Able to resize to fit content
- Inline and block widgets
- Programmable gutters
- Making ranges of text styled, read-only, or atomic
- Bi-directional text support
- Many other methods and addons...
Community
CodeMirror is an open-source project shared under an MIT license. It is the editor used in the dev tools for both Firefox and Chrome, Light Table, Adobe Brackets, Bitbucket, and many other projects.
Development and bug tracking happens on github (alternate git repository). Please read these pointers before submitting a bug. Use pull requests to submit patches. All contributions must be released under the same MIT license that CodeMirror uses.
Discussion around the project is done on a mailing list. There is also the codemirror-announce list, which is only used for major announcements (such as new versions). If needed, you can contact the maintainer directly.
A list of CodeMirror-related software that is not part of the main distribution is maintained on our wiki. Feel free to add your project.
Browser support
The desktop versions of the following browsers,
in standards mode (HTML5 <!doctype html>
recommended) are supported:
| Firefox | version 4 and up |
|---|---|
| Chrome | any version |
| Safari | version 5.2 and up |
| Internet Explorer | version 8 and up |
| Opera | version 9 and up |
Modern mobile browsers tend to partly work. Bug reports and patches for mobile support are welcome, but the maintainer does not have the time or budget to actually work on it himself.
Supported modes:
- APL
- Asterisk
- C, C++, C#
- Java
- Scala
- Clojure
- COBOL
- CoffeeScript
- Common Lisp
- CSS
- LESS
- SCSS
- D
- diff
- DTD
- ECL
- Eiffel
- Erlang
- Fortran
- GNU as (Assembler)
- Gherkin
- Go
- Groovy
- HAML
- Haskell
- Haxe
- HTML with embedded ASP.NET / JSP scripts
- HTML mixed-mode
- HTTP
- Jade
- JavaScript
- Typescript
- Jinja 2
- Julia
- LiveScript
- Lua
- Markdown (GitHub-flavour)
- mIRC
- OCaml
- nginx
- NTriples
- Octave
- Pascal
- pegJS
- Perl
- PHP
- Pig Latin mode
- Properties files
- Python
- CVSutil Q mode
- GNU R
- RPM ChangeLog
- rpm
- reStructuredText
- Ruby
- Rust
- Sass
- Scheme
- Shell
- Sieve
- Smalltalk
- Smarty
- Smarty/HTML mixed
- Smarty Mixed
- SPARQL
- SQL (several dialects)
- sTeX, LaTeX
- Tcl
- TiddlyWiki
- Tiki
- Toml
- Turtle
- VB.NET
- VBScript
- Velocity
- Verilog
- XML/HTML
- XQuery
- YAML
- Z80
- The full List...
Usage demos:
- Autocompletion (XML)
- Autocompletion while you type
- Search/replace
- Code folding
- Bi-directional text
- Line widgets (via JSHint)
- Split view
- Mode overlays
- Mode multiplexer
- HTML editor with preview
- Auto-resizing editor
- Setting breakpoints
- Highlighting the current line
- Highlighting selection matches
- Theming
- Mixed font sizes
- Stand-alone highlighting
- Full-screen editing
- Mode auto-changing
- Visible tabs
- Emacs keybindings
- Vim keybindings
- Automatic xml tag closing
- Lazy mode loading
- Document tree visualization
- Any word hint
- Automatic bracket closing
- HTML completion (with HTML5 tag support)
- Indented wrapped line
- JavaScript Linter add-on
- Selection marking
- Match tags
- Merge view (visual diff edit view)
- Placeholder add-on
- Span affects wrapping (odd wrapping shim)
- Tern Mode (auto-completion)
- Trailing whitespace
- Hardwrap
- Multiselect
- Palette
Real-world uses:
- Light Table
- Adobe Brackets
- WebKit Web inspector
- jsbin.com
- jsfiddle.net
- Bitbucket
- Google Apps Script
- Eloquent JavaScript
- Emmet
- Prose.io
- Upsource
- Paper.js
- Codev
- Tributary
- WeScheme
- Mergely
- WebGL playground
- The File Tree
- JSHint
- SQLFiddle
- CSSDeck
- sketchPatch Livecodelab
- NoTex
- GitHub's Android app
- More...
Getting the code
All of CodeMirror is released under a MIT-style license. To get it, you can download the latest release or the current development snapshot as zip files. To create a custom minified script file, you can use the compression API.
We use git for version control. The main repository can be fetched in this way:
git clone http://marijnhaverbeke.nl/git/codemirror
CodeMirror can also be found on GitHub at marijnh/CodeMirror. If you plan to hack on the code and contribute patches, the best way to do it is to create a GitHub fork, and send pull requests.
Documentation
The manual is your first stop for learning how to use this library. It starts with a quick explanation of how to use the editor, and then describes the API in detail.
For those who want to learn more about the code, there is a series of posts on CodeMirror on my blog, and the old overview of the editor internals. The source code itself is, for the most part, also very readable.
Support and bug reports
Community discussion, questions, and informal bug reporting is done on the CodeMirror Google group. There is a separate group, CodeMirror-announce, which is lower-volume, and is only used for major announcements—new versions and such. These will be cross-posted to both groups, so you don't need to subscribe to both.
Though bug reports through e-mail are responded to, the preferred way to report bugs is to use the GitHub issue tracker. Before reporting a bug, read these pointers. Also, the issue tracker is for bugs, not requests for help.
When none of these seem fitting, you can simply e-mail the maintainer directly.
Country: Netherlands
SWIFT: RABONL2U
Account: 147850770
Name: Marijn Haverbeke
IBAN: NL26 RABO 0147 8507 70


Someone in the office mentioned RethinkDb and I was impressed by the rhetoric on the site, so I decided to spend a couple of hours spiking one of our existing nodejs apps with RethinkDb. The app currently uses MongoDb so inevitably I’m comparing the two.
Things I liked:
Nodejs Driver
The api on the nodejs driver is pretty nice, it makes a concerted effort to reduce “pyramid code” by allowing you to build your query by method-chaining and then call a .run()
extension to execute the query.
1 2 3 4 5 6 7 8 9 10 |
|
Interface The management interface is very good, incredibly friendly, and has guided access to things like sharding and replication settings (as well as the usual array of other things to tinker with).
Sharding, Replication and Clustering
It’s all there, up front in the web UI, written in plain English and with friendly guides to help. The health and performance monitoring is available up-front in clear and concise graphics.
Writes are non-locking operations
A major bugbear for us with mongoDb is that writes require a database-level lock. RethinkDb allows block-level locks for write operations, and furthermore, reads can still proceed while write locks are in effect. MVCC ftw!
Things I didn’t like:
Cannot query on unindexed fields
Meaning ad-hoc queries can be a pain-in-the-arse, especially if you have a large data set.
Performance
RethinkDb readily admit that their current release (v1.9.0) has taken a performance hit after implementing their clustering layer. They are hopeful that they can bring the performance back in the next few versions. My very simple, somewhat unscientific testing found it to be about 5 times slower than mongo, for a simple document read (20ms vs 120ms).
Joins
Don’t get me wrong, it’s a nice feature, it just makes me feel dirty to do joins on a document database.
Conclusion
RethinkDb is a good looking database. It’s feature-full and dead simple to use. Would I use it in production? Not yet. The performance issues are still a sticking point for me, but I have no doubt that once these are fixed RethinkDb will be a big contender.


Definition at line 45 of file sockets.c.
Referenced by alloc_socket().
Definition at line 51 of file sockets.c.
Definition at line 50 of file sockets.c.
Definition at line 46 of file sockets.c.
Definition at line 47 of file sockets.c.
Definition at line 48 of file sockets.c.
Definition at line 49 of file sockets.c.


Background by Viking011
A tool to help plan and share your Animal Crossing town!
Start PlanningNew Horizons
Start PlanningNew Leaf


this is all about web coding demo
i'm a function paragraph
mouse over me to change the text
the other tag is removed
this is going to be remove


Home
Hello world!
Core features
Getting the source
Core API
innerHTML
outerHTML
html
use
addTransitionState
removeTransitionState
createTree
release
Internals
VERSION
Parser
Options
Dynamic values
Transitions
Available states
Middleware
Writing middleware
Inline Transitions
Logger
Service Worker
Synthetic Events
Verify State
HTML Linter
Components
Overview
Component
Web Component
JSX
React Compatibility
Additional Packages
Babel Transform
Render to String
Live Reload Server
DevTools
Examples (Glitch)
Hello World!
Clock
TodoMVC
≡
diffHTML
v1.0.0-beta.14
An easy-to-use Virtual DOM built for the web!
Edit on GitHub


File List
Search:
- component-imports.coffee
- knockback-core
- knockback-collection-observable.coffee knockback-core
- knockback-core.coffee knockback-core
- knockback-model-watcher.coffee knockback-core
- knockback-observable.coffee knockback-core
- knockback-utils.coffee knockback-core
- knockback-view-model.coffee knockback-core
- knockback-defaults
- knockback-default-observable.coffee knockback-defaults
- knockback-extensions.coffee knockback-defaults
- knockback-formatting
- knockback-formatted-observable.coffee knockback-formatting
- knockback-localization
- knockback-localized-observable.coffee knockback-localization
- knockback-triggering
- knockback-triggered-observable.coffee knockback-triggering


| Name: mast.Devansh | Reg No: 7-10SMHC17 |
|---|---|
| Age / Sex:8 months | Contact No:9916684711 |
| Marital Status:na | Date:28/10/17 |
| Occupation:na | Dr. PJFP |
| Address:b/o: tejaswi | DIAGNOSIS- |
WHITE PATCHES ON THE SKIN THE AGE OF 4 MONTHS. ALLO RX TOLD THT IT IS ATOPIC DERMATITIS.
HAD CONSTIPATION 2 MONTHS BACK. TOOK DUPHALAC THEN. AFTER WEANING THEN BETTER. ONCE IN A WHILE CRIES WHEN PASSIN URINE.
DURING PREGNANCY HAD A LOT OF OFFICE STRESS AND HUSBAND AND WIFE ISSUES. USE TO CRY A LOT.
HITS HERSELF.
 EXPECTATION BTWN PARTNERS. GOT MARRIED AT THE AGE OF 30 YRS. Y NO RESPECT FOR ME. NO UNDERSTANDING, I WILL NOT HV A LEANING SHOUDER EVEN IF I EXPRESS,
GETTING RESTLESS , NOT GETTING CONCERN FROM HUSBAND. FEELING RESTLESS MORE. NO CONSOLATION. SOMETIMES FELT LIKE THROWING BABY FROM THT FLOOR. FEELS SORRY WEN THT THOT COMES. FESL LIKE HITTING KID WHEN SHE REMEMBERS HER IN LAWS AND AT THE SAME TIME KID DOESN’T COOPERATE. TOOK LACTARE TABS WHICH IMPROVED HER MILK. LET ME DIE AND TELL THEM. BUT NO GUTS. Y SUCH THOTS LIFE IS IMP.
RX:
NAT MUR 200 – DOSES – WEEKLY.
ALL CEPA+ACON 30
TUB1M – 2 DOSES – WEEKLY B/


Yuendumu: Policeman charged with Aboriginal teenager's murder
An Australian policeman has been charged with murder over the shooting death of an Aboriginal teenager in a case that has drawn national attention.
Kumanjayi Walker, 19, died after being arrested at a house in the Northern Territory (NT) on Saturday.
His death has sparked community anger and protests across the country.
Constable Zachary Rolfe, 28, was arrested on Wednesday, NT Police said. He will plead not guilty to murder, a police union said.
Mr Rolfe was granted bail following a court hearing and has been suspended with pay.
Police said they would also conduct an internal investigation into the shooting in Yuendumu, a remote community 300km (190 miles) north-west of Alice Springs.
The territory government has called for calm amid rising community tensions that have seen crowds converge on the police station in Yuendumu.
NT Chief Minister Michael Gunner said he acknowledged the Yuendemu community - 85% of whom identify as indigenous - was "hurting and grieving".
What is known about the case?
Mr Walker was shot sometime after two police officers went to arrest him for breaches of his suspended sentence, local media reported.
He died in the police station at Yuendumu. There was no medical care in the town at the time - medical staff from another town arrived after he had died.
NT health officials said the medical clinic in Yuendumu had been unstaffed due to safety concerns about break-ins.
The Royal Flying Doctor Service said it had also delayed travelling to the site because of safety concerns.
Mr Walker's family was notified of his death hours after he died, Australian media reported. Officials have classified his death as a "death in custody".
He is the second Aboriginal person to have died in the past two months after being shot by police. Joyce Clarke, 29, was fatally wounded in Western Australia in September.
Australia conducted a royal commission inquiry in 1991 into Aboriginal deaths in custody, but critics say recent reviews have been misleading and not enough is being done to address the issue.


Sign up
Welcome! It's great that you're interested in having an account to log in to Machine Learning for Kids.
Who are you?
Forgot your details
Forgot your username or password? That's okay - we all forget things sometimes.
Who are you?
Are you a teacher or leader of a coding club?
If you would like access for your students, please create a class account below.
There are two types of class account - depending on who sets it up.
Create an unmanaged class account
If you are happy to set up and manage the class account yourself, you can do it now!
You will need to:
- Create an account on IBM Cloud
- Create API key(s) for Watson cloud services needed to train machine learning models
- Enter the API keys into this Machine Learning for Kids tool
Step-by-step instructions (with screenshots) are available for all of this.
Create a managed class account
If you would like Dale to set up the class account, use the button below to send an email with the following information:
- When you would like the account for
- Roughly how many student accounts you will need
- The name of the school or coding group the account is for
Are you a student?
If your class is already using this tool, ask your teacher or coding group leader to create you an account.
If your class isn't already using the tool, ask your teacher or coding group leader to get in touch.
Are you a student?
If you're a student, we don't have your email address to be able to send you a password-reset email.
That's no problem, though!
Just ask your teacher or group leader who first signed you up. They will be able to reset your password from their Admin page.
Why register?
|
Try it now |
Create an account |
| Train machine learning models to recognise... |
| text |
|
|
| numbers |
|
|
| images |
|
|
| Use machine learning models from Scratch |
|
|
| Create projects |
1 project |
Multiple projects |
| Save and load projects |
|
|
| Work on machine learning projects... |
for a few hours |
until you delete them |
| from one computer |
anywhere online |
| by yourself |
by yourself OR with classmates |


Chapter 4 Volatility Models
This chapter is heavily based on Chapter 12 of Chatfield and Xing (2019) and Chapter 3 of Tsay (2010) .
4.1 Introduction
- Anything that is observed sequentially over time is a time series.
- Financial time series analysis focuses on the theory and practice of asset valuation over time.
- In finance, the data can be collected much more frequently – High frequency data.
- Many financial time series also exhibit changing variance and this can have important consequences in formulating financial decisions.
Example: Financial time series
- Typically, when we analyze assets, we look at the percentage change in prices or returns.
# Tidy financial analysis
library(tidyquant)
sp500 <- tq_get("^GSPC", from = "1995-01-04", to = "2021-02-25" )
print(sp500)
## # A tibble: 6,582 x 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ^GSPC 1995-01-04 459. 461. 458. 461. 3.20e8 461.
## 2 ^GSPC 1995-01-05 461. 461. 460. 460. 3.09e8 460.
## 3 ^GSPC 1995-01-06 460. 462. 459. 461. 3.08e8 461.
## 4 ^GSPC 1995-01-09 461. 462. 460. 461. 2.79e8 461.
## 5 ^GSPC 1995-01-10 461. 465. 461. 462. 3.52e8 462.
## 6 ^GSPC 1995-01-11 462. 464. 459. 462. 3.46e8 462.
## 7 ^GSPC 1995-01-12 462. 462. 461. 462. 3.13e8 462.
## 8 ^GSPC 1995-01-13 462. 466. 462. 466. 3.37e8 466.
## 9 ^GSPC 1995-01-16 466. 470. 466. 469. 3.16e8 469.
## 10 ^GSPC 1995-01-17 469. 470. 468. 470. 3.32e8 470.
## # … with 6,572 more rows
# Convert each assets raw adjusted closing prices to returns
sp500_return <- sp500 %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "daily")
sp500_return %>%
as_tsibble(index = date) %>%
autoplot(daily.returns) +
labs(x = "Day", y= "Daily return")
- The mean of the return series seems to be stable with an average return of approximately zero.
The volatility of data changes over time.
- The focus of this chapter is to study some methods and econometric models for modeling the volatility (conditional standard deviation) of an asset return.
- These models are referred to as conditional heteroscedastic models.
- These models do not generally provide better point forecasts, but provides a better estimates of the (local) variance.
- As a result they allow to compute more reliable prediction intervals and therefore a better assessment of risk.
- Volatility models have many applications in economics and finance.
This chapter discusses various types of univariate volatility models
4.2 Structure of a Model for Asset Returns
Let, \(\{P_T\}\), denotes a time series.
- Let, \(\{Y_T\}\), denotes a derived series from which any trend and seasonal effects have been removed and linear (short-term correlations) effects may also have been removed.
- Examples : Let \(\{P_T\}\) be share price at the \(t\)th trading day.
\[Y_t=log P_t - log P_{t-1} \text{ or } Y_t = \frac{P_t-P_{t-1}}{P_{t-1} }\times100\%\]
- This is often called the return or the growth rate of a series.
Example
- Let \(P_t\) be the adjusted closing prices of the S&P500 at the \(t\)th trading day.
- Let \(Y_t\) be the daily returns of the S&P500 Index at each day as shown in Figure 4.1.
- The basic idea in volatility modelling is that the return series \(\{Y_t\}\) has very few serial correlations, but it is a dependent series.
- Consider the sample ACFs and PACFs of \(Y_t\), \(|Y_t|\) and \(Y_t^2\) (Figure 4.2)
- Sample ACFs of the returns \(Y_t\) suggest no significant serial correlations except for small ones at lags 1, 3 and 5.
- However, the sample ACFs of \(|Y_t|\) and \(Y_t^2\), show strong dependence over all lags.
- Important feature: the returns may seem serially uncorrelated, but it is dependent.
- This is a common observations for daily returns series
Volatility of a return series
- Let \(Y_t\) be the innovations in a linear time series model.
- Let \(X_t\) follow an \(ARMA(p,q)\) model, \[\phi(B)X_t=\theta(B)Y_t,\]
where \(\phi(B)\) and \(\theta(B)\) are polynomials of \(B\) with order \(p\) and \(q\), respectively.
Let \(\mathcal{F}_t\), the set of observed data up to time \(t\), (i.e. \(\{X_1,X_2,\dots, X_t\}\)).
Then the observation \(X_t\) can be written as \[X_t=\mu_t+Y_t,\] where \(\mu_t\) is the mean of \(X_t\) conditional on observed data \(\mathcal{F}_{t-1},\)
\[\mu_t=E(X_t|\mathcal{F}_{t-1})= \phi(B)X_t-(\theta(B)-1)Y_t\]
and the innovation series \(Y_t\) has mean 0 and conditional variance
\[\sigma_t^2=Var(X_t|\mathcal{F}_{t-1})=Var(Y_t|\mathcal{F}_{t-1})\]
- The conditional heteroscedastic models of this chapter are concerned with the evolution of \(\sigma_t^2\) over time.
- The model for \(\mu_t\) is referred to as the mean equation for \(X_t\) and the model for \(\sigma^2_t\) is the volatility equation for \(X_t.\)
4.3 Model Building
The process of building a volatility model for an asset return series consists of four main steps (Tsay 2010):
- Specify a mean equation by testing for serial dependence in the data and, if necessary, building an econometric model (e.g., an ARMA model) for the return series to remove any linear dependence.
- Use the residuals of the mean equation to test for ARCH effects.
- Specify a volatility model if ARCH effects are statistically significant, and perform a joint estimation of the mean and volatility equations.
- Check the fitted model carefully and refine it if necessary.
4.4 Testing for ARCH Effect
- Let \(Y_t = X_t − \mu_t\) be the residuals of the mean equation.
- The squared series \(Y_t^2\) is then used to check for conditional heteroscedasticity (also known as the ARCH effects).
- Volatility clustering implies a strong autocorrelation in squared series.
- There are two statistical tests for conditional heteroscedasticity
Method 1: Apply the usual Ljung–Box statistics \(Q(m)\) to the \(Y_t^2\) (McLeod and Li, 1983).
- The null hypothesis is that the first \(m\) lags of ACF of the \(Y_t^2\) series are zero.
Method 2: The Lagrange multiplier test of Engle (1982).
4.5 Autoregressive Conditional Heteroskedastic (ARCH) Models
ARCH model of Engle (1982) is the first model that provides a systematic framework for volatility modeling.
Main idea:
- \(Y_t\) is serially uncorrelated, but dependent,
- the dependence of \(Y_t\) can be described by a simple quadratic function of its lagged values.
- \(Y_t\) is serially uncorrelated, but dependent,
To better describe the idea, we represents \(Y_t\) having a zero means in the form
\[\begin{equation} \label{eq:1} Y_t=\sigma_t\epsilon_t, \end{equation}\]
\[\begin{equation} \label{eq:2} \sigma_t^2 =\alpha_0+\alpha_1Y_{t-1}^2+\dots+\alpha_mY_{t-m}^2, \end{equation}\]
where \(\{\epsilon_t\}\) is a sequence of iid random variables with mean zero and variance 1.
- \(\sigma_t\) can be thought of as the local conditional standard deviation of the process.
- \(\alpha_0>0\), and \(\alpha_i\geq0\) for \(i > 0\).
- To ensure that the unconditional variance of \(Y_t\) is finite, coefficients \(\alpha_i\) must satisfy some regularity conditions.
- The \(\epsilon_t\) may follow the standard normal or a standardized Student-t or a generalized error distribution.
- A model for \(Y_t\) satisfying Equations and is called an autoregressive conditional heteroskedastic model of order \(m\) (\(ARCH(m)\))
- Note that Equation does not include an ‘error’ term and therefore does not define a stochastic process.
The ARCH model allows for volatility clustering as the conditional variance \(\sigma_t^2\) in Equation depends on the lagged squared innovations \(Y^2_{t−1}\). A large (positive or negative) residual at time \(t − 1\) implies that \(Y^2_{t−1}\) is large and consequently the conditional variance \(\sigma_t^2\) will be large as \(\alpha_i ≥ 0\). Thereby, large shocks tend to be followed by large shocks (in absolute terms) and small shocks tend to be followed by small shocks (in absolute terms). This is the feature we call volatility clustering.
However, large variance does not necessarily produce a large realization. It only says that the probability of obtaining a large variate is greater than that of a smaller variance.
4.5.1 Example: Building an ARCH Model
Let’s apply the modeling procedure to build a simple ARCH model for the daily returns, \(X_t,\), of adjusted closing prices of the S&P500 index.
- Figure 4.1 shows the daily return series from January 4, 1995 to February 25, 2021.
- The sample ACF and PACF of the squared returns in the bottom panel of Figure 4.2, show the existence of conditional heteroscedasticity.
- If an ARCH effect is found to be significant, one can use the PACF of \(Y_t^2\) to determine the ARCH order.
We consider an ARCH(2) model with the following specification for the daily return series
\[X_t=\mu+Y_t,\] \[Y_t=\sigma_t\epsilon_t,\] \[\sigma_t^2=\alpha_0+\alpha_1Y_{t-1}^2 + \alpha_2Y_{t-2}^2.\]
- We use the R function
garchFit
in the R packagefGarch
to estimate the model.
# install.packages("fGarch")
library(fGarch)
fit1 <- garchFit(~garch(2,0), data =sp500_return$daily.returns)
summary(fit1)
##
## Title:
## GARCH Modelling
##
## Call:
## garchFit(formula = ~garch(2, 0), data = sp500_return$daily.returns)
##
## Mean and Variance Equation:
## data ~ garch(2, 0)
## <environment: 0x7fadb53fae90>
## [data = sp500_return$daily.returns]
##
## Conditional Distribution:
## norm
##
## Coefficient(s):
## mu omega alpha1 alpha2
## 7.7804e-04 5.8828e-05 2.2118e-01 3.8733e-01
##
## Std. Errors:
## based on Hessian
##
## Error Analysis:
## Estimate Std. Error t value Pr(>|t|)
## mu 7.780e-04 1.098e-04 7.087 1.37e-12 ***
## omega 5.883e-05 1.818e-06 32.366 < 2e-16 ***
## alpha1 2.212e-01 1.967e-02 11.245 < 2e-16 ***
## alpha2 3.873e-01 2.368e-02 16.354 < 2e-16 ***
## ---
## Signif. codes:
## 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log Likelihood:
## 20748 normalized: 3.152
##
## Description:
## Sat Feb 27 13:39:26 2021 by user:
##
##
## Standardised Residuals Tests:
## Statistic p-Value
## Jarque-Bera Test R Chi^2 2657 0
## Shapiro-Wilk Test R W NA NA
## Ljung-Box Test R Q(10) 21.61 0.01721
## Ljung-Box Test R Q(15) 34.45 0.002941
## Ljung-Box Test R Q(20) 38.39 0.007933
## Ljung-Box Test R^2 Q(10) 362.7 0
## Ljung-Box Test R^2 Q(15) 546.8 0
## Ljung-Box Test R^2 Q(20) 713.2 0
## LM Arch Test R TR^2 428.5 0
##
## Information Criterion Statistics:
## AIC BIC SIC HQIC
## -6.303 -6.299 -6.303 -6.302
Plot the result
sp500_return <- sp500_return %>%
mutate(vol = volatility(fit1),
resid.st = residuals(fit1, standardize=T)) %>%
as_tsibble(index = date, regular = FALSE)
p1 <- sp500_return %>% autoplot(vol)
p2 <- sp500_return %>% autoplot(resid.st)
p3 <- sp500_return %>% ACF(resid.st) %>% autoplot()
p4 <- sp500_return %>% PACF(resid.st) %>% autoplot()
p5 <- sp500_return %>% ACF(resid.st^2) %>% autoplot()
p6 <- sp500_return %>% PACF(resid.st^2) %>% autoplot()
- Assuming that \(\epsilon_t\) are iid, standard normal, we get the fitted model as follows:
\[X_t = 0.0007804_{(1.098e-04)} + Y_t, \text{ }Y_t=\sigma_t\epsilon_t,\]
\[\sigma_t^2=0.00005883_{(1.818e-06)}+0.2212_{(1.967e-02)}Y_{t-1}^2 + 0.3873_{(2.368e-02)}Y_{t-2}^2\]
where the standard errors of the parameters are given in the parentheses.
- Both the output and the plot show that the estimated residuals still have conditional heteroscedasticities.
- Therefore, the ARCH(2) model is not adequate.
4.6 Generalized ARCH (GARCH) Models
Although the ARCH model is simple, it often requires many parameters to adequately describe the volatility process of an asset return.
Bollerslev (1986) proposes a useful extension known as the generalized ARCH (GARCH) model.
The ARCH model has been generalized to allow the variance to depend on past values of \(Y_t^2\) as well as on past values of \(\sigma^2_t.\)
A model for \(Y_t\) satisfying Equations is said to follow a generalized ARCH (or GARCH) model of order \((m,s)\) (\(GARCH(m,s)\)) when the local conditional variance is given by
\[\begin{equation} \label{eq:3} \sigma_t^2 =\alpha_0+\sum_{i=1}^m\alpha_iY_{t-i}^2+\sum_{j=1}^s\beta_j\sigma_{t-j}^2, \end{equation}\]
where \(\{\epsilon_t\}\) is a sequence of iid random variables with mean 0 and variance 1, \(\alpha_0>0,\) \(\alpha_i\geq0,\) \(\beta_j\geq0,\) and \(\sum_{i=1}^{max(m,s)}(\alpha_i+\beta_i)<1.\)
Here, \(\alpha_i=0\) for \(i>m\) and \(\beta_j =0\) for \(j>s.\)
The constraint on \(\alpha_i+\beta_j\) implies that the unconditional variance of \(Y_t\) is finite, whereas its conditional variance \(\sigma_t^2\) evolves over time.
\(\epsilon_t\) is often assumed to follow a standard normal or standardized Student-t distribution or generalized error distribution.
Equation reduces to a pure ARCH(\(m\)) model if \(s = 0\) (i.e. GARCH(\(m,0\))).
The \(\alpha_i\) and \(\beta_j\) are known as ARCH and GARCH parameters, respectively.
To understand properties of GARCH models, it is informative to use the following representation.
- Let \(\eta_t = Y_t^2 − \sigma_t^2.\)
- Then \(\sigma_t^2= Y_t^2 −\eta_t.\)
- By plugging \(\sigma_{t-1}^2= Y_{t-1}^2 −\eta_{t-1}\) (\(i=0,\dots,s\)) into Equation , we get the GARCH model as
\[\begin{equation} \label{eq:4} Y_t^2 =\alpha_0+\sum_{i=1}^{max(m,s)}(\alpha_i+\beta_i)Y_{t-i}^2+\eta_t-\sum_{j=1}^s\beta_j\eta_{t-j}. \end{equation}\]
- It is easy to check that \(\{\eta_t \}\) is a martingale difference series [i.e., \(E(\eta_t ) = 0\) and \(cov(\eta_t , \eta_{t-j} ) = 0\) for \(j\geq 1\)].
- However, \(\{\eta_t \}\) in general is not an iid sequence.
- Equation is an ARMA form for the squared series \(Y_t^2\).
- Therefore, a GARCH model can be regarded as an application of the ARMA idea to the squared series \(Y_t^2\).
- Therefore, the same invertibility and stationary assumptions of ARMA models apply to GARCh models.
- For example, \(Y_t\) is covariance stationary, if all roots of \(1-\sum_{j=1}^{max(m,s)}(\alpha_j+\beta_j)z^j=0\) lie outside the unit circle.
GARCH(\(1,1\)) model
- The \(GARCH(1,1)\) model is often used to fit financial time series.
- The properties of GARCH models can easily be understood by focusing on the simplest \(GARCH(1,1)\) model with
\[\sigma_t^2 = \alpha_0+\alpha_1Y_{t-1}^2 + \beta_1\sigma_{t-1}^2, \text{ } 0\leq\alpha_1, \beta_1\leq 1, (\alpha_1+\beta_1)<1.\]
- The model implies that a large \(Y_{t-1}^2\) or \(\sigma_{t-1}^2\) will lead to a large \(\sigma_{t}^2\), which in turn will give rise to a large \(Y_t^2=\sigma_t^2\epsilon_t^2.\)
- This again generate the well-known behaviour of volatility clustering in financial time series.
4.6.1 Prediction of volatilities
- Both ARCH and GARCH models do not affect point forecasts of the original observed variables.
- Therefore, it is difficult to make a fair comparison of the forecasting abilities of different models for changing variance.
- Therefore, both the modeling aspect (understanding the changing structure of a series), and the assessment of risk, are more important than their ability to make point forecasts.
- Forecasts of a GARCH model are similar to those of an ARMA model.
- Consider the GARCH(1,1) model.
- Let the forecast origin is \(h\).
- For 1-step ahead forecast, we have
\[\sigma_{h+1}^2 = \alpha_0+\alpha_1Y_h^2+\beta_1\sigma_h^2\] where \(Y_h\) and \(\sigma_h^2\) are known at the time index \(h\).
- Then, 1-step ahead forecast is
\[\sigma_{h}^2(1) = \alpha_0+\alpha_1Y_h^2+\beta_1\sigma_h^2.\]
- For multistep-ahead forecasts, we use \(Y_t^2 = \sigma_t^2\epsilon_t^2.\)
- Then the volatility equation can be written as
\[\sigma_{t+1}^2 = \alpha_0+(\alpha_1+\beta_1)\sigma_t^2+\alpha_1\sigma_t^2(\epsilon_t^2-1).\] - When \(t = h + 1\), we get,
\[\sigma_{h+2}^2 = \alpha_0+(\alpha_1+\beta_1)\sigma_{h+1}^2+\alpha_1\sigma_{h+1}^2(\epsilon_{h+1}^2-1).\] - Since \(E(\epsilon_{h+1}^2-1|\mathcal{F}_t)=0\), the 2-step-ahead volatility forecast at the forecast origin \(h\) satisfies the equation
\[\sigma_{h}^2(2) = \alpha_0+(\alpha_1+\beta_1)\sigma_h^2(1).\]
In general, we can write \[\sigma_{h}^2(k) = \alpha_0+(\alpha_1+\beta_1)\sigma_h^2(k-1), \quad k>1.\]
This result is similar to an ARMA(1,1) model with AR polynomial \(1 − (\alpha_1 + \beta_1)B\).
4.6.2 Example: Building a GARCH Model
- Let’s apply the modeling procedure to build a \(GARCH(1,1)\) model for the daily returns, \(X_t\), of adjusted closing prices of the S&P500 index.
- Figure 4.1 shows the daily return series from January 4, 1995 to February 25, 2021.
- The sample ACF and PACF of the squared returns in the bottom panel of Figure 4.2, show the existence of conditional heteroscedasticity.
##
## Title:
## GARCH Modelling
##
## Call:
## garchFit(formula = ~garch(1, 1), data = sp500_return$daily.returns)
##
## Mean and Variance Equation:
## data ~ garch(1, 1)
## <environment: 0x7fddd338b750>
## [data = sp500_return$daily.returns]
##
## Conditional Distribution:
## norm
##
## Coefficient(s):
## mu omega alpha1 beta1
## 7.2933e-04 2.1055e-06 1.2134e-01 8.6479e-01
##
## Std. Errors:
## based on Hessian
##
## Error Analysis:
## Estimate Std. Error t value Pr(>|t|)
## mu 7.293e-04 9.722e-05 7.502 6.28e-14 ***
## omega 2.106e-06 2.656e-07 7.927 2.22e-15 ***
## alpha1 1.213e-01 8.705e-03 13.940 < 2e-16 ***
## beta1 8.648e-01 8.885e-03 97.335 < 2e-16 ***
## ---
## Signif. codes:
## 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log Likelihood:
## 21322 normalized: 3.239
##
## Description:
## Sat Feb 27 16:30:00 2021 by user:
##
##
## Standardised Residuals Tests:
## Statistic p-Value
## Jarque-Bera Test R Chi^2 1195 0
## Shapiro-Wilk Test R W NA NA
## Ljung-Box Test R Q(10) 21.65 0.01699
## Ljung-Box Test R Q(15) 30.7 0.009632
## Ljung-Box Test R Q(20) 34.98 0.0202
## Ljung-Box Test R^2 Q(10) 12.97 0.2255
## Ljung-Box Test R^2 Q(15) 16.83 0.329
## Ljung-Box Test R^2 Q(20) 17.81 0.5999
## LM Arch Test R TR^2 13.93 0.3055
##
## Information Criterion Statistics:
## AIC BIC SIC HQIC
## -6.478 -6.473 -6.478 -6.476
Plot the result
sp500_return <- sp500_return %>%
mutate(vol = volatility(fit2),
resid.st = residuals(fit2, standardize=T)) %>%
as_tsibble(index = date, regular = FALSE)
p1 <- sp500_return %>% autoplot(vol)
p2 <- sp500_return %>% autoplot(resid.st)
p3 <- sp500_return %>% ACF(resid.st) %>% autoplot()
p4 <- sp500_return %>% PACF(resid.st) %>% autoplot()
p5 <- sp500_return %>% ACF(resid.st^2) %>% autoplot()
p6 <- sp500_return %>% PACF(resid.st^2) %>% autoplot()
- Now the model is adequate as the standardized residuals in the fitted \(GARCH(1,1)\) model show little conditional heteroscedasticity.
4.7 The ARMA-GARCH Models
- The dynamics of asset returns and their volatility can be modeled by combining GARCH models with the linear time series models discussed in Chapter 2.
- Let \(X_t\) follows an ARMA model with GARCH innovations.
- Then, it yields the following \(ARMA(p,q)-GARCH(m,s)\) model for \((X_t, \sigma_t):\)
\[X_t=\mu+\sum_{i=1}^p\phi_iX_{t-i}+\sum_{j=1}^q\theta_jY_{t-j} + Y_t, \quad Y_t=\sigma_t\epsilon_t,\]
\[\sigma^2_t=\alpha_0+ \sum_{i=1}^m\alpha_iY_{t-i}^2+\sum_{j=1}^s\beta_j\sigma_{t-j}^2.\]
- The \(\epsilon_t\) are iid standard normal or Student-t random variables.
- The second equation can be replaced by other volatility models so that different aspects of volatilities can be characterized.
4.7.1 Example: Building an ARMA-GARCH Model
- Let’s apply the modeling procedure to build an \(ARMA(1,1)-GARCH(1,1)\) model for the daily returns, \(X_t,\) of adjusted closing prices of the S&P500 index
\[X_t = \mu + \phi X_{t-1}+\theta Y_{t-1} + Y_t,\] \[Y_t= \sigma_t\epsilon_t,\]
\[\sigma_t^2=\alpha_0+\alpha Y_{t-1}^2+\beta\sigma_{t-1}^2.\]
- Let \(\epsilon_t\) are iid standard normal.
##
## Title:
## GARCH Modelling
##
## Call:
## garchFit(formula = ~arma(1, 1) + garch(1, 1), data = sp500_return$daily.returns)
##
## Mean and Variance Equation:
## data ~ arma(1, 1) + garch(1, 1)
## <environment: 0x7fa4b68f4ad8>
## [data = sp500_return$daily.returns]
##
## Conditional Distribution:
## norm
##
## Coefficient(s):
## mu ar1 ma1 omega
## 8.7477e-05 8.8353e-01 -9.1463e-01 2.0642e-06
## alpha1 beta1
## 1.1989e-01 8.6645e-01
##
## Std. Errors:
## based on Hessian
##
## Error Analysis:
## Estimate Std. Error t value Pr(>|t|)
## mu 8.748e-05 4.726e-05 1.851 0.0642 .
## ar1 8.835e-01 6.139e-02 14.392 < 2e-16 ***
## ma1 -9.146e-01 5.330e-02 -17.160 < 2e-16 ***
## omega 2.064e-06 2.603e-07 7.932 2.22e-15 ***
## alpha1 1.199e-01 8.565e-03 13.997 < 2e-16 ***
## beta1 8.664e-01 8.736e-03 99.186 < 2e-16 ***
## ---
## Signif. codes:
## 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log Likelihood:
## 21335 normalized: 3.241
##
## Description:
## Sat Feb 27 20:47:32 2021 by user:
##
##
## Standardised Residuals Tests:
## Statistic p-Value
## Jarque-Bera Test R Chi^2 1279 0
## Shapiro-Wilk Test R W NA NA
## Ljung-Box Test R Q(10) 13.06 0.2206
## Ljung-Box Test R Q(15) 22.45 0.09663
## Ljung-Box Test R Q(20) 28.44 0.09946
## Ljung-Box Test R^2 Q(10) 14.88 0.1364
## Ljung-Box Test R^2 Q(15) 18.44 0.2403
## Ljung-Box Test R^2 Q(20) 19.64 0.4806
## LM Arch Test R TR^2 15.35 0.2229
##
## Information Criterion Statistics:
## AIC BIC SIC HQIC
## -6.481 -6.475 -6.481 -6.479
Plot the result
sp500_return <- sp500_return %>%
mutate(vol = volatility(fit3),
resid.st = residuals(fit3, standardize=T)) %>%
as_tsibble(index = date, regular = FALSE)
p1 <- sp500_return %>% autoplot(vol)
p2 <- sp500_return %>% autoplot(resid.st)
p3 <- sp500_return %>% ACF(resid.st) %>% autoplot()
p4 <- sp500_return %>% PACF(resid.st) %>% autoplot()
p5 <- sp500_return %>% ACF(resid.st^2) %>% autoplot()
p6 <- sp500_return %>% PACF(resid.st^2) %>% autoplot()
4.8 Other ARCH-Type Models
- There are many other types of ARCH models.
- It is important to use the context and any background theory, when choosing between different models for changing variance.
4.8.1 The Integrated GARCH (IGARCH) model
- The GARCH model becomes an IGARCH mode, if the AR polynomial of the GARCH representation in Equation has a unit root.
- Similar to ARIMA models, in IGARCH models the impact of past squared shocks \(\eta_{t−i} = Y_{t-i}^2 −\sigma_{t-i}^2\) for \(i>0\) on \(Y_t^2\) is persistent.
- The IGARCH(1,1) model is of the form
\[Y_t=\sigma_t\epsilon_t,\] \[\sigma_t^2=\alpha+\beta\sigma_{t-1}^2+(1-\beta)Y_{t-1}^2,\]
where \(\{\epsilon_t\}\) is a sequence of iid random variables with mean zero and variance 1 and \(0<\beta<1.\)
- More generally, model for \(Y_t\) satisfying Equations is said to follow a Integrated GARCH model of order \((m,s)\) (\(IGARCH(m,s)\)) when the local conditional variance is given by
\[\begin{equation} \label{eq:5} \sigma_t^2 =\alpha_0+\sum_{i=1}^m\alpha_iY_{t-i}^2+\sum_{j=1}^s\beta_j\sigma_{t-j}^2, \end{equation}\]
where \(\{\epsilon_t\}\) is a sequence of iid random variables with mean 0 and variance 1, with \(\sum_{i=1}^{m}\alpha_i+\sum_{j=1}^{s}\beta_j=1.\)
- Due to the above condition, the unconditional variance of \(Y_t\), hence that of \(X_t\) , is not defined under \(IGARCH(1,1)\) model.
- Under certain conditions, the IGARCH models are strictly stationary but not weakly stationary as they do not have the first two moments.
- When \(\alpha1 + \beta1 = 1\), \[\sigma^2_h(k )=\sigma^2_h(1 )+(k −1)\alpha_0,\quad k\geq1,\] where h is the forecast origin.
- As a result, the effect of \(\sigma^2_h(1 )\) on future volatilities is also persistent, and the volatility forecasts generates a straight line with slope \(\alpha_0\).
- When \(\alpha_0 = 0\), the volatility forecasts are simply \(\sigma_h^2(1)\) for all forecast horizons;
Example in R
# For univariate GARCH models)
library(rugarch)
spec3 <- ugarchspec(
variance.model=list(model="iGARCH",
garchOrder=c(1,1)),
mean.model=list(armaOrder=c(0,0),
include.mean=FALSE),
distribution.model="norm",
fixed.pars=list(omega=0))
fit <- ugarchfit(spec3,
data = sp500_return$daily.returns)
summary(fit)
fit
plot(fit,which="all")
- Useful materials: The
rugarch
package vignette
4.9 Asymmetry in Volatility
- Some equity markets show asymmetry in their volatility clusters
- Asymmetric Volatility is when the volatility of a market or stock is higher when a market is in a downtrend and volatility tends to be lower in an uptrend.
- There may be a range of causes of asymmetric volatility, but factors such as leverage, panic selling, and serial correlation are often some of the drivers.
- The asymmetric GARCH models are employed to capture the asymmetric characteristics of volatility.
4.10 The exponential GARCH model
- In 1991, Nelson proposed the Exponential GARCH model to allow for asymmetric effects between positive and negative asset returns.
- An \(EGARCH(h,k)\) model can be written as
\[Y_t=\sigma_t\epsilon_t,\] \[\begin{equation} \label{eq:6} log(\sigma_t^2) =\alpha_0+\sum_{i=1}^h\beta_ilog(\sigma_{t-i}^2)+ \sum_{j=1}^kf_j(\epsilon_{t-j}) \end{equation}\]
where the \(\{\epsilon_t\}\) is a sequence of iid random variables with mean 0 and variance 1, and \(f_j(\epsilon)=\alpha_j\epsilon+\gamma_j(|\epsilon|-E|\epsilon|)\)
- Both \(\epsilon_t\) and \(|\epsilon_t|-E|\epsilon_t|\) are zero-mean iid sequences with continuous distributions.
- Therefore, \(E[f_j(\epsilon_t)]=0\)
- The asymmetry of \(f_j(\epsilon_t)\) can easily be seen by rewriting it as
\[ f_j(\epsilon_t)= \begin{cases} (\alpha_j+\gamma_j)\epsilon_t-\gamma_jE|\epsilon_t|,& \text{if } \epsilon_t\geq 0\\ (\alpha_j-\gamma_j)\epsilon_t-\gamma_jE|\epsilon_t|,& \text{if } \epsilon_t< 0 \end{cases} \]
- This shows the asymmetry of the volatility response to positive and negative returns.
- The model differs from the GARCH model in several ways
- First, it uses logged conditional variance to relax the positiveness constraint of model coefficients.
- Second, the use of \(f_j(\epsilon_t)\) enables the model to respond asymmetrically to positive and negative lagged values of \(Y_t.\)
- Some additional properties of the EGARCH model can be found in Nelson (1991).
4.11 Stochastic Volatility Models
- The formulae for \(\sigma_t^2\) in all GARCH type models are deterministic as there is no “error” term in either equation.
- An alternative approach to ARCH or GARCH models is to assume that \(\sigma_t\) follows a Stochastic process.
- This can be usually done by modelling \(log(\sigma_t^2)\) or \(log(\sigma_t)\) to ensure that \(\sigma_t^2\) remains positive.
- Example: Let \(log(\sigma_t^2)=h_t\) and \(h_t\) follows an AR process with an “error” component that is independent of the \(\{\epsilon_t\}\) in the innovation series \(\{Y_t\}\),
\[Y_t=\sigma_t\epsilon_t, \quad \sigma_t^2=e^{h_t},\]
\[h_t=\phi_0+\phi_1h_{t-1}+\dots+\phi_ph_{t-p}+\eta_t,\]
which has \(AP(p)\) dynamics for \(log\sigma_t^2.\)
- These type of models are called stochastic volatility or Stochastic variance models.
- The \(\epsilon_t\) and \(\eta_t\) are assumed to be independent normally distributed random variables with \(\epsilon_t\sim N(0,1)\) and \(\eta_t\sim N(0,\sigma^2)\)
- In certain cases, it is more reasonable to assume that \(\sigma_t\) changes stochastically through time rather than deterministically.
- Example: During a sudden change in volatility in financial market due to a special event such as a war involving oil producing countries
4.12 References:
Chatfield, C., & Xing, H. (2019). The analysis of time series: an introduction with R. CRC press.
Tsay, R. S. (2010). Analysis of Financial Time Series. John Wiley & Sons..
References
Chatfield, Chris, and Haipeng Xing. 2019. The Analysis of Time Series: An Introduction with R. CRC press.
Tsay, Ruey S. 2010. Analysis of Financial Time Series. John Wiley & Sons.


--- layout: post title: My preferences on Ruby development date: 2018-03-30 type: post parent_id: '0' published: false password: '' status: draft categories: - Outros tags: [] meta: _edit_last: '9774445' author: login: marcofognog email<EMAIL_ADDRESS>display_name: marcofognog first_name: '' last_name: '' ---
I like to have a clean and tested code base, but I am also very pragmatic when coding, chosing explicity over implicty. In most cases, I like pure Ruby rather than DSL's.
I am very flexible about what libries, technologies and methodolgies I work with, but the following are my preferences.
For testing, I like test unit, or the rspec runner (but not much fan of the rspec DSL and matchers), capybara. Also, Simplecov or similar is good to track the coverage.
No SASS ,HAML, or coffescript, but pure CSS, HTML and javascript.
Those are my preferences, wich doesn't mean I can't work with other technoligies (e.g. HAML).
How I do testing:
In general web applications, I don't do unit tests on model, in the most strict sense of the word. But rather, I test the interface of the models (public methods) , and then, if necessary, the private methods. That works good, because I work backwards, first the writing tests about how that object should behave and, then, all private methods are born inside that public method as I refactor it. Technicaly, its a integration test from the model down to the database.
I aslo like very much to do end-to-end tests with capybara. Cucumber only if there's a business guy willing to write and read that.
But there's one thing I can't work with, the mockist style of testing. I find it quite unexpressive, highly coupled to the implementation and brittle. Just not worth mantaining.


Frequently Asked Questions
Installation
- How do I install a quarto?
-
Don't. Download the stock quarto or use it as a template.
- How do I upgrade a quarto?
- Copy the
quarto
folder from another quarto project.
- Why is
requirements.txt
blank?
-
There are no requirements. There are only extras.
- What are the
Dockerfile
and kitchen
files?
-
These files build and run containers for testing. Delete them if you want to.
- Can I have multiple quartos on one machine?
- Yes. They will not interfere with each other unless you insist.
Publication
- How do I publish a website?
-
Upload your
proof
folder to a web host. Don't upload anything private!
- Who is the host for this site?
-
Neocities is a nonprofit which offers free and low-cost hosting.
- What address do people use to find my site?
-
Hosts usually assign a default address like quarto.neocities.org. You can change it if you have a registered domain name. Many hosts will do this for a small annual fee.
- What do I do if someone else has the domain I want?
-
If the registrants are squatting, then you can sue them. If the domain is used in good faith, then you can try to buy it. Otherwise, you must use another domain.
- My host is telling me to buy a bunch of stuff. Do I need it?
-
Do what you want, but you don't need frameworks, plugins, databases, server-side scripts, nor template languages to publish a website. All you need is HTML.
Options files
- How do I edit page options?
-
See the page options docs for details.
- Where are the site options?
-
Quartos have no site options. Home options in
index.json
are applied to all pages unless they are overruled by page options files.
- Can I add more
meta
tags?
-
Yes. Add them to the
"meta"
field in page options. There is some debate about which tags are useful metadata and which are metacrap.
- Can I build a site without icons, an email, a license, ...?
-
Yes. Leave those options blank. See page options for details.
Custom styles
- How do I change backgrounds, colors, fonts, ... ?
-
Edit the CSS files in the
style
folder.
- Can I add custom stylesheets?
-
Yes. Add any CSS files you want to the
style
folder.
- Can I use external stylesheets?
-
Yes. Add absolute URLs to the list of
styles
in your page options.
- Where are the background images?
- All media files are in the
proof/media
folder. Delete anything you don't want. We have many backup copies of bitmap galaxies and vectorized tiger stripes.
Mechanical roles
- Shall I compare thee to a static website generator?
- Quartos are more lazy and more transparent.
- What are some other static website generators?
-
Go: Hugo
-
JavaScript: Eleventy, Hexo, Metalsmith, VuePress
-
Python: Hyde, Lektor, MkDocs, Nikola, Pelican
-
Ruby: Jekyll, Middleman, Nanoc, Webgen
- Do quartos build dynamic websites?
-
The stock quarto does not, but you could use the
Quire
class as a server-side page generator for something like bottle or flask or tornado.
- Why doesn't Quarto have {x}?
-
Quartos favor speed, simplicity, and independence over completeness.
- How do I request a feature?
-
DIY. We'll consider adding it to the stock quarto if your license allows it.
Intentions and goals
- Where are all the modal windows?
- I click to bury pop-ups, not engage them.
- Is Quarto a web application framework?
-
No. Quartos avoid control inversion, middleware layers, and abstraction.
- Why does the logo have cat ears?
-
Quartos are meant to be small, clean, lazy, independent string concatenators.
- Wherefore art thou Quarto?
-
The more complex your systems become, the more you need a human to look at the bigger picture and make decisions. Alice Goldfuss
-
There will come a point where the accumulated complexity of our existing systems is greater than the complexity of creating a new one. Ryan Dahl
-
It is time to unmask the computing community as a Secret Society for the Creation and Preservation of Artificial Complexity. Edsger W. Dijkstra
-
Give the game away. Brian Eno and Peter Schmidt


There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing in the middle of text.
Customer Name
If you are going to use a passage of Lorem Ipsum, you need to be sure.
Customer Name
If you are going to use a passage of Lorem Ipsum, you need to be sure.
Customer Name
If you are going to use a passage of Lorem Ipsum, you need to be sure.


Bars
To Lock:
Press the top left button;
To Go Back:
Press the top right button;
To Main Menu:
Press bottom right button.
Ok
Bar TR3S
Rating
Matiz Pombalina
Rating
Foxtrot
Rating
Bruxa Beer Bar
Rating
Shelter Bar
Rating:
Pavilhão Chinês
Rating:
Templários Bar
Rating
Sky Bar
Rating:


Burger King (BK) is an American global chain of hamburger fast food restaurants. Headquartered in the unincorporated area of Miami-Dade County, Florida, the company was founded in 1953 as Insta-Burger King, a Jacksonville, Florida based restaurant chain. After Insta-Burger King ran into financial difficulties in 1954, its two Miami-based franchisees David Edgerton and James McLamore purchased the company and renamed it "Burger King"


This is the initial opening paragraph that explains what your trying to convey to your email readers. Generally, it's a godo idea to place some "eye-catching" text within this section to help drive the reader to continue reading.
Header One
Header Two
Second section text, used to showcase following section of images and text.
ImgDescription - Title 1
First image from section two, used to help showcase a particular business highlight or program that's worth mentioning.
ImgDescription - Title 2
Second image from section two, used to help showcase a particular business highlight or program that's worth mentioning.


#include <datagramsocket.h>
Definition at line 16 of file datagramsocket.h.
Public Member Functions | |
| bool | connected () const |
| void | connectSocket (const InetAddress &address) |
| DatagramSocket (std::vector< std::string > multicast, int port_num) | |
| DatagramSocket (int port_num=0, int rcv_buff_len=4096, int send_buff_len=4096) | |
| bool | dataReady () const |
| void | disconnectSocket () |
| void | enabledBroadcast (bool enabled) |
| const InetAddress & | getInetAddress () const |
| const InetAddress & | getLocalAddress () const |
| int | getReceiveBufferSize () const |
| int | getSendBufferSize () const |
| int | getSocket () const |
| int | receiveDatagram (std::vector< uint8 > &buffer, const InetAddress &from, int timeout_ms=100, const bool append_buffer=false) const |
| void | sendDatagram (const std::vector< uint8 > &buffer, const InetAddress &to) const |
| void | sendDatagram (const std::vector< uint8 > &buffer) const |
| void | setReceiveBufferSize (int size) |
| void | setSendBufferSize (int size) |
| ~DatagramSocket () | |
Public Attributes | |
| SOCKET | _socket_fd |
| DatagramSocket | ( | int | port_num = 0 , |
|
| int | rcv_buff_len = 4096 , |
|||
| int | send_buff_len = 4096 | |||
| ) | [explicit] |
Constructs a datagram socket and binds it to the specified port on the local host machine.
| port_num | The port number to bind to. Ports below 1024 usually require special privileges to create. The default value of 0 chooses an unused port. | |
| rcv_buff_len | The maximum size UDP packet that can be recieved. | |
| send_buff_len | The maximum size UDP packet that can be sent. |
| DatagramSocket | ( | std::vector< std::string > | multicast, | |
| int | port_num | |||
| ) | [explicit] |
multicast ip address on the specified port.
| ~DatagramSocket | ( | ) |
Closes the socket.
| bool connected | ( | ) | const |
| void connectSocket | ( | const InetAddress & | address | ) |
Connects the socket to the remote address.
Connecting the DatagramSocket to a specific address ensures that the socket can only send to or receive from that address.
| bool dataReady | ( | ) | const |
| void disconnectSocket | ( | ) |
Disconnects the socket from any remote address.
Resets the remote address to the local address
| void enabledBroadcast | ( | bool | enabled | ) |
Enables broadcast packets to be sent.
| const InetAddress& getInetAddress | ( | ) | const |
If the socket is not connected, returns the local address.
| const InetAddress& getLocalAddress | ( | ) | const |
Gets the local address to which the socket is bound.
| int getReceiveBufferSize | ( | ) | const |
This is the buffer size used for input on this socket.
Definition at line 66 of file datagramsocket.h.
| int getSendBufferSize | ( | ) | const |
This is the buffer size used for output on this socket.
Definition at line 76 of file datagramsocket.h.
| int getSocket | ( | ) | const |
| int receiveDatagram | ( | std::vector< uint8 > & | buffer, | |
| const InetAddress & | from, | |||
| int | timeout_ms = 100 , |
|||
| const bool | append_buffer = false | |||
| ) | const |
Receives a datagram packet for this socket.
Note: this method blocks the calling thread. Use the dataReady method to do a non-blocking check for data.
| buffer | Receives data in the datagram | |
| from | Address data is to be received from | |
| timeout_ms | Time to wait for the data. After this period if data is not available this method returns 0 | |
| append_buffer | If true, data is appended to the buffer, otherwise the data overwrites |
| SocketError | operating system reported an error. |
| void sendDatagram | ( | const std::vector< uint8 > & | buffer, | |
| const InetAddress & | to | |||
| ) | const |
Explicit send: sends to the address specified.
Warning: If the socket has already been connected to an address using connectSocket, the address argument will be ignored and the datagram will be sent to the connected address instead. If buffer is larger than getSendBufferSize() then multiple datagrams will be sent of send buffer size with a final datagram with the remainder. This behaviour should not be relied on as it may change in the future.
| void sendDatagram | ( | const std::vector< uint8 > & | buffer | ) | const |
Sends a datagram packet from this socket.
If you have connected the socket to a remote address using connect(), then you can call Send without an address. If buffer is larger than getSendBufferSize() then multiple datagrams will be sent of send buffer size with a final datagram with the remainder. This behaviour should not be relied on as it may change in the future.
| buffer | the buffer of data to send. |
| SocketError | if buffer.size() > 64KB, socket not connected or network failure. |
| void setReceiveBufferSize | ( | int | size | ) |
Sets the SO_RCVBUF option to the specified value for this DatagramSocket.
| size | The maximum size UDP packet that can be recieved. Datagrams larger than this value will be dropped. |
| void setSendBufferSize | ( | int | size | ) |
Sets the SO_SENDBUF option to the specified value for this DatagramSocket.
| size | The maximum size UDP packet that can be sent. |


This MVC website is built by PHP Laravel.
This website is built by PHP laravel. The functionality is
about view tour pictures and make a comment under a post.
When you register a new user, it automatically send an email to a user.
I give three different
user roles to administration which are user manager, theme manager and post
manager. Each user can do different tasks. The website has all bootstrap watch
themes which is managed by theme manager. Authenticated users can post a picuture
and comment a post. Guest only can visit this website.
Code technologies I got involved with while working on this project.


Street Team
Hey, did you known that YMCA was one of the first youth organisations to pioneer the detached youth work approach known today as "Street Work" back in 1844 on the streets of London? Next time you see one of our street workers with their distinctive Street Team jackets why not tell them this fact and see how they can help you with advice and information on jobs, education and fun opportunities at your YMCA. You can catch them during our youth club nights on Paisley High Street, Linwood, Johnstone and Ferguslie Park


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Uses of TerminalSize in com.googlecode.lanterna.gui |
|---|
| Methods in com.googlecode.lanterna.gui that return TerminalSize | |
|---|---|
abstract TerminalSize |
Border.getInnerAreaSize(int width,
int height)
|
TerminalSize |
Border.Standard.getInnerAreaSize(int width,
int height)
|
TerminalSize |
Border.Bevel.getInnerAreaSize(int width,
int height)
|
TerminalSize |
Border.Invisible.getInnerAreaSize(int width,
int height)
|
TerminalSize |
Component.getMinimumSize()
This method is called by the layout system to figure out what the absolute minimum size is for this component. |
TerminalSize |
Component.getPreferredSize()
This method is called by the layout system to figure out how much space each component will be assigned. |
TerminalSize |
TextGraphics.getSize()
Size of the area the TextGraphics can edit, as a TerminalSize object,
any attempts to draw outside of this area will be ignored. |
TerminalSize |
Window.getWindowSizeOverride()
Returns the current window size override or null if none is set |
abstract TerminalSize |
Border.surroundAreaSize(TerminalSize TerminalSize)
|
TerminalSize |
Border.Standard.surroundAreaSize(TerminalSize TerminalSize)
|
TerminalSize |
Border.Bevel.surroundAreaSize(TerminalSize TerminalSize)
|
TerminalSize |
Border.Invisible.surroundAreaSize(TerminalSize TerminalSize)
|
| Methods in com.googlecode.lanterna.gui with parameters of type TerminalSize | |
|---|---|
abstract void |
Border.drawBorder(TextGraphics graphics,
TerminalSize actualSize,
String title)
|
void |
Border.Standard.drawBorder(TextGraphics graphics,
TerminalSize actualSize,
String title)
|
void |
Border.Bevel.drawBorder(TextGraphics graphics,
TerminalSize actualSize,
String title)
|
void |
Border.Invisible.drawBorder(TextGraphics graphics,
TerminalSize actualSize,
String title)
|
void |
TextGraphics.fillRectangle(char character,
TerminalPosition topLeft,
TerminalSize rectangleSize)
Replaces the content of a rectangle within the TextGraphic drawing area with a specified character |
void |
Component.setPreferredSize(TerminalSize preferredSizeOverride)
If called with a non-null parameter, it will override the component's own preferred size calculation and instead getPreferredSize()
will return the value passed in. |
void |
Window.setWindowSizeOverride(TerminalSize windowSizeOverride)
Sets the size of the window to a fixed value, rather than using automatic size calculation. |
TextGraphics |
TextGraphics.subAreaGraphics(TerminalPosition topLeft,
TerminalSize subAreaSize)
Creates a new TextGraphics object using the same area or smaller. |
abstract TerminalSize |
Border.surroundAreaSize(TerminalSize TerminalSize)
|
TerminalSize |
Border.Standard.surroundAreaSize(TerminalSize TerminalSize)
|
TerminalSize |
Border.Bevel.surroundAreaSize(TerminalSize TerminalSize)
|
TerminalSize |
Border.Invisible.surroundAreaSize(TerminalSize TerminalSize)
|
| Uses of TerminalSize in com.googlecode.lanterna.gui.component |
|---|
| Methods in com.googlecode.lanterna.gui.component with parameters of type TerminalSize | |
|---|---|
void |
TextArea.setMaximumSize(TerminalSize maximumSize)
|
void |
TextArea.setMinimumSize(TerminalSize minimumSize)
|
void |
AbstractComponent.setPreferredSize(TerminalSize preferredSizeOverride)
|
protected TextGraphics |
AbstractComponent.transformAccordingToAlignment(TextGraphics graphics,
TerminalSize preferredSize)
Will create a sub-graphic area according to the alignment, if the assigned size is larger than the preferred size. |
| Constructors in com.googlecode.lanterna.gui.component with parameters of type TerminalSize | |
|---|---|
AbstractListBox(TerminalSize preferredSize)
|
|
ActionListBox(TerminalSize preferredSize)
|
|
CheckBoxList(TerminalSize preferredSize)
|
|
RadioCheckBoxList(TerminalSize preferredSize)
Creates a new RadioCheckBoxList with a specified size override |
|
TextArea(TerminalSize preferredSize,
String text)
|
| Uses of TerminalSize in com.googlecode.lanterna.gui.layout |
|---|
| Methods in com.googlecode.lanterna.gui.layout that return TerminalSize | |
|---|---|
TerminalSize |
BorderLayout.getPreferredSize()
|
TerminalSize |
LinearLayout.getPreferredSize()
|
TerminalSize |
LayoutManager.getPreferredSize()
Calculates the optimal size of the container this layout manager is controlling by asking every component controlled by the manager how big they would like to be. |
TerminalSize |
LayoutManager.LaidOutComponent.getSize()
|
| Methods in com.googlecode.lanterna.gui.layout with parameters of type TerminalSize | |
|---|---|
protected int |
HorisontalLayout.getMajorAxis(TerminalSize terminalSize)
|
protected int |
VerticalLayout.getMajorAxis(TerminalSize terminalSize)
|
protected abstract int |
LinearLayout.getMajorAxis(TerminalSize terminalSize)
|
protected int |
HorisontalLayout.getMinorAxis(TerminalSize terminalSize)
|
protected int |
VerticalLayout.getMinorAxis(TerminalSize terminalSize)
|
protected abstract int |
LinearLayout.getMinorAxis(TerminalSize terminalSize)
|
List<? extends LayoutManager.LaidOutComponent> |
BorderLayout.layout(TerminalSize layoutArea)
|
List<? extends LayoutManager.LaidOutComponent> |
LinearLayout.layout(TerminalSize layoutArea)
|
List<? extends LayoutManager.LaidOutComponent> |
LayoutManager.layout(TerminalSize layoutArea)
Given a size, lay out all the components on this area |
protected void |
HorisontalLayout.setMajorAxis(TerminalSize terminalSize,
int majorAxisValue)
|
protected void |
VerticalLayout.setMajorAxis(TerminalSize terminalSize,
int majorAxisValue)
|
protected abstract void |
LinearLayout.setMajorAxis(TerminalSize terminalSize,
int majorAxisValue)
|
protected void |
HorisontalLayout.setMinorAxis(TerminalSize terminalSize,
int minorAxisValue)
|
protected void |
VerticalLayout.setMinorAxis(TerminalSize terminalSize,
int minorAxisValue)
|
protected abstract void |
LinearLayout.setMinorAxis(TerminalSize terminalSize,
int minorAxisValue)
|
| Uses of TerminalSize in com.googlecode.lanterna.screen |
|---|
| Methods in com.googlecode.lanterna.screen that return TerminalSize | |
|---|---|
TerminalSize |
Screen.getTerminalSize()
|
| Constructors in com.googlecode.lanterna.screen with parameters of type TerminalSize | |
|---|---|
Screen(Terminal terminal,
TerminalSize terminalSize)
Creates a new Screen on top of a supplied terminal and will set the size of the screen to a supplied value. |
| Uses of TerminalSize in com.googlecode.lanterna.terminal |
|---|
| Methods in com.googlecode.lanterna.terminal that return TerminalSize | |
|---|---|
protected TerminalSize |
AbstractTerminal.getLastKnownSize()
Used internally to get the last size known to the terminal |
TerminalSize |
Terminal.getTerminalSize()
Returns the size of the terminal, expressed as a TerminalSize
object. |
TerminalSize |
Terminal.queryTerminalSize()
Deprecated. Being deprecated since 2.0.1 in favor of getTerminalSize() |
protected TerminalSize |
InputEnabledAbstractTerminal.waitForTerminalSizeReport(int timeoutMs)
|
| Methods in com.googlecode.lanterna.terminal with parameters of type TerminalSize | |
|---|---|
void |
Terminal.ResizeListener.onResized(TerminalSize newSize)
|
| Constructors in com.googlecode.lanterna.terminal with parameters of type TerminalSize | |
|---|---|
TerminalSize(TerminalSize terminalSize)
|
| Uses of TerminalSize in com.googlecode.lanterna.terminal.swing |
|---|
| Methods in com.googlecode.lanterna.terminal.swing that return TerminalSize | |
|---|---|
TerminalSize |
SwingTerminal.getTerminalSize()
|
TerminalSize |
SwingTerminal.queryTerminalSize()
|
| Constructors in com.googlecode.lanterna.terminal.swing with parameters of type TerminalSize | |
|---|---|
SwingTerminal(TerminalSize terminalSize)
|
| Uses of TerminalSize in com.googlecode.lanterna.terminal.text |
|---|
| Methods in com.googlecode.lanterna.terminal.text that return TerminalSize | |
|---|---|
TerminalSize |
ANSITerminal.getTerminalSize()
|
TerminalSize |
CygwinTerminal.getTerminalSize()
|
TerminalSize |
UnixTerminal.getTerminalSize()
|
TerminalSize |
ANSITerminal.queryTerminalSize()
Deprecated. |
TerminalSize |
UnixTerminalSizeQuerier.queryTerminalSize()
|
TerminalSize |
UnixTerminal.queryTerminalSize()
Deprecated. |
TerminalSize |
FixedTerminalSizeProvider.queryTerminalSize()
|
| Constructors in com.googlecode.lanterna.terminal.text with parameters of type TerminalSize | |
|---|---|
FixedTerminalSizeProvider(TerminalSize size)
|
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


I'm currently a second-year CS master student at Arizona State University, former senior
data engineer
and
software engineer
at top tech companies in China:
ByteDance Inc,
Baidu Inc and
58 & Ganji Inc. full pdf version:
Download .
Contact
Arizona State University
1151 S. Forest Ave.
Tempe, AZ 85281
E-mail:
<EMAIL_ADDRESS>Social media:
github;
linkedin
Education
Arizona State University AZ, USA
Master of Computer Science
July 2018~May 2020 (expected)
GPA: 3.85/4.0
Completed: Statistical Machine Learning, Natural Language processing, Fundamentals of Statistical Learning, Perception in Robotics, Intro Theoretical Computer Science, Distributed Database Systems, Software Security, Data Visualization
Nanjing University of Posts and Telecommunications Nanjing, China
Bachelor of Geographic Information System
July 2010~June 2014
GPA: 89.3/100, Rank: 1/107
Patents
The big data real-time analysis platform
Weihai Shen; Junxiu Gao; Qi Tan;
CN108920516A
With the advent of the big data era, one of the most crucial issues the internet companies have toface is how to obtain real-time behavior information of users, which has given birth to real-timebig data analysis. The traditional architecture simply analyzes data based on offline data(likeHive or other warehouse platforms). However, traditional offline analysis cannot guarantee thetimeliness of data. In this industrial patent, we creatively propose an architecture to provideusers with real-time statistic information, even with huge data
[
slides]
Research experience
Research in the scientific Visualization ToolKit Sep.2019 ~ - Supervised by Dr. Ross Maciejewski
VADER Lab
- Implemented a WebSocket filter in the Topology-Toolkit (https://topology-tool-kit.github.io/) to enable real-time data transfer of large datasets between browser and server memory
- Provided an out-of-box JavaScript API to receive and send object data asynchronously
- Used histogram-based visualizations to guide users to select important isovalues based the implemented WebSocket filter
- Focused on Data Visualization and Data Analytics research area
Watermarking on generative adversarial network Feb. 2019 ~ May 2019
Supervised by Dr. Yezhou Yang
- Implemented a sample code to visualize the insights from low dimensions
- Implemented the Fast Gradient Sign Attack to impose an adversarial attack on an MNIST classifier
- Attempted a new structure to hide a unique watermarking into generative adversarial networks for intellectual property protection
- Focused on Adversarial Attack research area
Work experience
ByteDance Technology Co Ltd.Beijing, China
Senior Data Engineer
June 2017~June 2018
Data team
- Led the team to design and accomplish a real-time big data analysis platform that can provide users Daily Launch User and Daily New User information on a large data using no-sql, spark, hbase and python
- Designed and implemented a data warehouse to monitor the long-term retention rate of users
- Rewrote distributed real-time processing code and made use of Flink to replace Storm framework
Software Development Engineer
June 2016~June 2017
User growth team
- Built an intelligent ads platform integrating multiple ads engine APIs to control thousands of keywords for user growth marketing
- Implemented different models and strategies to boost user growth
Baidu Inc.Beijing, China
Software Development Engineer
April 2015~June 2016
Knowledge search team
- Designed and constructed a big-data tool to analyze the performance of each updated version
- Participated in the application performance optimization project, especially in the aspect of data storage optimization via no-sql and distributed deployment
- Implemented and maintained a php-based API service on a daily basis
58.com & Ganji Inc.Beijing, China
Software Development Engineer
July 2014~April 2015
Real estate team
- Improved the website’s search engine ranking greatly by optimizing metadata, publishing relevant contents and improving access speed
- Redesigned the indices and rding of MySQL to accelerate database access speed
- Implemented and maintained iterative development on a daily basis
Academic projects
Individual VIS projects in D3
All of those individual projects are completed in Data Visualization
course. I do not include any group projects here.
Image Classification on Fashion-MNIST dataset
In this project, we implement a 3-layer fully-connected neural network(without any deep learn-ing libraries like TensorFlow, Keras etc) to classify the fashion-MNIST dataset using No Mo-mentum, Polyaks classical momentum, Nesterovs Accelerated Gradient, RmsProp and ADAMalgorithms
[
report]
[
github]
Using BERT for Qualitative Reasoning
In this project, we used BERT, Bi-directional Encoder Representations from Transformers,which is a newly proposed language representation model, to solve qualitative reasoning prob-lem. BERT has been proved to be very powerful that obtains the state-of-the-art results onalmost all natural language processing tasks
[
report]
[
github]
Industrial decision-making platform Sep. 2018 ~ Dec. 2018 Supervised by Dr. George Runger
- Implemented this project from scratch to online using MVC software design pattern
- Implemented an out-of-box script to import data from CSV to AWS database instances
- Provided configuration center to make the program more scalable
Summer Internship
ByteDance Technology Co Ltd. Palo Alto, USA
Software Development Engineer
May ~ Aug. 2019
Email team
- Implemented the email label system to keep users' inbox neat, tidy and easy-to-manage
- Optimized MySQL slow queries for speed and performance
- Implemented and maintained a Go-based RPC service on a daily basis


{% include 'layout/head/meta.html' %} {% include 'layout/head/scripts.html' %}
Discover new github repositories, based on your own user profile.


--- layout: default ---
React Frontend, mixed with bare metal embedded development, ARM and low level development.


{% extends "partials/tooltips/base.html" %}
{% block title %}
Exhibit
{% endblock %}
{% block inner %}
A document, record, or object admitted as evidence in court or before a tribunal. A document
attached to and made part of an affidavit.
{% endblock %}
{% block label %}
{% if text %}{{ text }}{% else %}exhibit{% endif %}
{% endblock %}


Before Change
self.assert_all_dead()
def test_kbd_interrupt_in_wait_with_concurrency(self):
checks = [
KeyboardInterruptCheck(system=self.system,
resources=self.resources),
SleepCheck(10, system=self.system, resources=self.resources),
SleepCheck(10, system=self.system, resources=self.resources),
SleepCheck(10, system=self.system, resources=self.resources)
]
self._run_checks(checks, 4)
def test_kbd_interrupt_in_wait_with_limited_concurrency(self):
// The general idea for this test is to allow enough time for all the
After Change
self.assert_all_dead()
def test_kbd_interrupt_in_wait_with_concurrency(self):
checks = [KeyboardInterruptCheck(), SleepCheck(10),
SleepCheck(10), SleepCheck(10)]
self._run_checks(checks, 4)
def test_kbd_interrupt_in_wait_with_limited_concurrency(self):
// The general idea for this test is to allow enough time for all the


House Holds
we have different types of house hold goods.
- Brash
- Soap
- Shampoo
- Loction
Confectionary
we have different types of confectionaries.
- Sweets
- Snackers
- Chocholate
- Aores
Soft Drinks
we have different types of soft drinks.
Alcohol
we have different types of alcoholic drinks.
Snacks
we have different types of snacks.
Off Licenses
we have different types of off licenses.
Fruits
we have different types of fruits.


The layout of a website using grids.It divides the website up using different grids either vertical or hoizontally.
It enables the user to access the same webpage regardless of the resolution of the screen and resizes the content accordingly.
Semantic structure organises your webpage so that you can hightlight anything important and add any images or links that you might need to make your website usable and clear.
I found the overflows section interesting as i had come across websites that might not have set this up correctly so it was cool to see that this was something that can easily be fixed.


job_stream¶
job_stream’s python module. The primary way to use job_stream in Python is
via the job_stream.inline
module. It is highly recommended that new
users start there, or by looking at the job_stream.baked
module for
high-level paradigms.
Submodules¶
job_stream
provides several different APIs, arranged below in order of easiest to most difficult. Often, the easiest solution is the one to use.
job_stream.baked |
Pre-baked templates for common distributed operations. |
job_stream.inline |
An intuitive way of specifying data flow using imperative programming techniques. |
job_stream.invoke (progAndArgs[, …]) |
Since it can be difficult to launch some programs from an MPI distributed application, job_stream provides invoke functionality to safely launch an external program (launching an application such as Xyce, for instance, can cause problems if the environment variables are not doctored appropriately). |
job_stream.common |
The core job_stream adapter in Python. |


A word puzzle solver for Wordle, Boggle, WordzUp!, wordoid! and more.
Use the ? wildcard to represent one letter.


That sound you hear is 'Republican talking points disintegrating'
by Xeni JardinThe Donald Trump impeachment hearings are yielding much interesting drama today.
Lt. Col. Alexander S. Vindman and VP Mike Pence aide Jennifer Williams testify today.
Longtime CNN legal analyst Jeffrey Toobin scored what may be the line of the day, and it's early.
That sound you hear in the backgroud of the impeachment hearings is "Republican talking points disintegrating,” said Toobin midday on CNN.
In the clip, Toobin points out that just today we have learned about:
-- Donald Trump's own role in the July 25 phone call
-- Ukraine knew the U.S. aid was conditional by July 10 meeting
-- That the 'Javelins' aid to Ukraine was finally released only because the Trump administration was busted.
Here's the video clip, from CNN's @zbyronwolf (who writes CNN's very good #impeachment email newsletter).
[IMAGES: CSPAN SCREENGRABS]


Programming Paradigms
Procedural Programming
Procedural programming is where a program is developed to follow a specific sequence of steps, forming a linear and sequential application. The order in which the steps are organised is key to the application being successful. Perhaps the easiest programming paradigm, before the program moves onto another step the previous step must be completed. Unlike other programming paradigms, in procedural programming, you state how to create value through the use of functions, instead of declaring a state like in other programming paradigms.
Whilst many associates the use of functions with procedural programming, this is absolutely incorrect. Other programming languages such as PHP use functions which are used in a very similar fashion to how they’re used in C#. Functions are merely used to run segments of code when called and return a declared variable which can be used later in the program. An example of this can be found in the Wage Calculator project commissioned by the Bank of Ernest.
This example shows a function which is calculating the net wage of an employee's wage, and is then returning the value. This function is called in the code above when needed, elimating the need to write this code multiple times throughout the application.
The most noticeable feature of procedural programming is the use of methods to help run code in a set sequence, whereas other programming paradigms would use classes and event-based functions to run code when called from another class or an event taking place.
LimitationsPerhaps the largest disadvantage of procedural programming is its age. There have been many additional programming paradigms that have merged the ideas of procedural programming into their architecture, the most popular being object-oriented programming. These newer paradigms have also brought about many other changes that have highlighted the following limitations:
|
AdvantagesDespite procedural programming becoming obselete in comparison to the other paradigms, there are still some advantages to using this paradigm in comparison to the alternatives.
|
Event Driven Programming
Event Driven Programming allows the construction of programmes which execute code based on events occurring. Events are 'actions' which take place on a Graphical User Interface (GUI), the most common example being a button. These events can also be considered conditions, where the code only executes if a specific condition is met. For instance, a car will stop when it is out of petrol. The condition being 'out of petrol' and brake being the event that takes place.
Event Loop - The event loop is a continuous process which runs in the background of the program instance. This loop will catch an event when one occurs.
Event Trigger - The event trigger is the event/action taking place and being listened to in the code. For example, if the user presses the 'submit' button, this pressing of the submit button is the event trigger, as it has caused the click event to fire, for the code to be executed in the program.
Event Handler - The event handler is the actual code being executed when the event has taken place. When looking at the source code for the program, it will be all code contained within the method associated with that event, which will be run. The example below will submit the contents in all fields to a connected database.
Graphical User Interface (GUI) - The graphical user interface is the interface where the event takes place. These usually contain fields to be filled and buttons to be presses, all of which can fire an event when can be listened for in the code.
This example will submit all text within the above fields to a MySQL database upon the submit button being pressed. The pressing of the submit button fires the associated event, which runs the method used to create a MySQL query from the variables saved, and then submit them to the database.
LimitationsWhilst Event-Driven programming is newer than procedural, and as a result seen multiple improvements in it's implimentation, there are many reasons why this paradigm has almost entirely been eclipsed by Object-Oriented Programming
|
AdvantagesWhilst event-driven programming has it's issues, it is a crucial part of software development; particually for students who aspire to work with graphics in their software solution. Events are also a crucial part of any complex software solution, and it would more than likely be expected of a developer to work with such techniques.
|
Object-Oriented Programming
Object-Oriented Programming is a programming paradigm which revolves around the use of ‘objects’ and ‘classes’. This combination has allowed for easier and more efficient programming, at both the start of the programming process and the maintenance of the program once released.
Objects - Objects are used in Object-Oriented Programming, very similar to how data and code are used in other programming paradigms. The object consists of two segments; the behaviour (code) and the state (data). Using these enables the code to be very clean, as well as include little code to run a large amount of code.
Classes - Classes are templates of code which are used to create objects. These classes include code which declares an object’s initial state, and then provide data which creates the behaviour of this object. Classes also work to improve the readability and general quality of the code within the application.
This example displays the declaring of objects, which can be sued throughout the entire program. Declaring them as public means they can be acessed from outside this class, making the code easy to seperate into 'modules'. the use of 'get' and 'set' make the objects auto-incremental, making new additions to the data easy to store.
Limitations
|
Advantages
|
Suitability of Procedural Programming in Graphical Applications
A lot of programs can be developed through procedural programming; however, when developing a graphical application with procedural techniques, there are many limitations. Firstly, graphical programs are completely possible with procedural programming. However, the program must respect the rules in which procedural programming works by – input must be provided in stages. The most common example of a graphical program developed using procedural techniques would be a calculator.
An experienced developer could possibly do much more than this but would most likely end up developing their own framework, and eventually external events. In which case, the developer would most likely start with event-driven programming. This type of programming lends itself perfectly to graphical user interfaces, as events are used to execute code when an event occurs. I.e. when a button is pressed the program can import all data from fields on the graphic interface into a MySQL query, and then run that MySQL query to insert data into the database. This is not possible with event-based programming as the procedural program cannot easily detect when a button is pressed, or an event takes place in general. The simplest way a procedural program could do this is detected where the mouse is when they click and determining whether it was on top of a button.
However, the most common and reliable graphical user interfaces come from object-oriented programming. Here, the program can create graphical user interfaces like that of event-driven programming, but the code would be easier to debug and maintain due to the program being modular. In addition to this, the program may eventually evolve into an object-oriented program, so it would be more time efficient to plan the program around being object-oriented. When compared to procedural programming, the procedural program would become increasingly untidy and harder to develop on, as adding new code would become more difficult and tiresome.
However, if the graphical application did not require much user interaction and would be easy to navigate without the use of clicking on the screen, then procedural programming could be used quite easily for this task. As an example, a graphical application could simply involve navigation a street using the arrows on the keyboard. In which case, procedural programming would be more than fine for this. In fact, plenty of interactive games that run in a command line interface were coding using procedural programming.
In conclusion, procedural programming could be used to create graphical programs which are relatively simple and do not require much user interaction to function. However, if the application is entirely dependant on user interaction and could be simplified using events, event-based programming would be far more suitable. But if the application is large and could require maintenance in the future, the developer would be wiser to use object-oriented because maintenance is far easier to manage, and the code would be easier to adapt/change without impacting the rest of the application.


Lose Your Body
Thing Nothing
Listen To Your Breath
Click The Bell
Pray Your Hands,Close Your Eyes Then
Listen To The Bell SoundA di da phat
counter
Click the Bell to start Bell Meditation
Comment here