加拿大华人论坛 加拿大生活信息有会VBA编程的么?



在加拿大


找会VBA编程的朋友咨询下。有几道作业题实在是弄不出来。简直崩溃。在线等。今晚必须交了。可有偿,先谢谢了。

评论
homeandlearn.org

评论
非常感谢!书我也在看。其实期末考试已经70分了。但是期末考试占比38%。这个倒霉的作业占15%。需要有人当面指导下。基本的code已经写出来了。就是不知道哪里有错。老是一运行就断。

评论
你贴出来看看

评论
这是其中最大的一道题。法语的题目要求。Sub qui utilise la classe « Volatility »De façon manuelle, dans une Worksheet nommée « OptionInfo », que vous aurez créée vous-même defaçon manuelle, préparez des données (inputs) comme suit. Ne mettez pas de valeurs dans la RangeH2:H9; votre code remplira cette colonne. Les valeurs grisées que vous voyez dans la capture d’écranont été incluses pour vous aider à valider votre code.Créez un logiciel (une Sub nommée VolatilityWorksheetInputs) qui calculera la volatilité implicite pourchaque ligne de données dans le tableau. Votre code placera les résultats dans la colonne H.Taux sans risque : Supposez que le taux sans risque est de 2.00 %. Vous pouvez hard-coder ce paramètredans cet exercice.

评论
upload_2015-12-23_12-56-22.png

评论
实际上在H栏计算期权的波动率。(Volatility)如果直接在H里植入一个公式,引用a,b,c....栏的数据是最容易的。这个公式我已经写好。

评论
Function VOL_Implied8(S, K, T, r, OptionPrice, VolGuess, Call_Put)Dim d1 As Double, d2 As Double, ND1 As Double, ND2 As Double, dNd1 As DoubleDim X As IntegerDim Error As Double, PriceError As Double, Vol As Double, BS As Double, Vega As DoubleIf Call_Put <> 1 Then Call_Put = -1 X = Call_Put Error = 0.00000001 Vol = VolGuess PriceError = 1 + Error Do Until Abs(PriceError) < Error d1 = (Log(S / K) + (r + Vol ^ 2 / 2) * T) / (Vol * Sqr(T)) d2 = d1 - Vol * Sqr(T) ND1 = Application.NormSDist(X * d1) ND2 = Application.NormSDist(X * d2) dNd1 = Exp(-d1 ^ 2 / 2) / Sqr(2 * 3.14159265358979) BS = X * (S * ND1 - K * Exp(-r * T) * ND2) Vega = S * Sqr(T) * dNd1 Vol = Vol - (BS - OptionPrice) / Vega PriceError = (BS - OptionPrice) Loop VOL_Implied8 = VolEnd Function

评论
现在老师要求两种方法。1种是最复杂的。写一个classe。把数据引入,然后计算完后,vba程序自动填写到H栏。

评论
我试着用sub把数据导入。但是不成功。Exercise 5Public Sub VolatilityWorksheetinputs()Dim Vo As New Exercice5VolatilityDim i As IntegerSet wr = ThisWorkbook.Worksheets("optioninfo")For i = 2 To 8date1 = wr.Cells(7, i).Valuedate2 = wr.Cells(1, i).Valuewr.Cells(9, i).Value = date1 - date2Vo.currentstockprice = wr.Cells(4, i).ValueVo.strikeprice = wr.Cells(6, i).ValueVo.Time = wr.Cells(9, i).ValueVo.RiskRreeRate = 0.02Vo.CallPrice = wr.Cells(5, i).Valuewr.Range(8, i) = V0.ImpliedVolatility()NextEnd Sub

评论
下面是classe:Private pcurrentstockprice As DoublePrivate pStrikePrice As DoublePrivate Time As DoublePrivate priskfreerate As DoublePrivate pCallPrice As DoublePrivate pConvergenceParameter As DoublePublic Property Get currentstockprice() As Double currentstockprice = pcurrentstockpriceEnd PropertyPublic Property Let currentstockprice(Value As Double) pcurrentstockprice = ValueEnd PropertyPublic Property Get strikeprice() As Double strikeprice = pStrikePriceEnd PropertyPublic Property Let strikeprice(Value As Double) pStrikePrice = ValueEnd PropertyPublic Property Get Time() As Double Time = pTimeEnd PropertyPublic Property Let Time(Value As Double) pTime = TimeEnd PropertyPublic Property Get riskfreerate() As Double riskfreerate = priskfreerateEnd PropertyPublic Property Let riskfreerate(Value As Double) priskfreerate = ValueEnd PropertyPublic Property Get CallPrice() As Double CallPrice = pCallPriceEnd PropertyPublic Property Let CallPrice(Value As Double) pCallPrice = ValueEnd PropertyPublic Property Get ConvergenceParameter() As Double ConvergenceParameter = pConvergenceParameterEnd PropertyPublic Property Let ConvergenceParameter(Value As Double) pConvergenceParameter = ValueEnd PropertyFunction ImpliedVolatility2(pcurrentstockprice, pstickprice, pTime, priskfreerate, pCallPrice) High = 2 Low = 0 Do While (High - Low) > 0.0001 sigma = (High + Low) / 2 dOne = (Log(pcurrentstockprice / pStrikePrice) + priskfreerate * pTime) / (sigma * Sqr(pTime)) _ + 0.5 * sigma * Sqr(pTime) CallOption = currentstockprice * Application.NormSDist(dOne(pcurrentstockprice, pstickeprice, _ pTime, priskfreerate, sigma)) - pstickprice * Exp(-pTime * priskfreerate) * _ Application.NormSDist(dOne(pcurrentstockprice, pstickprice, pTime, priskfreerate, sigma) _ - sigma * Sqr(pTime))

评论
上面由于使用的第四题写好的classe,变量都是用的英语单词,所以比较复杂。其实function的公式是一样的。

评论
不行, 我看不出来,

评论
然后还有一种方法是不用classe,最简单的code。这是第七题。upload_2015-12-23_13-8-49.png

评论
第六题是从Acess(SQL文件)中导入数据,合并成一个类似第五题的表,用第五题的方法计算volatility。其实用到的VBA的编码是简单的。upload_2015-12-23_13-11-32.png

评论
图像显示不出来?其实关键点是要把参数导入function。

评论
你别着急, 有好多IT人士, 一会儿就都出来了,

评论
是啊。论坛还是卧虎藏龙的。

评论
没听说过这种语言。

评论
西葡那些事儿 (2011)意大利中北部之旅 (2009)美东四城记(波、纽、华、费)(2010)墨西哥城都市游 (2012)邮轮入门级-巴哈马 (2016) 2015-12-23#20 K 87 $0.00 我会VBA,你把你的EXcel文件 发给我,同时告诉我如何准备测试环境,我就可以帮你弄出来。

  ·生活百科 安装批准的问题
·生活百科 消费 /生产计

加拿大生活信息-加拿大

加拿大老人金

华人网大家好: 我父母來了加拿大都已經十年啦,開始準備申請加拿大老人金。 本人對這項福利都還好迷茫,希望各位多多指教, 多謝!本人父母居住加拿大已經十年,過去十年,沒有工作 ...

加拿大生活信息-加拿大

不想在温哥华了想去农村

华人网不想在大城市了,从出生到现在一直在大城市,来到温哥华,这房价和工资的不对等更搞得无法呼吸。来加拿大又不是奔着这些来的,加上本人很佛系,现在就梦想找一份WFH的工作到乡 ...

加拿大生活信息-加拿大

从首尔转机回加拿大

华人网今天送老公先回加拿大,从沈阳出发经首尔当天飞多伦多。 给老公买的是沈阳至首尔 大韩航空的 从首尔到多伦多 加拿大航空 行李在沈阳可以直挂到多伦多 给了两段航程的登机牌 行李 ...

加拿大生活信息-加拿大

赏花:蒲公英晚期?

华人网郁金香正在凋谢,蒲公英也进入最后的一搏。这个时候,她们已经不像小黄花绽放时那么可爱了(应该说多数人是这么感觉的),但仔细观赏,我还是很喜欢的。心中喜乐,到处都是美 ...