本贴内容转自:《随机模拟与金融数据处理Stata教程》,在此感谢李春涛、张璇二位老师。 - *使用蒙特卡洛模拟计算看涨期权价格
- clear
- set obs 10000 //删去不设定每次可得不同值
- local S0=42
- local X=40
- local T=0.5
- local sigma=0.2
- local r=0.1
- gen ln_ds=(`r'-`sigma'^2/2)*`T'+`sigma'*sqrt(`T')*invnorm(uniform())
- gen ST=`S0'*exp(ln_ds)
- gen CT=max(0,ST-`X')*exp(-`r'*`T')
- sum CT
- local CT=r(mean)
- dis `CT'
- *使用蒙特卡洛模拟计算看跌期权价格
- clear
- set seed 10000 //删去不设定每次可得不同值
- set obs 10000
- local S0=42
- local X=40
- local T=0.5
- local sigma=0.2
- local r=0.1
- gen ln_ds=(`r'-`sigma'^2/2)*`T'+`sigma'*sqrt(`T')*invnorm(uniform())
- gen ST=`S0'*exp(ln_ds)
- gen PT=max(`X'-ST,0)*exp(-`r'*`T')
- sum PT
- local PT=r(mean)
- dis `PT'
复制代码 |
编辑名为hello.do的文档,然后在command 窗口输入hello
BEGIN hello.do |
- program hello
- display "Hello, world"
- end
- exit
复制代码 |
END hello.do |
1.在编辑程序时 Stata只是对Program和end之间的内容加以记录,但并不检查其中语法,例如:将上述双引号去掉
- program hello
- display Hello, world
- end
- exit
复制代码
运行发生错误时,可以借助set trace 来检查:
检查出时,请及时关闭set trace,否则可能导致后续语句运行出错,这时有:
此外,在程序命名时不应与既有命令重名,
- program d
- display Hello, world
- end
复制代码
因为d本身为内置命令,可以输入which d: