finrb 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/finrb/utils.rb CHANGED
@@ -33,7 +33,7 @@ module Finrb
33
33
  # @export
34
34
  # @examples
35
35
  # bdy(d=1500,f=100000,t=120)
36
- def self.bdy(d, f, t)
36
+ def self.bdy(d:, f:, t:)
37
37
  d = d.to_d
38
38
  f = f.to_d
39
39
  t = t.to_d
@@ -48,7 +48,7 @@ module Finrb
48
48
  # @export
49
49
  # @examples
50
50
  # bdy2mmy(bdy=0.045,t=120)
51
- def self.bdy2mmy(bdy, t)
51
+ def self.bdy2mmy(bdy:, t:)
52
52
  bdy = bdy.to_d
53
53
  t = t.to_d
54
54
 
@@ -63,7 +63,7 @@ module Finrb
63
63
  # @export
64
64
  # @examples
65
65
  # Finrb::Utils.cash_ratio(cash=3000,ms=2000,cl=2000)
66
- def self.cash_ratio(cash, ms, cl)
66
+ def self.cash_ratio(cash:, ms:, cl:)
67
67
  cash = cash.to_d
68
68
  ms = ms.to_d
69
69
  cl = cl.to_d
@@ -78,7 +78,7 @@ module Finrb
78
78
  # @export
79
79
  # @examples
80
80
  # Finrb::Utils.coefficient_variation(sd=0.15,avg=0.39)
81
- def self.coefficient_variation(sd, avg)
81
+ def self.coefficient_variation(sd:, avg:)
82
82
  sd = sd.to_d
83
83
  avg = avg.to_d
84
84
 
@@ -95,12 +95,12 @@ module Finrb
95
95
  # @param method inventory methods: FIFO (first in first out, permitted under both US and IFRS), LIFO (late in first out, US only), WAC (weighted average cost,US and IFRS)
96
96
  # @export
97
97
  # @examples
98
- # cogs(uinv=2,pinv=2,units=c(3,5),price=c(3,5),sinv=7,method="FIFO")
98
+ # cogs(uinv=2,pinv=2,units=[3,5],price=[3,5],sinv=7,method="FIFO")
99
99
  #
100
- # cogs(uinv=2,pinv=2,units=c(3,5),price=c(3,5),sinv=7,method="LIFO")
100
+ # cogs(uinv=2,pinv=2,units=[3,5],price=[3,5],sinv=7,method="LIFO")
101
101
  #
102
- # cogs(uinv=2,pinv=2,units=c(3,5),price=c(3,5),sinv=7,method="WAC")
103
- def self.cogs(uinv, pinv, units, price, sinv, method = 'FIFO')
102
+ # cogs(uinv=2,pinv=2,units=[3,5],price=[3,5],sinv=7,method="WAC")
103
+ def self.cogs(uinv:, pinv:, units:, price:, sinv:, method: 'FIFO')
104
104
  uinv = uinv.to_d
105
105
  pinv = pinv.to_d
106
106
  units = Array.wrap(units).map(&:to_d)
@@ -164,7 +164,7 @@ module Finrb
164
164
  endingInventory = (units[i] - sinv) * price[i]
165
165
  if i > 1
166
166
  temp = i - 1
167
- (temp).downto(0).each do |j|
167
+ temp.downto(0).each do |j|
168
168
  endingInventory += (units[j] * price[j])
169
169
  end
170
170
  end
@@ -200,7 +200,7 @@ module Finrb
200
200
  # @export
201
201
  # @examples
202
202
  # Finrb::Utils.current_ratio(ca=8000,cl=2000)
203
- def self.current_ratio(ca, cl)
203
+ def self.current_ratio(ca:, cl:)
204
204
  ca = ca.to_d
205
205
  cl = cl.to_d
206
206
 
@@ -215,7 +215,7 @@ module Finrb
215
215
  # @export
216
216
  # @examples
217
217
  # ddb(cost=1200,rv=200,t=5)
218
- def self.ddb(cost, rv, t)
218
+ def self.ddb(cost:, rv:, t:)
219
219
  cost = cost.to_d
220
220
  rv = rv.to_d
221
221
  t = t.to_d
@@ -248,7 +248,7 @@ module Finrb
248
248
  # @export
249
249
  # @examples
250
250
  # Finrb::Utils.debt_ratio(td=6000,ta=20000)
251
- def self.debt_ratio(td, ta)
251
+ def self.debt_ratio(td:, ta:)
252
252
  td = td.to_d
253
253
  ta = ta.to_d
254
254
 
@@ -275,7 +275,7 @@ module Finrb
275
275
  # Finrb::Utils.diluted_eps(ni=115600,pd=10000,w=200000,iss=2500)
276
276
  #
277
277
  # Finrb::Utils.diluted_eps(ni=115600,pd=10000,cpd=10000,cdi=42000,tax=0.4,w=200000,cps=40000,cds=60000,iss=2500)
278
- def self.diluted_eps(ni, pd, w, cpd = 0, cdi = 0, tax = 0, cps = 0, cds = 0, iss = 0)
278
+ def self.diluted_eps(ni:, pd:, w:, cpd: 0, cdi: 0, tax: 0, cps: 0, cds: 0, iss: 0)
279
279
  ni = ni.to_d
280
280
  pd = pd.to_d
281
281
  w = w.to_d
@@ -305,7 +305,7 @@ module Finrb
305
305
  # @export
306
306
  # @examples
307
307
  # Finrb::Utils.discount_rate(n=5,pv=0,fv=600,pmt=-100,type=0)
308
- def self.discount_rate(n, pv, fv, pmt, type = 0, lower = 0.0001, upper = 100)
308
+ def self.discount_rate(n:, pv:, fv:, pmt:, type: 0, lower: 0.0001, upper: 100)
309
309
  n = n.to_d
310
310
  pv = pv.to_d
311
311
  fv = fv.to_d
@@ -315,9 +315,10 @@ module Finrb
315
315
  upper = upper.to_d
316
316
 
317
317
  nlfunc = NlFunctionStub.new
318
- nlfunc.func = lambda do |x|
319
- BigDecimal((Finrb::Utils.fv_simple(x[0],n,pv) + Finrb::Utils.fv_annuity(x[0],n,pmt,type) - fv).to_s)
320
- end
318
+ nlfunc.func =
319
+ lambda do |x|
320
+ BigDecimal((Finrb::Utils.fv_simple(x[0], n, pv) + Finrb::Utils.fv_annuity(x[0], n, pmt, type) - fv).to_s)
321
+ end
321
322
 
322
323
  root = [(upper - lower) / 2]
323
324
  nlsolve(nlfunc, root)
@@ -333,7 +334,7 @@ module Finrb
333
334
  # ear(r=0.12,m=12)
334
335
  #
335
336
  # ear(0.04,365)
336
- def self.ear(r, m)
337
+ def self.ear(r:, m:)
337
338
  r = r.to_d
338
339
  m = m.to_d
339
340
 
@@ -348,7 +349,7 @@ module Finrb
348
349
  # Finrb::Utils.ear_continuous(r=0.1)
349
350
  #
350
351
  # Finrb::Utils.ear_continuous(0.03)
351
- def self.ear_continuous(r)
352
+ def self.ear_continuous(r:)
352
353
  r = r.to_d
353
354
 
354
355
  (r.to_d.exp - 1)
@@ -360,7 +361,7 @@ module Finrb
360
361
  # @export
361
362
  # @examples
362
363
  # ear2bey(ear=0.08)
363
- def self.ear2bey(ear)
364
+ def self.ear2bey(ear:)
364
365
  ear = ear.to_d
365
366
 
366
367
  ((((1 + ear)**0.5) - 1) * 2)
@@ -373,7 +374,7 @@ module Finrb
373
374
  # @export
374
375
  # @examples
375
376
  # ear2hpr(ear=0.05039,t=150)
376
- def self.ear2hpr(ear, t)
377
+ def self.ear2hpr(ear:, t:)
377
378
  ear = ear.to_d
378
379
  t = t.to_d
379
380
 
@@ -410,7 +411,7 @@ module Finrb
410
411
  #
411
412
  # # monthly proportional interest rate which is equivalent to a simple annual interest
412
413
  # Finrb::Utils.eir(r=0.05,p=12,type='p')
413
- def self.eir(r, n = 1, p = 12, type = 'e')
414
+ def self.eir(r:, n: 1, p: 12, type: 'e')
414
415
  r = r.to_d
415
416
  n = n.to_d
416
417
  p = p.to_d
@@ -435,7 +436,7 @@ module Finrb
435
436
  # @export
436
437
  # @examples
437
438
  # Finrb::Utils.eps(ni=10000,pd=1000,w=11000)
438
- def self.eps(ni, pd, w)
439
+ def self.eps(ni:, pd:, w:)
439
440
  ni = ni.to_d
440
441
  pd = pd.to_d
441
442
  w = w.to_d
@@ -450,7 +451,7 @@ module Finrb
450
451
  # @export
451
452
  # @examples
452
453
  # Finrb::Utils.financial_leverage(te=16000,ta=20000)
453
- def self.financial_leverage(te, ta)
454
+ def self.financial_leverage(te:, ta:)
454
455
  te = te.to_d
455
456
  ta = ta.to_d
456
457
 
@@ -467,7 +468,7 @@ module Finrb
467
468
  # @export
468
469
  # @examples
469
470
  # fv(r=0.07,n=10,pv=1000,pmt=10)
470
- def self.fv(r, n, pv = 0, pmt = 0, type = 0)
471
+ def self.fv(r:, n:, pv: 0, pmt: 0, type: 0)
471
472
  r = r.to_d
472
473
  n = n.to_d
473
474
  pv = pv.to_d
@@ -492,7 +493,7 @@ module Finrb
492
493
  # Finrb::Utils.fv_annuity(0.03,12,-1000)
493
494
  #
494
495
  # Finrb::Utils.fv_annuity(r=0.03,n=12,pmt=-1000,type=1)
495
- def self.fv_annuity(r, n, pmt, type = 0)
496
+ def self.fv_annuity(r:, n:, pmt:, type: 0)
496
497
  r = r.to_d
497
498
  n = n.to_d
498
499
  pmt = pmt.to_d
@@ -516,7 +517,7 @@ module Finrb
516
517
  # Finrb::Utils.fv_simple(0.08,10,-300)
517
518
  #
518
519
  # Finrb::Utils.fv_simple(r=0.04,n=20,pv=-50000)
519
- def self.fv_simple(r, n, pv)
520
+ def self.fv_simple(r:, n:, pv:)
520
521
  r = r.to_d
521
522
  n = n.to_d
522
523
  pv = pv.to_d
@@ -530,8 +531,8 @@ module Finrb
530
531
  # @param cf uneven cash flow
531
532
  # @export
532
533
  # @examples
533
- # Finrb::Utils.fv_uneven(r=0.1, cf=c(-1000, -500, 0, 4000, 3500, 2000))
534
- def self.fv_uneven(r, cf)
534
+ # Finrb::Utils.fv_uneven(r=0.1, cf=[-1000, -500, 0, 4000, 3500, 2000])
535
+ def self.fv_uneven(r:, cf:)
535
536
  r = r.to_d
536
537
  cf = Array.wrap(cf).map(&:to_d)
537
538
 
@@ -549,8 +550,8 @@ module Finrb
549
550
  # @param r returns over multiple periods
550
551
  # @export
551
552
  # @examples
552
- # Finrb::Utils.geometric_mean(r=c(-0.0934, 0.2345, 0.0892))
553
- def self.geometric_mean(r)
553
+ # Finrb::Utils.geometric_mean(r=[-0.0934, 0.2345, 0.0892])
554
+ def self.geometric_mean(r:)
554
555
  r = Array.wrap(r).map(&:to_d)
555
556
 
556
557
  rs = r + 1
@@ -564,7 +565,7 @@ module Finrb
564
565
  # @export
565
566
  # @examples
566
567
  # gpm(gp=1000,rv=20000)
567
- def self.gpm(gp, rv)
568
+ def self.gpm(gp:, rv:)
568
569
  gp = gp.to_d
569
570
  rv = rv.to_d
570
571
 
@@ -575,8 +576,8 @@ module Finrb
575
576
  # @param p price over multiple periods
576
577
  # @export
577
578
  # @examples
578
- # Finrb::Utils.harmonic_mean(p=c(8,9,10))
579
- def self.harmonic_mean(p)
579
+ # Finrb::Utils.harmonic_mean(p=[8,9,10])
580
+ def self.harmonic_mean(p:)
580
581
  p = Array.wrap(p).map(&:to_d)
581
582
 
582
583
  (1 / (p.sum { |val| 1 / val } / p.size))
@@ -590,7 +591,7 @@ module Finrb
590
591
  # @export
591
592
  # @examples
592
593
  # hpr(ev=33,bv=30,cfr=0.5)
593
- def self.hpr(ev, bv, cfr = 0)
594
+ def self.hpr(ev:, bv:, cfr: 0)
594
595
  ev = ev.to_d
595
596
  bv = bv.to_d
596
597
  cfr = cfr.to_d
@@ -605,7 +606,7 @@ module Finrb
605
606
  # @export
606
607
  # @examples
607
608
  # hpr2bey(hpr=0.02,t=3)
608
- def self.hpr2bey(hpr, t)
609
+ def self.hpr2bey(hpr:, t:)
609
610
  hpr = hpr.to_d
610
611
  t = t.to_d
611
612
 
@@ -619,7 +620,7 @@ module Finrb
619
620
  # @export
620
621
  # @examples
621
622
  # hpr2ear(hpr=0.015228,t=120)
622
- def self.hpr2ear(hpr, t)
623
+ def self.hpr2ear(hpr:, t:)
623
624
  hpr = hpr.to_d
624
625
  t = t.to_d
625
626
 
@@ -633,7 +634,7 @@ module Finrb
633
634
  # @export
634
635
  # @examples
635
636
  # hpr2mmy(hpr=0.01523,t=120)
636
- def self.hpr2mmy(hpr, t)
637
+ def self.hpr2mmy(hpr:, t:)
637
638
  hpr = hpr.to_d
638
639
  t = t.to_d
639
640
 
@@ -646,17 +647,17 @@ module Finrb
646
647
  # @importFrom stats uniroot
647
648
  # @export
648
649
  # @examples
649
- # irr(cf=c(-5, 1.6, 2.4, 2.8))
650
- def self.irr(cf)
650
+ # irr(cf=[-5, 1.6, 2.4, 2.8])
651
+ def self.irr(cf:)
651
652
  cf = Array.wrap(cf).map(&:to_d)
652
653
 
653
654
  n = cf.size
654
655
  subcf = cf.drop(1)
655
-
656
656
  nlfunc = NlFunctionStub.new
657
- nlfunc.func = lambda do |x|
658
- BigDecimal((-1 * Finrb::Utils.pv_uneven(x[0], subcf) + cf[0]).to_s)
659
- end
657
+ nlfunc.func =
658
+ lambda do |x|
659
+ BigDecimal(((-1 * Finrb::Utils.pv_uneven(x[0], subcf)) + cf[0]).to_s)
660
+ end
660
661
 
661
662
  root = [0]
662
663
  nlsolve(nlfunc, root)
@@ -672,9 +673,9 @@ module Finrb
672
673
  # @param step increment of the irr
673
674
  # @export
674
675
  # @examples
675
- # irr2(cf=c(-5, 1.6, 2.4, 2.8))
676
- # irr2(cf=c(-200, 50, 60, -70, 30, 20))
677
- def self.irr2(cf, cutoff = 0.1, from = -1, to = 10, step = 0.000001)
676
+ # irr2(cf=[-5, 1.6, 2.4, 2.8])
677
+ # irr2(cf=[-200, 50, 60, -70, 30, 20])
678
+ def self.irr2(cf:, cutoff: 0.1, from: -1, to: 10, step: 0.000001)
678
679
  cf = Array.wrap(cf).map(&:to_d)
679
680
  cutoff = cutoff.to_d
680
681
  from = from.to_d
@@ -714,7 +715,7 @@ module Finrb
714
715
  # @export
715
716
  # @examples
716
717
  # iss(amp=20,ep=15,n=10000)
717
- def self.iss(amp, ep, n)
718
+ def self.iss(amp:, ep:, n:)
718
719
  amp = amp.to_d
719
720
  ep = ep.to_d
720
721
  n = n.to_d
@@ -733,7 +734,7 @@ module Finrb
733
734
  # @export
734
735
  # @examples
735
736
  # Finrb::Utils.lt_d2e(ltd=8000,te=20000)
736
- def self.lt_d2e(ltd, te)
737
+ def self.lt_d2e(ltd:, te:)
737
738
  ltd = ltd.to_d
738
739
  te = te.to_d
739
740
 
@@ -747,7 +748,7 @@ module Finrb
747
748
  # @export
748
749
  # @examples
749
750
  # mmy2hpr(mmy=0.04898,t=150)
750
- def self.mmy2hpr(mmy, t)
751
+ def self.mmy2hpr(mmy:, t:)
751
752
  mmy = mmy.to_d
752
753
  t = t.to_d
753
754
 
@@ -766,7 +767,7 @@ module Finrb
766
767
  # Finrb::Utils.n_period(0.1,-10000,60000000,-50000,0)
767
768
  #
768
769
  # Finrb::Utils.n_period(r=0.1,pv=-10000,fv=60000000,pmt=-50000,type=1)
769
- def self.n_period(r, pv, fv, pmt, type = 0)
770
+ def self.n_period(r:, pv:, fv:, pmt:, type: 0)
770
771
  r = r.to_d
771
772
  pv = pv.to_d
772
773
  fv = fv.to_d
@@ -788,7 +789,7 @@ module Finrb
788
789
  # @export
789
790
  # @examples
790
791
  # npm(ni=8000,rv=20000)
791
- def self.npm(ni, rv)
792
+ def self.npm(ni:, rv:)
792
793
  ni = ni.to_d
793
794
  rv = rv.to_d
794
795
 
@@ -801,8 +802,8 @@ module Finrb
801
802
  # @param cf cash flow,the first cash flow is the initial outlay
802
803
  # @export
803
804
  # @examples
804
- # npv(r=0.12, cf=c(-5, 1.6, 2.4, 2.8))
805
- def self.npv(r, cf)
805
+ # npv(r=0.12, cf=[-5, 1.6, 2.4, 2.8])
806
+ def self.npv(r:, cf:)
806
807
  r = r.to_d
807
808
  cf = Array.wrap(cf).map(&:to_d)
808
809
 
@@ -825,7 +826,7 @@ module Finrb
825
826
  # pmt(r=0.08,n=10,pv=-1000,fv=0)
826
827
  #
827
828
  # pmt(0.08,10,-1000,10,1)
828
- def self.pmt(r, n, pv, fv, type = 0)
829
+ def self.pmt(r:, n:, pv:, fv:, type: 0)
829
830
  r = r.to_d
830
831
  n = n.to_d
831
832
  pv = pv.to_d
@@ -852,7 +853,7 @@ module Finrb
852
853
  # pv(0.07,10,1000,10)
853
854
  #
854
855
  # pv(r=0.05,n=20,fv=1000,pmt=10,type=1)
855
- def self.pv(r, n, fv = 0, pmt = 0, type = 0)
856
+ def self.pv(r:, n:, fv: 0, pmt: 0, type: 0)
856
857
  r = r.to_d
857
858
  n = n.to_d
858
859
  fv = fv.to_d
@@ -878,7 +879,7 @@ module Finrb
878
879
  # Finrb::Utils.pv_annuity(0.03,12,1000)
879
880
  #
880
881
  # Finrb::Utils.pv_annuity(r=0.0425,n=3,pmt=30000)
881
- def self.pv_annuity(r, n, pmt, type = 0)
882
+ def self.pv_annuity(r:, n:, pmt:, type: 0)
882
883
  r = r.to_d
883
884
  n = n.to_d
884
885
  pmt = pmt.to_d
@@ -905,7 +906,7 @@ module Finrb
905
906
  # Finrb::Utils.pv_perpetuity(r=0.1,pmt=1000,type=1)
906
907
  #
907
908
  # Finrb::Utils.pv_perpetuity(r=0.1,pmt=1000)
908
- def self.pv_perpetuity(r, pmt, g = 0, type = 0)
909
+ def self.pv_perpetuity(r:, pmt:, g: 0, type: 0)
909
910
  r = r.to_d
910
911
  pmt = pmt.to_d
911
912
  g = g.to_d
@@ -931,7 +932,7 @@ module Finrb
931
932
  # Finrb::Utils.pv_simple(0.07,10,100)
932
933
  #
933
934
  # Finrb::Utils.pv_simple(r=0.03,n=3,fv=1000)
934
- def self.pv_simple(r, n, fv)
935
+ def self.pv_simple(r:, n:, fv:)
935
936
  r = r.to_d
936
937
  n = n.to_d
937
938
  fv = fv.to_d
@@ -945,8 +946,8 @@ module Finrb
945
946
  # @param cf uneven cash flow
946
947
  # @export
947
948
  # @examples
948
- # Finrb::Utils.pv_uneven(r=0.1, cf=c(-1000, -500, 0, 4000, 3500, 2000))
949
- def self.pv_uneven(r, cf)
949
+ # Finrb::Utils.pv_uneven(r=0.1, cf=[-1000, -500, 0, 4000, 3500, 2000])
950
+ def self.pv_uneven(r:, cf:)
950
951
  r = r.to_d
951
952
  cf = Array.wrap(cf).map(&:to_d)
952
953
 
@@ -967,7 +968,7 @@ module Finrb
967
968
  # @export
968
969
  # @examples
969
970
  # Finrb::Utils.quick_ratio(cash=3000,ms=2000,rc=1000,cl=2000)
970
- def self.quick_ratio(cash, ms, rc, cl)
971
+ def self.quick_ratio(cash:, ms:, rc:, cl:)
971
972
  cash = cash.to_d
972
973
  ms = ms.to_d
973
974
  rc = rc.to_d
@@ -983,7 +984,7 @@ module Finrb
983
984
  # @export
984
985
  # @examples
985
986
  # Finrb::Utils.r_continuous(r=0.03,m=4)
986
- def self.r_continuous(r, m)
987
+ def self.r_continuous(r:, m:)
987
988
  r = r.to_d
988
989
  m = m.to_d
989
990
 
@@ -999,7 +1000,7 @@ module Finrb
999
1000
  # Finrb::Utils.r_norminal(0.03,1)
1000
1001
  #
1001
1002
  # Finrb::Utils.r_norminal(rc=0.03,m=4)
1002
- def self.r_norminal(rc, m)
1003
+ def self.r_norminal(rc:, m:)
1003
1004
  rc = rc.to_d
1004
1005
  m = m.to_d
1005
1006
 
@@ -1013,7 +1014,7 @@ module Finrb
1013
1014
  # @export
1014
1015
  # @examples
1015
1016
  # Finrb::Utils.r_perpetuity(pmt=4.5,pv=-75)
1016
- def self.r_perpetuity(pmt, pv)
1017
+ def self.r_perpetuity(pmt:, pv:)
1017
1018
  pmt = pmt.to_d
1018
1019
  pv = pv.to_d
1019
1020
 
@@ -1027,7 +1028,7 @@ module Finrb
1027
1028
  # @export
1028
1029
  # @examples
1029
1030
  # Finrb::Utils.sampling_error(sm=0.45, mu=0.5)
1030
- def self.sampling_error(sm, mu)
1031
+ def self.sampling_error(sm:, mu:)
1031
1032
  sm = sm.to_d
1032
1033
  mu = mu.to_d
1033
1034
 
@@ -1042,7 +1043,7 @@ module Finrb
1042
1043
  # @export
1043
1044
  # @examples
1044
1045
  # Finrb::Utils.sf_ratio(rp=0.09,rl=0.03,sd=0.12)
1045
- def self.sf_ratio(rp, rl, sd)
1046
+ def self.sf_ratio(rp:, rl:, sd:)
1046
1047
  rp = rp.to_d
1047
1048
  rl = rl.to_d
1048
1049
  sd = sd.to_d
@@ -1058,7 +1059,7 @@ module Finrb
1058
1059
  # @export
1059
1060
  # @examples
1060
1061
  # Finrb::Utils.sharpe_ratio(rp=0.038,rf=0.015,sd=0.07)
1061
- def self.sharpe_ratio(rp, rf, sd)
1062
+ def self.sharpe_ratio(rp:, rf:, sd:)
1062
1063
  rp = rp.to_d
1063
1064
  rf = rf.to_d
1064
1065
  sd = sd.to_d
@@ -1074,7 +1075,7 @@ module Finrb
1074
1075
  # @export
1075
1076
  # @examples
1076
1077
  # slde(cost=1200,rv=200,t=5)
1077
- def self.slde(cost, rv, t)
1078
+ def self.slde(cost:, rv:, t:)
1078
1079
  cost = cost.to_d
1079
1080
  rv = rv.to_d
1080
1081
  t = t.to_d
@@ -1089,7 +1090,7 @@ module Finrb
1089
1090
  # @export
1090
1091
  # @examples
1091
1092
  # Finrb::Utils.total_d2e(td=6000,te=20000)
1092
- def self.total_d2e(td, te)
1093
+ def self.total_d2e(td:, te:)
1093
1094
  td = td.to_d
1094
1095
  te = te.to_d
1095
1096
 
@@ -1103,8 +1104,8 @@ module Finrb
1103
1104
  # @param cfr ordered cash flow received list
1104
1105
  # @export
1105
1106
  # @examples
1106
- # twrr(ev=c(120,260),bv=c(100,240),cfr=c(2,4))
1107
- def self.twrr(ev, bv, cfr)
1107
+ # twrr(ev=[120,260],bv=[100,240],cfr=[2,4])
1108
+ def self.twrr(ev:, bv:, cfr:)
1108
1109
  ev = Array.wrap(ev).map(&:to_d)
1109
1110
  bv = Array.wrap(bv).map(&:to_d)
1110
1111
  cfr = Array.wrap(cfr).map(&:to_d)
@@ -1129,10 +1130,10 @@ module Finrb
1129
1130
  # @param nm n x 1 vector vector of number of months relate to ns
1130
1131
  # @export
1131
1132
  # @examples
1132
- # s=c(10000,2000);m=c(12,6);was(ns=s,nm=m)
1133
+ # s=[10000,2000];m=[12,6];was(ns=s,nm=m)
1133
1134
  #
1134
- # s=c(11000,4400,-3000);m=c(12,9,4);was(ns=s,nm=m)
1135
- def self.was(ns, nm)
1135
+ # s=[11000,4400,-3000];m=[12,9,4];was(ns=s,nm=m)
1136
+ def self.was(ns:, nm:)
1136
1137
  ns = Array.wrap(ns).map(&:to_d)
1137
1138
  nm = Array.wrap(nm).map(&:to_d)
1138
1139
 
@@ -1156,8 +1157,8 @@ module Finrb
1156
1157
  # @param w corresponding weights associated with each of the individual assets
1157
1158
  # @export
1158
1159
  # @examples
1159
- # wpr(r=c(0.12, 0.07, 0.03),w=c(0.5,0.4,0.1))
1160
- def self.wpr(r, w)
1160
+ # wpr(r=[0.12, 0.07, 0.03],w=[0.5,0.4,0.1])
1161
+ def self.wpr(r:, w:)
1161
1162
  r = Array.wrap(r).map(&:to_d)
1162
1163
  w = Array.wrap(w).map(&:to_d)
1163
1164
 
data/lib/finrb.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/configurable'
4
- require 'finrb/config'
5
- require 'finrb/decimal'
6
- require 'finrb/cashflows'
7
- require 'finrb/utils'
3
+ require "active_support/configurable"
4
+ require "finrb/config"
5
+ require "finrb/decimal"
6
+ require "finrb/cashflows"
7
+ require "finrb/utils"
8
8
 
9
9
  class FinrbError < StandardError; end
10
10
 
@@ -16,8 +16,8 @@ class FinrbError < StandardError; end
16
16
  # * *principal* represents the outstanding balance of a loan or annuity.
17
17
  # * *rate* represents the interest rate _per period_.
18
18
  module Finrb
19
- autoload :Amortization, 'finrb/amortization'
20
- autoload :Rate, 'finrb/rates'
21
- autoload :Transaction, 'finrb/transaction'
22
- autoload :Utils, 'finrb/utils'
19
+ autoload :Amortization, "finrb/amortization"
20
+ autoload :Rate, "finrb/rates"
21
+ autoload :Transaction, "finrb/transaction"
22
+ autoload :Utils, "finrb/utils"
23
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nadir Cohen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-08-05 00:00:00.000000000 Z
13
+ date: 2022-08-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -138,6 +138,20 @@ dependencies:
138
138
  - - ">="
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: rubocop-packaging
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
141
155
  - !ruby/object:Gem::Dependency
142
156
  name: rubocop-rake
143
157
  requirement: !ruby/object:Gem::Requirement
@@ -180,66 +194,9 @@ dependencies:
180
194
  - - ">="
181
195
  - !ruby/object:Gem::Version
182
196
  version: '0'
183
- description: |+
184
- The finrb library (forked from the finance gem) provides a Ruby interface for financial calculations/modeling.
185
-
186
- - Working with interest rates
187
- - Mortgage amortization
188
- - Cashflows (NPV, IRR, etc.)
189
- - Computing bank discount yield (BDY) for a T-bill
190
- - Computing money market yield (MMY) for a T-bill
191
- - Cash ratio - Liquidity ratios measure the firm's ability to satisfy its short-term obligations as they come due.
192
- - Computing Coefficient of variation
193
- - Cost of goods sold and ending inventory under three methods (FIFO,LIFO,Weighted average)
194
- - Current ratio - Liquidity ratios measure the firm's ability to satisfy its short-term obligations as they come due.
195
- - Depreciation Expense Recognition - double-declining balance (DDB), the most common declining balance method, which applies two times the straight-line rate to the declining balance.
196
- - Debt ratio - Solvency ratios measure the firm's ability to satisfy its long-term obligations.
197
- - Diluted Earnings Per Share
198
- - Computing the rate of return for each period
199
- - Convert stated annual rate to the effective annual rate
200
- - Convert stated annual rate to the effective annual rate with continuous compounding
201
- - Bond-equivalent yield (BEY), 2 x the semiannual discount rate
202
- - Computing HPR, the holding period return
203
- - Equivalent/proportional Interest Rates
204
- - Basic Earnings Per Share
205
- - Financial leverage - Solvency ratios measure the firm's ability to satisfy its long-term obligations.
206
- - Estimate future value (fv)
207
- - Estimate future value of an annuity
208
- - Estimate future value (fv) of a single sum
209
- - Computing the future value of an uneven cash flow series
210
- - Geometric mean return
211
- - Gross profit margin - Evaluate a company's financial performance
212
- - Harmonic mean, average price
213
- - Computing HPR, the holding period return
214
- - Bond-equivalent yield (BEY), 2 x the semiannual discount rate
215
- - Convert holding period return to the effective annual rate
216
- - Computing money market yield (MMY) for a T-bill
217
- - Computing IRR, the internal rate of return
218
- - Calculate the net increase in common shares from the potential exercise of stock options or warrants
219
- - Long-term debt-to-equity - Solvency ratios measure the firm's ability to satisfy its long-term obligations.
220
- - Computing HPR, the holding period return
221
- - Estimate the number of periods
222
- - Net profit margin - Evaluate a company's financial performance
223
- - Computing NPV, the PV of the cash flows less the initial (time = 0) outlay
224
- - Estimate period payment
225
- - Estimate present value (pv)
226
- - Estimate present value (pv) of an annuity
227
- - Estimate present value of a perpetuity
228
- - Estimate present value (pv) of a single sum
229
- - Computing the present value of an uneven cash flow series
230
- - Quick ratio - Liquidity ratios measure the firm's ability to satisfy its short-term obligations as they come due.
231
- - Convert a given norminal rate to a continuous compounded rate
232
- - Convert a given continuous compounded rate to a norminal rate
233
- - Rate of return for a perpetuity
234
- - Computing Sampling error
235
- - Computing Roy's safety-first ratio
236
- - Computing Sharpe Ratio
237
- - Depreciation Expense Recognition - Straight-line depreciation (SL) allocates an equal amount of depreciation each year over the asset's useful life
238
- - Total debt-to-equity - Solvency ratios measure the firm's ability to satisfy its long-term obligations.
239
- - Computing TWRR, the time-weighted rate of return
240
- - Calculate weighted average shares - weighted average number of common shares
241
- - Weighted mean as a portfolio return
242
-
197
+ description: "The finrb library (forked from the finance gem) provides a Ruby interface
198
+ for financial calculations/modeling. Working with interest rates, Mortgage amortization,
199
+ Cashflows (NPV, IRR, etc.) and other basic utilities.\n\n"
243
200
  email:
244
201
  - nadircs11@gmail.com
245
202
  - me@martinbjeldbak.com
@@ -254,11 +211,16 @@ extra_rdoc_files:
254
211
  files:
255
212
  - ".dockerignore"
256
213
  - ".gitattributes"
214
+ - ".github/dependabot.yml"
215
+ - ".github/issue_template.md"
216
+ - ".github/pull_request_template.md"
217
+ - ".github/workflows/ci.yml"
218
+ - ".github/workflows/codeql.yml"
219
+ - ".github/workflows/rubocop.yml"
257
220
  - ".gitignore"
258
221
  - ".rubocop.yml"
259
222
  - ".ruby-version"
260
223
  - ".semver"
261
- - ".travis.yml"
262
224
  - ".yardopts"
263
225
  - CHANGELOG.md
264
226
  - COPYING