2009-07-08 18 views
5

Được rồi, tôi hy vọng đây không phải là một câu hỏi quá rộng nhưng sự tò mò của tôi trở nên tốt hơn cho tôi. Tôi đang làm việc cho một công ty bảo hiểm lớn. Chúng tôi đang xây dựng các bảng tính excel xử lý việc chiếu giá trị tiền mặt trong tương lai cho các chính sách bảo hiểm nhân thọ. Đây là những sách bài tập khá lớn (40-50mb) với một tấn tờ và cột phải tính toán số lượng biến số asinine để dự đoán chính xác giá trị tiền mặt.Làm thế nào để thiết kế một chương trình để thực hiện các tính toán tài chính phức tạp với .NET

Cách này sẽ được tạo như một ứng dụng dành cho máy tính để bàn hoặc doanh nghiệp? Tôi biết. Net khá tốt cho người mới bắt đầu nhưng tôi đang gặp khó khăn khi suy nghĩ bên ngoài suy nghĩ của bảng tính và cách bạn có thể áp dụng .net cho một cái gì đó như thế này. Làm thế nào bạn sẽ theo dõi một tính toán trong mã, mà phải mất 3 hoặc 4 trang với 60 cột tại 1300 hàng mỗi trong một bảng tính? Cũng như thay đổi lãi suất, lệ phí và những thứ khác có ảnh hưởng đến chính sách, dựa trên các yếu tố đầu vào như tuổi tác, giới tính, người hút thuốc/không hút thuốc, v.v ...

Trả lời

4

Tôi sẽ đặt cược công ty của bạn đang thực hiện> 1 tỷ đô la mỗi năm, tất cả đều dựa trên bảng tính Excel. Bạn không đơn độc trong đó.

Tôi bắt đầu bằng cách suy nghĩ về vấn đề thay vì bảng tính Excel. Vấn đề kinh doanh là gì? Bạn có thể mô hình hóa nó với các đối tượng không? Tôi thấy một vài đối tượng: Chính sách, với tất cả các trẻ em thuộc diện Bảo hiểm và Lớp học; Được bảo hiểm, với các đặc điểm như giới tính, người hút thuốc, v.v. - bạn có ý tưởng.

Chiếu âm thanh như bạn sẽ có một số ít các biến "what if" sẽ có một số thuộc tính thống kê mà bạn sẽ thay đổi. Công việc của bạn sẽ là chạy rất nhiều Monte Carlo như mô phỏng làm thay đổi các biến bằng cách vẽ từ một mẫu và tính toán đầu ra. Kết quả của bạn sẽ là giá trị trung bình dự kiến ​​với độ lệch chuẩn và mức độ tin cậy.

Có thể là một ứng cử viên tốt cho tính toán song song lớn.

Cơ sở để tính toán là gì? Bất kỳ mô hình nổi tiếng nào mà bạn có thể chia sẻ? Có lẽ điều đó sẽ gợi ý.

+0

Khá gần với cách bạn mô tả. Có 3 tờ một với tỷ lệ ước tính thực tế, một với tỷ lệ được đảm bảo thường cao hơn một chút, và sau đó là mức giá thứ ba trung bình chúng. Các tờ khác phải liên quan đến các khoản vay và tuân thủ mã số thuế. – Dcritelli

0

Bạn sẽ phải chia nhỏ một thứ tại một thời gian và bắt đầu với thiết kế cơ sở dữ liệu. Hãy suy nghĩ về các bảng bên dưới. Bạn có thể đi qua từng tờ trong excel và suy nghĩ về những gì nó sẽ như thế nào nếu bạn lấy thông tin có liên quan và đặt nó vào một bảng cơ sở dữ liệu.

Chế độ xem cơ sở dữ liệu sẽ tuyệt vời để thực hiện toán cơ bản vì nó có thể thực hiện các phép tính dựa trên nhiều bảng và hiển thị kết quả ở định dạng đẹp.

0

Dưới đây là cách tiếp cận tôi muốn thực hiện:

  • Lưu trữ dữ liệu của bạn (những thứ trong 3-4 trang với 60 cột/1.300 dòng) trong một DB hoặc lưu trữ dữ liệu khác.
  • Do các tính toán bằng cách sử dụng chức năng DB (chọn sum (foo) từ blah;), bảng tạm thời, trong bộ nhớ mảng, bất cứ điều gì
  • Lưu tính toán trong lưu trữ dữ liệu (cho sau này dễ dàng hơn hồi và kiểm toán)
2

Đây thực sự là một câu hỏi đơn giản ... với câu trả lời phức tạp.

Bạn đang hỏi: Tôi có thể lập kế hoạch cho một dự án phần mềm phức tạp như thế nào?

biết môi trường của bạn (mà bạn âm thanh như bạn làm):

biết công nghệ phần mềm:

Biết ngôn ngữ/môi trường phát triển của bạn:


  1. Bước đầu tiên là tìm hiểu cách bạn làm việc như một nhà phát triển.
  2. Lập kế hoạch các bước bạn sẽ hoặc có thể thực hiện.
  3. Đơn giản hóa mọi thứ với MINIMUM.
  4. Xem lại danh sách những việc cần làm của bạn.
  5. Giả lập.
  6. Thực hiện.

Nếu bạn đang lo lắng về việc bắt đầu, sau đó tôi sẽ tạo ra một nguyên mẫu chức năng đơn giản. Bắt đầu với hình dung dự án trong một cái gì đó như Balsamiq Mockups, để bạn có thể xem mỗi phần của câu đố sẽ đến với nhau như thế nào.

Nếu bạn dành một vài ngày nghiên cứu các phương pháp kỹ thuật phần mềm, bạn sẽ tiết kiệm được hàng giờ đồng hồ đau đầu. Bắt đầu với các thực hành tốt dành cho chúng tôi từ những người đam mê alpha đã thực hiện những gì bạn đang cố gắng làm.

3

Cũng đảm bảo không sử dụng phao hoặc tăng gấp đôi cho các tính toán liên quan đến tiền. Sử dụng thập phân.

0

Hãy xem xét một chút rằng các bảng tính, vì nhiều thứ đang hoạt động ở mức trừu tượng cao hơn mã C#.

Vì vậy, để reimplement bảng tính của bạn trong Net bạn có một vài phương pháp tiếp cận rộng giải pháp ad-hoc

  1. Tuỳ chỉnh với rất nhiều tính năng cụ thể hẹp xung quanh vấn đề miền
  2. của bạn Hoặc bạn bạn có thể reimplement các khái niệm về một bảng tính. Tách công cụ tính toán để đánh giá ma trận biểu thức với các phụ thuộc tùy chọn giữa các ô từ độ bền và giá trị của các giá trị maxtrix. Lưu trữ dữ liệu trong kho dữ liệu mà bạn thích (xml, relationalDB), tạo một ứng dụng web/máy tính để bàn để chỉnh sửa và đọc kết quả và đánh giá nó bằng cách sử dụng công cụ tùy chỉnh.
+0

Ban đầu, chúng tôi đã nói về việc thực hiện điều gì đó tương tự như tùy chọn 2 của bạn nhưng vì lý do nào đó, họ quyết định xóa ý tưởng đó để ủng hộ các bảng tính đơn giản. Là người đàn ông thấp tôi không nói, vì vậy chúng tôi đang xây dựng 150 bảng tính để thực hiện các phép tính giống hệt nhau với những khác biệt nhỏ. Sau khi sao chép và dán trong vài giờ nó đã cho tôi suy nghĩ (ngày mơ) của các khả năng khác. – Dcritelli

+0

Họ nói lười biếng là một dấu hiệu của một coder tốt ... Trong thực tế nó không phải là lười biếng rất nhiều như một niềm tin cứng đầu rằng có một cách tốt hơn để làm việc. Máy tính là các máy được thiết kế để xử lý các tác vụ dữ liệu lặp đi lặp lại - bạn chỉ cần tìm hiểu cách sử dụng chúng. Chúc may mắn. – steamer25

0

Để thêm một số chi tiết cụ thể:

  • giá trị di động trở thành các biến hoặc các mục trong một cơ sở dữ liệu. Ví dụ, thay vì công thức cho B1 phúc = A1 + 2 (trong đó A1 chứa số lượng các widget cho một chính sách nhất định), bạn có:

    var widgets = (from policy in db.Policies select new {policy.widgets}).First().widgets;
    var moreWidgets = widgets + 2;

  • Chức năng và Macros được được chuyển - ví dụ, Vòng (B1, 0) trở thành Math.Round (moreWidgets, 0, MidpointRounding.AwayFromZero)

  • Dữ liệu và chức năng liên quan được nhóm vào các lớp và đối tượng đối tượng.
  • Trang tính trở thành bảng cơ sở dữ liệu cho trang lưu trữ và tab/hộp thoại/trang web, v.v. cho giao diện người dùng.
  • Bạn có thể thực hiện các hình thức cho dữ liệu đó vào/xem xét cùng một lúc:

Tên: [________________]
Họ: [________________]
SSN: [________________]

Lợi ích khi thực hiện tất cả điều này (giả sử nó được thực hiện tốt) là:

  • Cải thiện tổ chức để chức năng có thể được tìm thấy dễ dàng hơn để tái sử dụng/tăng cường.
  • Hiệu suất được cải thiện
  • Được chia sẻ, truy cập thời gian thực vào dữ liệu bao gồm dữ liệu tổng hợp hiện được trải rộng trên nhiều tệp.
  • Toàn bộ thế giới chức năng mới - có thể bạn muốn thêm tổng hợp giọng nói hoặc những gì bạn có.
+0

Tôi cho rằng cơ sở dữ liệu phải rõ ràng và nó đã vượt qua tâm trí của tôi. Tôi có xu hướng nghĩ về cơ sở dữ liệu như xô chứ không phải là các công cụ phức tạp mặc dù.Tôi có rất nhiều nghiên cứu để làm điều đó. – Dcritelli

+0

Cơ sở dữ liệu rất tốt trong việc kết hợp, nhóm và sắp xếp dữ liệu. Trong .NET 3, Microsoft đã thêm vào Language Query (LINQ) cho phép bạn thực hiện các nhiệm vụ kiểu cơ sở dữ liệu trong mã nơi mà việc xử lý phức tạp thực sự cần được thực hiện. – steamer25

1

sẽ cho phép bạn sử dụng các mô hình Excel trực tiếp trong ứng dụng .NET của mình mà không cần Excel và không tốn nhiều thời gian chuyển đổi sang C# hoặc VB mỗi lần doanh nghiệp muốn cập nhật mô hình.

Bạn có thể tải xuống bản dùng thử miễn phí here nếu bạn muốn dùng thử.

Tuyên bố từ chối trách nhiệm: Tôi sở hữu SpreadsheetGear LLC

+0

+1 .Để hoàn thành một số khác cần xem xét là KDCalc. Tuyên bố từ chối trách nhiệm: Tôi không làm việc cho Bảng tính hoặc Kiến thức Dynamics (KDCalc). – RichardOD

+0

Cái nào tốt hơn? KDCalc hoặc SpreadsheetGear? – Dan

Các vấn đề liên quan