Build Heterogeneous Agent Model (HAM) in R

閱讀時間約 4 分鐘
rm(list=ls());gc()
library(data.table)
library(ggplot2)
library(doSNOW)
library(foreach)
library(tidyverse)
library(tibbletime)
library(rlang)
#-----Settings---------#
Ft=0
a=1
b=0.05
c=0.02
d=0.95
eta=0.1
lambda=0.45
v_alpha=0.0025
v_beta=0.025
v_gamma=0.0025
N0=100
K0=50
#------read table----------#
Data<-fread("price.txt",data.table = F)
#-------------------------#
colnames(Data)<-c("Code","Name","Date","Turnover","Price")
TW_names<-unique(Data$Name)
Data<-Data %>%
mutate(log_P=log(Price)) %>%
mutate(Demand_F=c*(Ft-log_P)+rnorm(n=nrow(Data),sd=v_gamma)) %>%
mutate(Demand_C=b*(log_P-lag(log_P))+rnorm(n=nrow(Data),sd=v_beta)) %>%
mutate(Attr_F=0,Attr_C=0)
#------building model-----#
Data_append<- foreach(ix = 1:length(TW_names),.combine="rbind")%do%{
test<-Data %>% filter(Name==TW_names[ix])
for(iy in 4:nrow(test)){
test$Attr_C[iy]=(exp(test$log_P[iy])-exp(test$log_P[iy-1]))*test$Demand_C[iy-2]+d*test$Attr_C[iy-1]
test$Attr_F[iy]=(exp(test$log_P[iy])-exp(test$log_P[iy-1]))*test$Demand_F[iy-2]+d*test$Attr_F[iy-1]
}
return(test)
}
Data_append<-Data_append %>% mutate(FtoC=ifelse(Attr_C>Attr_F,0.5+lambda,0.5-lambda),CtoF=ifelse(Attr_F>Attr_C,0.5+lambda,0.5-lambda))
chartist<- foreach(ix = 1:length(TW_names),.combine="rbind")%do%{
test<-Data_append %>% filter(Name==TW_names[ix])
test=test %>%
mutate(N=N0) %>%
mutate(K=K0) %>%
mutate(Deter=runif(nrow(test),min = 0,max=1))
for(iy in 2:nrow(test)){
test$K[iy]=ifelse(test$Deter[iy]<(N0-test$K[iy-1])/N0*(eta+test$FtoC[iy-1]*(test$K[iy-1])/(N0-1)),test$K[iy-1]+1,ifelse(test$Deter[iy]>(1-(test$K[iy-1]/N0*(eta+test$CtoF[iy-1]*(N0-test$K[iy-1])/(N0-1)))),test$K[iy-1]-1,test$K[iy-1]))
}
return(test)
}
C_W=chartist %>% mutate(chartist_weight=K/N0)
    留言0
    查看全部
    發表第一個留言支持創作者!
    Zhaung Eric的沙龍 的其他內容
    Download Stock Data from WRDS (accounts are required)
    R example of Branching Ratio
    Download Stock Data from WRDS (accounts are required)
    R example of Branching Ratio
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
    Thumbnail
    Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
    Thumbnail
    完整標題:build 與「築」或「築搭」、「築做」、「築定」、「築造」、「築建」或「身材之練鍛」、「築體」、「美體」等的轉換密碼,兼談「筑」與 piano 的關聯
    Thumbnail
    這部電影的風格十分強烈,而我只能詞窮的說這讓我想用藝術性來形容,而且在對話與畫面中又帶有哲學思想,只是我也無法歸類是屬於哪一個系統(雖然說對於任何一種哲學思想的歸類都是過度簡化的)。 故事的敘述是很瑣碎的以五個事件(incident)以及最後地獄之旅作為整個電影的架構,沒有所謂的主軸
    Thumbnail
    因為發現身邊很多不滿自己工作的人,其實每天都很忙,但這份填飽肚子的工作,卻沒有為他們的生命帶來任何養分。
    Thumbnail
    由《性愛成癮的女人》的導演-拉斯馮提爾所執導,描述了一個在70年代美國華盛頓州犯下多起謀殺案件的殺人魔傑克,以五個章節分段剖析了殺人犯的心理狀態。 電影在今年五月坎城影展上首映,被媒體稱作「有史以來最難受的觀影體驗」,甚至在播放完畢後以「逃出」形容離開放映場的心情。這部電影到底是如何讓這些觀眾崩潰?
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
    Thumbnail
    Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
    Thumbnail
    完整標題:build 與「築」或「築搭」、「築做」、「築定」、「築造」、「築建」或「身材之練鍛」、「築體」、「美體」等的轉換密碼,兼談「筑」與 piano 的關聯
    Thumbnail
    這部電影的風格十分強烈,而我只能詞窮的說這讓我想用藝術性來形容,而且在對話與畫面中又帶有哲學思想,只是我也無法歸類是屬於哪一個系統(雖然說對於任何一種哲學思想的歸類都是過度簡化的)。 故事的敘述是很瑣碎的以五個事件(incident)以及最後地獄之旅作為整個電影的架構,沒有所謂的主軸
    Thumbnail
    因為發現身邊很多不滿自己工作的人,其實每天都很忙,但這份填飽肚子的工作,卻沒有為他們的生命帶來任何養分。
    Thumbnail
    由《性愛成癮的女人》的導演-拉斯馮提爾所執導,描述了一個在70年代美國華盛頓州犯下多起謀殺案件的殺人魔傑克,以五個章節分段剖析了殺人犯的心理狀態。 電影在今年五月坎城影展上首映,被媒體稱作「有史以來最難受的觀影體驗」,甚至在播放完畢後以「逃出」形容離開放映場的心情。這部電影到底是如何讓這些觀眾崩潰?