Skip to content

Commit 7bcd215

Browse files
committed
1 parent 41e9dd9 commit 7bcd215

28 files changed

+782
-22
lines changed

binary-forex-trading.Rmd

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
title: "Binary.com Forex Trading"
3+
subtitle: "[binary.com](https://github.com/englianhu/binary.com-interview-question) Interview Question"
4+
author: "[®γσ, Lian Hu](https://englianhu.github.io/) <img src='www/ENG.jpg' width='24'> <img src='www/RYO.jpg' width='24'>白戸則道®"
5+
date: "`r Sys.Date()`"
6+
output:
7+
tint::tintHtml:
8+
self_contained: TRUE
9+
bibliography: skeleton.bib
10+
link-citations: yes
11+
---
12+
13+
```{r setup, include = FALSE}
14+
suppressPackageStartupMessages(library('BBmisc'))
15+
suppressAll(library('tint'))
16+
suppressAll(library('devtools'))
17+
suppressAll(library('lubridate'))
18+
suppressAll(library('plyr'))
19+
suppressAll(library('stringr'))
20+
suppressAll(library('magrittr'))
21+
suppressAll(library('dplyr'))
22+
suppressAll(library('tidyr'))
23+
suppressAll(library('readr'))
24+
suppressAll(library('tidyverse')) #load c(dplyr, tidyr, stringr, readr) due to system doesn't work.
25+
suppressAll(library('DT'))
26+
suppressAll(library('quantmod'))
27+
suppressAll(library('formattable'))
28+
suppressAll(library('highcharter'))
29+
suppressAll(library('PerformanceAnalytics'))
30+
#'@ suppressAll(source('./function/.R', local = TRUE))
31+
32+
# invalidate cache when the package version changes
33+
knitr::opts_chunk$set(tidy = FALSE, cache.extra = packageVersion('tint'))
34+
options(htmltools.dir.version = FALSE)
35+
```
36+
37+
# 1. Introduction
38+
39+
```{r read-data, cache = TRUE, echo = FALSE}
40+
#'@ m.pnorm <- list.files(path = './data/20150102', pattern = paste0('^wt.pnorm.fitgaum', 1:168, '.rds$'))
41+
#'@ m.phalfnorm <- list.files(path = './data/20150102', pattern = '^wt.phalfnorm.fitgaum[0-9]{1,}.rds$')
42+
fld <- list.files(path = './data', pattern = '^[0-9]{8}$')
43+
44+
45+
llply(fld[1], function(x) {
46+
llply(list.files(path = paste0('./data/', x), pattern = '^wt.(phalfnorm|pnorm).fitgaum[0-9]{1,}.rds$'), function(y) {
47+
read_rds(path = paste0('./data/', x, '/', y))
48+
})
49+
})
50+
51+
```
52+
53+
I used to built the model and keen on the sportsbook trading. There is a good challenge for me to learn about the **Forex Trading** [binary.com Interview Qestion](https://github.com/englianhu/binary.com-interview-question). Here I try to apply the **Ridge**, **LASSO** and **Elasticnet Regularization** regression model as refer to [*Stock Market Forecasting Using LASSO Linear Regression Model*](https://github.com/englianhu/binary.com-interview-question/blob/master/reference/Stock%20Market%20Forecasting%20Using%20LASSO%20Linear%20Regression%20Model.pdf)^[1st paper in [Reference]].
54+
55+
# 2. Content
56+
57+
## 2.1 Modelling
58+
59+
I try to test 224 models and every single model has 11 sub models which adjusted with *alpha* value from *0, 0.1, 0.2... 1.0*. Due to the heavily loading of the data and will slow down the apps, here I try to create this Rmd file for models comparison purpose. You are feel free to browse over the [Webbase Application](https://beta.rstudioconnect.com/content/2367/).
60+
61+
## 2.2 Comparison
62+
63+
When I .
64+
65+
66+
# 3. Conclusion
67+
68+
69+
70+
## Reference
71+
72+
01. [Stock Market Forecasting Using LASSO Linear Regression Model](https://github.com/englianhu/binary.com-interview-question/blob/master/reference/Stock%20Market%20Forecasting%20Using%20LASSO%20Linear%20Regression%20Model.pdf)<img src='www/hot.jpg' width='20'>
73+
02. [Using LASSO from lars (or glmnet) package in R for variable selection](http://stats.stackexchange.com/questions/58531/using-lasso-from-lars-or-glmnet-package-in-r-for-variable-selection?answertab=votes#tab-top)
74+
03. [Difference between glmnet() and cv.glmnet() in R?](Difference between glmnet() and cv.glmnet() in R?)
75+
04. [Testing Kelly Criterion and Optimal f in R](https://alphaism.wordpress.com/2012/04/13/testing-kelly-criterion-and-optimal-f-in-r) <img src='www/hot.jpg' width='20'>
76+
05. [Portfolio Optimization and Monte Carlo Simulation](https://github.com/scibrokes/kelly-criterion/blob/master/references/Portfolio%20Optimization%20and%20Monte%20Carlo%20Simulation.pdf) <img src='www/hot.jpg' width='20'>
77+
06. [Glmnet Vignette](https://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html)
78+
07. [lasso怎么用算法实现?](http://cos.name/cn/topic/101533/#post-418215)
79+
08. [The Sparse Matrix and {glmnet}](http://amunategui.github.io/sparse-matrix-glmnet/)
80+
09. [Regularization and Variable Selection via the Elastic Net](https://github.com/englianhu/binary.com-interview-question/blob/master/reference/Regularization%20and%20Variable%20Selection%20via%20the%20Elastic%20Net.pdf)
81+
10. [LASSO, Ridge, and Elastic Net](http://www4.stat.ncsu.edu/~post/josh/LASSO_Ridge_Elastic_Net_-_Examples.html) <img src='www/hot.jpg' width='20'>
82+
11. [热门数据挖掘模型应用入门(一): LASSO回归](http://cos.name/2016/10/data-mining-1-lasso/)
83+
12. [The Lasso Page](http://statweb.stanford.edu/~tibs/lasso.html)
84+
13. [Call_Valuation.R](https://api.rpubs.com/Mariano/call)
85+
14. [Lecture 6 – Stochastic Processes and Monte Carlo](http://zorro-trader.com/manual/en/Lecture%206.htm)
86+
15. [The `caret` Package](http://topepo.github.io/caret/index.html) <img src='www/hot.jpg' width='20'>
87+
16. [Time Series Cross Validation](https://rpubs.com/crossxwill/time-series-cv) <img src='www/hot.jpg' width='20'>
88+
17. [Character-Code.com](http://character-code.com/)
89+
18. [Size Matters – Kelly Optimization](https://alphaism.wordpress.com/2012/03/26/size-matters-kelly-optimization/) <img src='www/hot.jpg' width='20'>
90+
91+
**Powered by - Copyright® Intellectual Property Rights of <img src='figure/oda-army.jpg' width='24'> [Scibrokes®](http://www.scibrokes.com)個人の経営企業**

binary-forex-trading.html

+619
Large diffs are not rendered by default.
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

function/compStocks.R

+6-6
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ compStocks <- function(mbase, family = 'gaussian', xy.matrix = c('h1', 'h2'),
179179
gm <- paste(paste0(
180180
nam, seq(gaum), " <- ", gaum,
181181
"; if(.save == TRUE) saveRDS(", nam, seq(gaum), ", file = '", pth, "/", nam, seq(gaum), ".rds')",
182-
"; if(.print == TRUE) cat('gaussian model ", pth, seq(gaum), "/", length(gaum), " ", txt, ".\n')"),
182+
"; if(.print == TRUE) cat('gaussian model ", pth, ' : ', as.character(now()), ' : ', seq(gaum), "/", length(gaum), " ", txt, ".\n')"),
183183
collapse = "; ")
184184

185185
## start algorithmic calculation.
@@ -287,7 +287,7 @@ compStocks <- function(mbase, family = 'gaussian', xy.matrix = c('h1', 'h2'),
287287
bm <- paste(paste0(
288288
nam, seq(binm), " <- ", binm,
289289
"; if(.save == TRUE) saveRDS(", nam, seq(binm), ", file = '", pth, "/", nam, seq(binm), ".rds')",
290-
"; if(.print == TRUE) cat('binomial model ", pth, seq(binm), "/", length(binm), " ", txt, ".\n')"),
290+
"; if(.print == TRUE) cat('binomial model ", pth, ' : ', as.character(now()), ' : ', seq(binm), "/", length(binm), " ", txt, ".\n')"),
291291
collapse = "; ")
292292

293293
## start algorithmic calculation.
@@ -384,7 +384,7 @@ compStocks <- function(mbase, family = 'gaussian', xy.matrix = c('h1', 'h2'),
384384
pm <- paste(paste0(
385385
nam, seq(poim), " <- ", poim,
386386
"; if(.save == TRUE) saveRDS(", nam, seq(poim), ", file = '", pth, "/", nam, seq(poim), ".rds')",
387-
"; if(.print == TRUE) cat('poisson model ", pth, seq(poim), "/", length(poim), " ", txt, ".\n')"),
387+
"; if(.print == TRUE) cat('poisson model ", pth, ' : ', as.character(now()), ' : ', seq(poim), "/", length(poim), " ", txt, ".\n')"),
388388
collapse = "; ")
389389

390390
## start algorithmic calculation.
@@ -485,7 +485,7 @@ compStocks <- function(mbase, family = 'gaussian', xy.matrix = c('h1', 'h2'),
485485
mm <- paste(paste0(
486486
nam, seq(mnmm), " <- ", mnmm,
487487
"; if(.save == TRUE) saveRDS(", nam, seq(mnmm), ", file = '", pth, "/", nam, seq(mnmm), ".rds')",
488-
"; if(.print == TRUE) cat('multinomial model ", pth, seq(mnmm), "/", length(mnmm), " ", txt, ".\n')"),
488+
"; if(.print == TRUE) cat('multinomial model ", pth, ' : ', as.character(now()), ' : ', seq(mnmm), "/", length(mnmm), " ", txt, ".\n')"),
489489
collapse = "; ")
490490

491491
## start algorithmic calculation.
@@ -563,7 +563,7 @@ compStocks <- function(mbase, family = 'gaussian', xy.matrix = c('h1', 'h2'),
563563
cm <- paste(paste0(
564564
nam, seq(coxm), " <- ", coxm,
565565
"; if(.save == TRUE) saveRDS(", nam, seq(coxm), ", file = '", pth, "/", nam, seq(coxm), ".rds')",
566-
"; if(.print == TRUE) cat('multinomial model ", pth, seq(coxm), "/", length(coxm), " ", txt, ".\n')"),
566+
"; if(.print == TRUE) cat('multinomial model ", pth, ' : ', as.character(now()), ' : ', seq(coxm), "/", length(coxm), " ", txt, ".\n')"),
567567
collapse = "; ")
568568

569569
## start algorithmic calculation.
@@ -641,7 +641,7 @@ compStocks <- function(mbase, family = 'gaussian', xy.matrix = c('h1', 'h2'),
641641
mgm <- paste(paste0(
642642
nam, seq(mgam), " <- ", mgam,
643643
"; if(.save == TRUE) saveRDS(", nam, seq(mgam), ", file = '", pth, "/", nam, seq(mgam), ".rds')",
644-
"; if(.print == TRUE) cat('mgaussian model ", pth, seq(mgam), "/", length(mgam), " ", txt, ".\n')"),
644+
"; if(.print == TRUE) cat('mgaussian model ", pth, ' : ', as.character(now()), ' : ', seq(mgam), "/", length(mgam), " ", txt, ".\n')"),
645645
collapse = "; ")
646646

647647
## start algorithmic calculation.

function/draft2.R

+21
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,27 @@ wt <- ldply(files, function(x) {
679679
y %>% data.frame(Date = x, .) %>% tbl_df %>% filter(mse == min(mse))
680680
}) %>% tbl_df
681681

682+
## =============================== Models Comparison =========================================
683+
## Comparison of models.
684+
685+
## list.files('./data/20150102', pattern = '^wt.pnorm.fitgaum[0-9]{1,}.rds$')
686+
m.pnorm <- list.files('./data/20150102', pattern = '^wt.pnorm.fitgaum[0-9]{1,}.rds$')
687+
m.phalfnorm <- list.files('./data/20150102', pattern = '^wt.phalfnorm.fitgaum[0-9]{1,}.rds$')
688+
689+
m.pnorm <- list.files('./data/20150102', pattern = paste0('^wt.pnorm.fitgaum', 1:168, '.rds$'))
690+
m.phalfnorm <- list.files('./data/20150102', pattern = '^wt.phalfnorm.fitgaum[0-9]{1,}.rds$')
691+
692+
693+
## http://stackoverflow.com/questions/31409591/difference-between-forecast-and-predict-function-in-r?answertab=votes#tab-top
694+
695+
## =========================== start reminder ============================================
696+
## Read through above link and might use forecast() after xts() the fit$yhat with date.
697+
## However the weighted function and values need to be consider. If the forecast() fit the
698+
## weighted effect or not in default.
699+
700+
## ============================ end reminder =============================================
701+
702+
682703

683704

684705
## ==================================== MCMC Model ===========================================

function/filterLAD.R

+10-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ filterLAD <- memoise(function(startDate = NULL, endDate = NULL) {
88
suppressAll(library('magrittr'))
99
suppressAll(library('lubridate'))
1010
suppressAll(library('formattable'))
11+
suppressAll(library('xts'))
1112
suppressAll(library('quantmod'))
1213
#'@ suppressAll(library('tidyquant'))
1314
suppressAll(source('./function/loadLAD.R'))
@@ -23,8 +24,9 @@ filterLAD <- memoise(function(startDate = NULL, endDate = NULL) {
2324
}
2425

2526
if(!exists('mbaseDT')) {
26-
mbaseDT <- LAD %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
27-
tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
27+
mbaseDT <- data.frame(Date = index(LAD), coredata(LAD)) %>% tbl_df %>% arrange(Date)
28+
#'@ mbaseDT <- LAD %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
29+
#'@ tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
2830
# %>% mutate(LAD.Volume = formattable::digits(
2931
# LAD.Volume, 0, format = 'd', big.mark = ','))
3032
}
@@ -43,8 +45,9 @@ filterLAD <- memoise(function(startDate = NULL, endDate = NULL) {
4345
suppressAll(getSymbols('LAD', from = startDate, to = endDate))
4446

4547
mbase <- LAD; rm(LAD)
46-
mbaseDT <- mbase %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
47-
tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
48+
mbaseDT <- data.frame(Date = index(LAD), coredata(LAD)) %>% tbl_df %>% arrange(Date)
49+
#'@ mbaseDT <- mbase %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
50+
#'@ tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
4851
# %>% mutate(LAD.Volume = formattable::digits(
4952
# LAD.Volume, 0, format = 'd', big.mark = ','))
5053
dateRange <- range(mbaseDT$Date)
@@ -58,8 +61,9 @@ filterLAD <- memoise(function(startDate = NULL, endDate = NULL) {
5861
## ==================== Data Filtering ===================================
5962
mbase <- mbase[paste0(startDate, '/', endDate)]
6063

61-
mbaseDT <- mbase %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
62-
tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
64+
mbaseDT <- data.frame(Date = index(LAD), coredata(LAD)) %>% tbl_df %>% arrange(Date)
65+
#'@ mbaseDT <- mbase %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
66+
#'@ tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
6367
# %>% mutate(LAD.Volume = formattable::digits(
6468
# LAD.Volume, 0, format = 'd', big.mark = ','))
6569

function/loadLAD.R

+4-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ loadLAD <- function(latestDate = NULL, dataSizeDay = 365) {
99
suppressAll(library('tidyr'))
1010
suppressAll(library('readr'))
1111
suppressAll(library('tidyverse')) #load c(dplyr, tidyr, stringr, readr) due to system doesn't work.
12+
suppressAll(library('xts'))
1213
suppressAll(library('quantmod'))
1314
#'@ suppressAll(library('tidyquant'))
1415

@@ -49,8 +50,9 @@ loadLAD <- function(latestDate = NULL, dataSizeDay = 365) {
4950
LAD <- read_rds(path = './data/LAD.rds')
5051
}
5152

52-
LADDT <- LAD %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
53-
tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
53+
LADDT <- data.frame(Date = index(LAD), coredata(LAD)) %>% tbl_df %>% arrange(Date)
54+
#'@ LADDT <- LAD %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
55+
#'@ tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
5456
#mutate(LAD.Volume = formattable::digits(
5557
# LAD.Volume, 0, format = 'd', big.mark = ','))
5658

function/plotChart2.R

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ plotChart2 <- function(Fund, type = 'multiple', event = NULL, event.dates = NULL
99
suppressMessages(library('formattable'))
1010
suppressMessages(library('quantmod'))
1111
suppressMessages(library('highcharter'))
12+
suppressMessages(library('xts'))
1213
suppressMessages(library('tidyverse'))
1314

1415
## --------------------- Data validation ------------------------------------------

function/simcompS.R

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
simcompS <- function(mbase, family, weight.dist = 'none') {
1+
simcompS <- function(mbase, family, weight.dist = 'none', rm.sim = TRUE) {
22
## Draft simulate the function while I added-on some-more criterias and selections.
33
## Simulate 365 days dataset with Markov Chain.
44
## using moving 365 days dataset and rerun the compStocks.
5+
6+
## rm.sim = TRUE will remove the files once calculated and saved.
7+
58
suppressPackageStartupMessages(library("BBmisc"))
69
suppressAll(library('devtools'))
710
suppressAll(library('lubridate'))
@@ -12,12 +15,14 @@ simcompS <- function(mbase, family, weight.dist = 'none') {
1215
suppressAll(library('tidyr'))
1316
suppressAll(library('readr'))
1417
suppressAll(library('tidyverse')) #load c(dplyr, tidyr, stringr, readr) due to system doesn't work.
18+
suppressAll(library('xts'))
1519
suppressAll(library('quantmod'))
1620
suppressAll(source('./function/compStocks.R'))
1721

1822
if(is.xts(mbase)) {
19-
mbase <- mbase %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
20-
tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
23+
mbase <- data.frame(Date = index(mbase), coredata(mbase)) %>% tbl_df %>% arrange(Date)
24+
#'@ mbase <- mbase %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
25+
#'@ tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
2126
#mutate(LAD.Volume = formattable::digits(
2227
# LAD.Volume, 0, format = 'd', big.mark = ','))
2328
}
@@ -98,7 +103,7 @@ simcompS <- function(mbase, family, weight.dist = 'none') {
98103
wt.pnorm.fitgaum.form = wt.pnorm.fitgaum$formula1[str_replace_all(
99104
name514gs, 'wt.pnorm.fitgaum', '') %>% as.numeric]
100105
saveRDS(wt.pnorm.fitgaum.form, file = paste0(pth, '/wt.pnorm.fitgaum.form.rds'))
101-
rm(fld, fitnum, fl, wtdt, wtpc, wt.pnorm.fitgaum, wt.pnorm.fitgaum.mse1, wt.pnorm.fitgaum.best, wt.pnorm.fitgaum.sum, wt.pnorm.fitgaum.form)
106+
if(rm.sim == TRUE) rm(fld, fitnum, fl, wtdt, wtpc, wt.pnorm.fitgaum, wt.pnorm.fitgaum.mse1, wt.pnorm.fitgaum.best, wt.pnorm.fitgaum.sum, wt.pnorm.fitgaum.form)
102107

103108
} else if(weight.dist == 'phalfnorm') {
104109

@@ -153,7 +158,7 @@ simcompS <- function(mbase, family, weight.dist = 'none') {
153158
wt.phalfnorm.fitgaum.form = wt.phalfnorm.fitgaum$formula1[str_replace_all(
154159
name514gs, 'wt.phalfnorm.fitgaum', '') %>% as.numeric]
155160
saveRDS(wt.phalfnorm.fitgaum.form, file = paste0(pth, '/wt.phalfnorm.fitgaum.form.rds'))
156-
rm(fld, fitnum, fl, wtdt, wtpc, wt.phalfnorm.fitgaum, wt.phalfnorm.fitgaum.mse1, wt.phalfnorm.fitgaum.best, wt.phalfnorm.fitgaum.sum, wt.phalfnorm.fitgaum.form)
161+
if(rm.sim == TRUE) rm(fld, fitnum, fl, wtdt, wtpc, wt.phalfnorm.fitgaum, wt.phalfnorm.fitgaum.mse1, wt.phalfnorm.fitgaum.best, wt.phalfnorm.fitgaum.sum, wt.phalfnorm.fitgaum.form)
157162

158163
} else if(weight.dist == 'none') {
159164

@@ -180,7 +185,7 @@ simcompS <- function(mbase, family, weight.dist = 'none') {
180185
## saved best model's formula.
181186
fitgaum.form = fitgaum$formula1[str_replace_all(name514gs, 'fitgaum', '') %>% as.numeric]
182187
saveRDS(fitgaum.form, file = paste0(pth, '/fitgaum.form.rds'))
183-
rm(fld, fitnum, fl, wtdt, wtpc, fitgaum, fitgaum.mse1, fitgaum.best, fitgaum.sum, fitgaum.form)
188+
if(rm.sim == TRUE) rm(fld, fitnum, fl, wtdt, wtpc, fitgaum, fitgaum.mse1, fitgaum.best, fitgaum.sum, fitgaum.form)
184189

185190
} else {
186191
stop('Kindly select weight.dist = "pnorm" or weight.dist = "phalfnorm" or weight.dist = "none".')

function/simulateModels.R

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ suppressAll(library("shiny"))
2121
suppressAll(library("shinyjs"))
2222
suppressAll(library('shinyBS'))
2323
suppressAll(library('DT'))
24+
suppressAll(library('xts'))
2425
suppressAll(library('quantmod'))
2526
suppressAll(library('formattable'))
2627
suppressAll(library('highcharter'))
@@ -35,8 +36,9 @@ suppressAll(source('./function/plotChart2.R'))
3536
#'@ getSymbols('LAD')
3637
#'@ saveRDS(LAD, file = './data/LAD_full.rds')
3738
LAD <- read_rds(path = './data/LAD_full.rds')
38-
LADDT <- LAD %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
39-
tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
39+
LADDT <- data.frame(Date = index(LAD), coredata(LAD)) %>% tbl_df %>% arrange(Date)
40+
#'@ LADDT <- LAD %>% data.frame %>% data.frame(Date = rownames(.), .) %>%
41+
#'@ tbl_df %>% mutate(Date = ymd(Date)) %>% arrange(Date)
4042
#mutate(LAD.Volume = formattable::digits(
4143
# LAD.Volume, 0, format = 'd', big.mark = ','))
4244

skeleton.bib

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
@Manual{R-base,
2+
title = {R: A Language and Environment for Statistical Computing},
3+
author = {{R Core Team}},
4+
organization = {R Foundation for Statistical Computing},
5+
address = {Vienna, Austria},
6+
year = {2016},
7+
url = {https://www.R-project.org/},
8+
}
9+
@Manual{R-rmarkdown,
10+
title = {rmarkdown: Dynamic Documents for R},
11+
author = {JJ Allaire and Joe Cheng and Yihui Xie and Jonathan McPherson and Winston Chang and Jeff Allen and Hadley Wickham and Aron Atkins and Rob Hyndman},
12+
year = {2016},
13+
note = {R package version 1.3},
14+
url = {https://CRAN.R-project.org/package=rmarkdown},
15+
}

www/RYO.jpg

146 KB
Loading

www/ShirotoNorimichi.jpg

16 KB
Loading

www/ShirotoNorimichi2.jpg

18.5 KB
Loading

0 commit comments

Comments
 (0)